R draw (abline + lm) линия наилучшего соответствия через произвольную точку - программирование
Подтвердить что ты не робот

R draw (abline + lm) линия наилучшего соответствия через произвольную точку

Я пытаюсь провести линию регрессии наименьших квадратов, используя abline(lm(...)), которая также вынуждена проходить через определенную точку. Я вижу этот вопрос, но не совсем то, что я хочу. Вот пример:

test <- structure(list(x = c(0, 9, 27, 40, 52, 59, 76), y = c(50, 68, 
79, 186, 175, 271, 281)), .Names = c("x", "y"))

# set up an example plot
plot(test,pch=19,ylim=c(0,300),
     panel.first=abline(h=c(0,50),v=c(0,10),lty=3,col="gray"))

# standard line of best fit - black line
abline(lm(y ~ x, data=test))

# force through [0,0] - blue line
abline(lm(y ~ x + 0, data=test), col="blue")

Это выглядит так:

enter image description here

Теперь, как мне заставить форсировать строку через отмеченную произвольную точку (x=10,y=50), а также минимизировать расстояние до других точек?

# force through [10,50] - red line
??
4b9b3361

Ответ 1

Грубое решение состояло бы в том, чтобы сдвинуть начало координат вашей модели на эту точку и создать модель без перехвата

nmod <- (lm(I(y-50)~I(x-10) +0, test))

abline(predict(nmod, newdata = list(x=0))+50, coef(nmod), col='red')

enter image description here

Ответ 2

Вы можете изменить формулу для lm() и смещать данные:

p=10
q=50

abline(lm(I(y-q) ~ I(x-p) + 0, data=test), col="red")