линейна регресия с помощта на lm() - изненадан от резултата

Използвах линейна регресия на данните, които имам, като използвах функцията lm. Всичко работи (няма съобщение за грешка), но някак си съм изненадан от резултата: имам впечатлението, че R „пропуска“ група от точки, т.е. пресечната точка и наклонът не пасват най-добре. Например имам предвид групата точки с координати x=15-25,y=0-20.

Моите въпроси:

  • има ли функция за сравняване на съответствие с "очаквани" коефициенти и "lm-изчислени" коефициенти?
  • Направих ли глупава грешка при кодирането, карайки lm да направи това?

Следват някои отговори: допълнителна информация за x и y

x и y са визуални оценки на симптомите на заболяването. И при двамата има еднаква несигурност. Графика с данни, с линейна регресия и abline на очакваните резултати

Данните и кодът са тук:

x1=c(24.0,23.9,23.6,21.6,21.0,20.8,22.4,22.6,
     21.6,21.2,19.0,19.4,21.1,21.5,21.5,20.1,20.1,
     20.1,17.2,18.6,21.5,18.2,23.2,20.4,19.2,22.4,
     18.8,17.9,19.1,17.9,19.6,18.1,17.6,17.4,17.5,
     17.5,25.2,24.4,25.6,24.3,24.6,24.3,29.4,29.4,
     29.1,28.5,27.2,27.9,31.5,31.5,31.5,27.8,31.2,
     27.4,28.8,27.9,27.6,26.9,28.0,28.0,33.0,32.0,
     34.2,34.0,32.6,30.8)

y1=c(100.0,95.5,93.5,100.0,98.5,99.5,34.8,
     45.8,47.5,17.4,42.6,63.0,6.9,12.1,30.5,
     10.5,14.3,41.1, 2.2,20.0,9.8,3.5,0.5,3.5,5.7,
     3.1,19.2,6.4, 1.2, 4.5, 5.7, 3.1,19.2, 6.4,
     1.2,4.5,81.5,70.5,91.5,75.0,59.5,73.3,66.5,
     47.0,60.5,47.5,33.0,62.5,87.0,86.0,77.0,
     86.0,83.0,78.5,83.0,83.5,73.0,69.5,82.5,78.5,
     84.0,93.5,83.5,96.5,96.0,97.5)   



## x11()
plot(x1,y1,xlim=c(0,35),ylim=c(0,100))

# linear regression
reg_lin=lm(y1 ~ x1)
abline(reg_lin,lty="solid", col="royalblue")
text(12.5,25,labels="R result",col="royalblue", cex=0.85)
text(12.5,20,labels=bquote(y== .(5.26)*x - .(76)),col="royalblue", cex=0.85)

# result I would have imagined
abline(a=-150,b=8,lty="dashed", col="red")
text(27.5,25,labels="What I think is better",col="red", cex=0.85)
text(27.5,20,labels=bquote(y== .(8)*x - .(150)),col="red", cex=0.85)

person NOTM    schedule 06.08.2015    source източник
comment
Просто изчислете сумата на квадратите на остатъците с вашето предполагаемо най-добро съответствие и това, получено от lm.   -  person MichaelChirico    schedule 06.08.2015
comment
Как можеш да кажеш, че пресечната точка и наклонът не пасват най-добре? и ако не са, по кой модел са така, линеен, льосов, обобщен и т.н. и т.н.?   -  person SabDeM    schedule 06.08.2015
comment
Благодаря за отговорите. @SabDeM: Имам предвид линеен модел. Не съм сигурен, че пресечната точка и наклонът не пасват най-добре, но съм изненадан, че линията на регресия не минава между точките (особено изглежда, че липсва групата точки в долната част на графики). Но това е само впечатление, разбира се. @MichaelChirico: има ли някаква функция за това?   -  person NOTM    schedule 06.08.2015
comment
вашата червена линия изглежда, че може да е това, което бихте получили от общия брой най-малки квадрати (минимизиране на разстоянието в двете посоки)   -  person Rorschach    schedule 06.08.2015
comment
@nongkrong Мисля, че това, което имате предвид, е пълно абсолютно отклонение, което е различно. виж отговора ми.   -  person MichaelChirico    schedule 06.08.2015
comment
@MichaelChirico не, имах предвид общите най-малки квадрати, известен още като ортогонална регресия. подобно обаче   -  person Rorschach    schedule 06.08.2015
comment
@nongkrong интересно, никога не съм чувал за него.   -  person MichaelChirico    schedule 06.08.2015
comment
@nongkrong за справка, бих го изразил като минимизиране на ортогоналното разстояние от прогнозата, както е красиво илюстрирано тук   -  person MichaelChirico    schedule 06.08.2015
comment
Относно това, което смятате за по-добро: осъзнайте, нашите мозъци са мощни визуализатори. Това, което изглежда по-добре, вероятно е линията, където всички точки са по-близо по x & y. Най-малките квадрати разглеждат само грешки в y. Ако искате да вземете предвид грешката и в двете измерения, може би погледнете Общи най-малки квадрати или нещо подобно подобен.   -  person Mike Williamson    schedule 06.08.2015
comment
страхотен въпрос, добри отговори (може би малко по-добри за CrossValidated ...)   -  person Ben Bolker    schedule 06.08.2015


