إسقاط خطوط من النقاط الفعلية إلى النمذجة في ص

StackOverflow https://stackoverflow.com/questions/3737165

  •  03-10-2019
  •  | 
  •  

سؤال

فى البارحه كنت عملت مثالا على الفرق بين تحليل المربعات الصغرى العادية (OLS) مقابل تحليل المكونات الرئيسية (PCA). لهذا الرسم التوضيحي ، أردت أن أظهر للأخطاء التي تم تقليلها بواسطة OLS و PCA ، لذا قمت برسم الخط الفعلي ، والخط المتوقع ، ثم قمت يدويًا (مع GIMP) في خط إسقاط لتوضيح اثنين من مصطلحات الخطأ. كيف يمكنني ترميز إنشاء خطوط الخطأ في R؟ إليك الرمز الذي استخدمته في المثال الخاص بي:

set.seed(2)
x <- 1:100

y <- 20 + 3 * x
e <- rnorm(100, 0, 60)
y <- 20 + 3 * x + e

plot(x,y)
yx.lm <- lm(y ~ x)
lines(x, predict(yx.lm), col="red")

ثم أضفت الخطوط الصفراء يدويًا لإنتاج ما يلي:

alt text

هل كانت مفيدة؟

المحلول

?segments

سأقدم مثالاً ، لكنني مشغول جدًا اليوم وليس معقدًا اختيار النقاط. ؛-)

حسنًا ، لذلك أنا لست كذلك الذي - التي مشغول...

n=58; segments(x[n],y[n],x[n],predict(yx.lm)[n])
n=65; segments(x[n],y[n],x[n],predict(yx.lm)[n])

نصائح أخرى

كما ذكر جوشوا ، segments() هو الطريق للذهاب هنا. وكما هو متجه تمامًا ، يمكننا إضافة جميع الأخطاء في وقت واحد ، متابعة من مثالك

set.seed(2)
x <- 1:100

y <- 20 + 3 * x
e <- rnorm(100, 0, 60)
y <- 20 + 3 * x + e

plot(x,y)
yx.lm <- lm(y ~ x)
lines(x, predict(yx.lm), col="red")
## Add segments
segments(x, y, x, fitted(yx.lm), col = "blue")

إذا كنت تريد فقط تسليط الضوء

n <- c(58,65)
segments(x[n], y[n], x[n], fitted(yx.lm)[n], col = "orange", lwd = 3)

HTH

ز

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top