Отговори (2)


Опитайте тази:

reg_lin_int <- reg_lin$coefficients[1]
reg_lin_slp <- reg_lin$coefficients[2]

sum((y1 - (reg_lin_int + reg_lin_slp*x1)) ^ 2)
# [1] 39486.33
sum((y1 - (-150 + 8 * x1)) ^ 2)
# [1] 55583.18

Сумата на квадратите на остатъците е по-ниска под линията на lm fit. Това може да се очаква, тъй като reg_lin_int и reg_lin_slp са гарантирани, че произвеждат минималната обща грешка на квадрат.

Интуитивно знаем, че оценителите под функциите на квадратни загуби са чувствителни към отклонения. „Липсва“ групата в долната част, защото се доближава до групата в горния ляв ъгъл, която е много по-далеч – и квадратното разстояние придава на тези точки по-голяма тежест.

Всъщност, ако използваме регресия на най-малко абсолютни отклонения (т.е. зададете функция за абсолютна загуба вместо квадрат), резултатът е много по-близо до вашето предположение:

library(quantreg)
lad_reg <- rq(y1 ~ x1)

момче

(Професионален съвет: използвайте lwd, за да направите графиките си много по-четими)

Това, което се доближава още повече до това, което сте имали предвид, е Общо най-малки квадрати, както е споменато от @nongkrong и @MikeWilliamson. Ето резултата от TLS на вашата проба:

v <- prcomp(cbind(x1, y1))$rotation
bbeta <- v[-ncol(v), ncol(v)] / v[1, 1]
inter <- mean(y1) - bbeta * mean(x1)

tls

person MichaelChirico    schedule 06.08.2015
comment
Добре тогава, кодът е толкова прост. Благодаря много. Честно казано, доста съм озадачен: как може сумата от квадрати да бъде минимизирана, когато на регресионната линия липсва група от точки (отново групата в дъното)? Наказанието (от гледна точка на сбор от квадрати) би трябвало да е трудно за компенсиране. - person NOTM; 06.08.2015
comment
@NOTM вижте актуализацията. Става въпрос за функцията на загуба, която вашата интуиция е избрала. - person MichaelChirico; 06.08.2015
comment
Добре, благодаря отново! Четях страници за Общ брой най-малки квадрати и въвеждах код, за да покажа резултатите от OLS, LAD и TLS на една и съща графика. Изглежда, че си го направил по-бързо. Благодаря отново. - person NOTM; 06.08.2015
comment
@NOTM Имайте предвид: 2^2 - 1^2 = 3, но 50^2 - 49^2 = 99. Така че, когато използвате най-малки квадрати, често е полезно да се опитате да направите линията по-близка до извънредните стойности, за да намалите огромна разлика между прогнозата и наблюдаваната стойност с малко, тъй като това ще намали грешката на квадрат с много повече, отколкото да се опитвате да напаснете линията още по-близо до точките, които вече пасват добре. Така че вижте какво прави вашата версия на най-доброто прилягане (от гледна точка на вертикална грешка) в сравнение с метода на най-малките квадрати, най-подходящ за тези отклонения около x=20, y=100. - person Dason; 01.01.2016

Вече получихте добър отговор, но може би това също е полезно:

Както знаете, OLS минимизира сумата от грешките на квадрат в посока y. Това означава, че несигурността на вашите x-стойности е незначителна, което често се случва. Но вероятно това не е така за вашите данни. Ако приемем, че несигурностите в x и y са равни и направим регресия на Деминг, получаваме напасване, по-подобно на това, което очаквате.

library(MethComp)
dem_reg <- Deming(x1, y1)
abline(dem_reg[1:2], col = "green")

резултатен сюжет

Не предоставяте подробна информация за вашите данни. Следователно това може да е полезно или не.

person Roland    schedule 06.08.2015
comment
Роланд, @MikeWilliamson: прав си. Направих OLS, защото това е техниката на регресия, която познавам, а не това, което трябва да използвам. В случая с моите данни x и y са визуални оценки на симптомите на заболяването: с други думи, несигурността е една и съща при x и y. Така че да, TLS е много по-подходящ. Благодаря и на двама ви. - person NOTM; 06.08.2015
comment
Тогава това не е от значение за вас, но все пак трябва да го спомена: регресията на Деминг ви позволява да посочите съотношението на несигурностите в x и y (в случай че не са равни). - person Roland; 06.08.2015
comment
Добре благодаря, ще потърся и това! Научих много днес. - person NOTM; 06.08.2015
comment
това е хубаво обяснение на деминг. има ли лесен начин да се направи деминг с функция за абсолютна загуба? - person MichaelChirico; 07.08.2015