Piotr J.

Piotr J. Młodszy analityk

Temat: Dlaczego wyniki regresji w R i S sa rozne?

Zrobiłem regresję na pewnych danych na uczelni w programie S, a potem w domu w programie R i otrzymałem zupełnie różne wyniki chociaż podałem taki sam wzór "formula". Dlaczego tak jest? Który wynik jest poprawny?

Wyniki w S:

Call:
lm(formula = zalezna ~ niezalezne, data = la6_zad2)

Residuals:
Min 1Q Median 3Q Max
-3.08896 -0.67973 -0.09353 0.71482 2.42183

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.66817 0.10707 62.28 <2e-16 ***
niezalezne1 2.01310 0.16930 11.89 <2e-16 ***
niezalezne2 1.20335 0.09774 12.31 <2e-16 ***
niezalezne3 1.52139 0.06912 22.01 <2e-16 ***
niezalezne4 1.14069 0.05354 21.31 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.071 on 95 degrees of freedom
Multiple R-squared: 0.9284, Adjusted R-squared: 0.9254
F-statistic: 307.9 on 4 and 95 DF, p-value: < 2.2e-16


Wyniki w R:
Call:
lm(formula = zalezna ~ niezalezne, data = la6_zad2)

Residuals:
Min 1Q Median 3Q Max
-3.08896 -0.67973 -0.09353 0.71482 2.42183

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.7896 0.2394 3.298 0.00137 **
niezalezneB 4.0262 0.3386 11.891 < 2e-16 ***
niezalezneC 5.6232 0.3386 16.607 < 2e-16 ***
niezalezneD 9.3020 0.3386 27.472 < 2e-16 ***
niezalezneE 10.4413 0.3386 30.837 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.071 on 95 degrees of freedom
Multiple R-squared: 0.9284, Adjusted R-squared: 0.9254
F-statistic: 307.9 on 4 and 95 DF, p-value: < 2.2e-16
Piotr J. edytował(a) ten post dnia 23.12.12 o godzinie 00:05

Temat: Dlaczego wyniki regresji w R i S sa rozne?

Oba są poprawne.

R i S mają domyślnie ustawione różne kontrasty. R ma "treatment" a S+ ma bodajże Helmerta, chyba, że ktoś ustawił to inaczej - zawsze trzeba się upewnić.

Możesz to sprawdzić poleceniem options()$contrasts.

U mnie dało to przewidywaną wartość:
 > options()$contrasts
unordered ordered
"contr.treatment" "contr.poly"


Jeśli faktycznie masz w S+ Helmerta, to bazując na podanych przez Ciebie wynikach powinienem móc przejść do niego z "treatmentu".

Sprawdźmy, jakie są średnie w grupach na podstawie współczynników zwróconych przez lm w R:
 > wspR  #przepisałem
[1] 0.7896 4.0262 5.6232 9.3020 10.4413

#Średnie przy założeniu, że kontrast jest typu "treatment"
> (srednie <- c(wspR[1], wspR[1]+wspR[2:5]))
[1] 0.7896 4.8158 6.4128 10.0916 11.2309


Zgadzają się? Sprawdźmy, czy dla Helmerta otrzymam wyniki jak u Ciebie w pakiecie S+

Muszę wyliczyć średnią "globalną", a mam tylko średnie grup. Nie wiem, czy masz
równoliczne grupy (bo tylko wtedy średnia ze średnich będzie równa średnich na danych surowych, których nie podajesz), ale patrząc po liczbie stopni swobody (95), liczbie predyktorów (5) wychodzi, że jest 100 obserwacji, po 5 grup to daje 20obs/gr. Jeśli tak by było faktycznie, to średnia ze średnich powinna równać się "interceptowi" w S.

 > mean(srednie)
[1] 6.66814


Mniej więcej się zgadza. Drobna różnica przez błędy zaokrągleń, jako że summary(lm).print obcina liczby do 4 miejsc dziesiętnych.

Sprawdźmy pozostałe współczynniki w S+:

 > sapply(1:4, function(i) mean(srednie[0:i+1])-mean(srednie[0:i]))
[1] 2.013100 1.203367 1.521383 1.140690


I wszystko jasne :]

PS: do wklejania wyników z R/S używaj taga "code". Zachowa tabulacje i będzie to strawniej wyglądać.Adrian Olszewski edytował(a) ten post dnia 22.12.12 o godzinie 22:52
Piotr J.

Piotr J. Młodszy analityk

Temat: Dlaczego wyniki regresji w R i S sa rozne?

Adrian Olszewski:
R i S mają domyślnie ustawione różne kontrasty. R ma "treatment" a S+ ma bodajże Helmerta, chyba, że ktoś ustawił to inaczej - zawsze trzeba się upewnić.

Dzięki teraz przynajmniej wiem że wszystko jest ok. Poczytam o tych kontrastach bo nie bardzo rozumiem o co chodzi.
Zgadzają się? Sprawdźmy, czy dla Helmerta otrzymam wyniki jak u Ciebie w pakiecie S+

Zgadzają się tylko są drobne różnice ale to jak piszesz pewnie wynika z zaokrągleń. Widać że to pasuje do siebie.

Muszę wyliczyć średnią "globalną", a mam tylko średnie grup. Nie wiem, czy masz
równoliczne grupy (bo tylko wtedy średnia ze średnich będzie równa średnich na danych surowych, których nie podajesz), ale patrząc po liczbie stopni swobody (95), liczbie predyktorów (5) wychodzi, że jest 100 obserwacji, po 5 grup to daje 20obs/gr. Jeśli tak by było faktycznie, to średnia ze średnich powinna równać się "interceptowi" w S.

Tak, poziomy zmiennej niezależnej wyznaczają grupy o takiej samej liczebności.

Dzięki za szybką odpowiedź.
Maciej B.

Maciej B. Doktorant

Temat: Dlaczego wyniki regresji w R i S sa rozne?

Ostatnio miałem taki sam problem (porównanie wyników R z SPSS) i też przyczyną były kontrasty. :-)

Temat: Dlaczego wyniki regresji w R i S sa rozne?

Tylko czekać na posta dotyczącego typów sum kwadratów :P ;)
Maciej B.

Maciej B. Doktorant

Temat: Dlaczego wyniki regresji w R i S sa rozne?

W sumie to jest ważne, tym bardziej, że różne pakiety statystyczne mogą dawać inne wyniki.
Tego na studiach nie uczyli, ale dobrą praktyką jest czytanie dokumentacji oprogramowania :)



Wyślij zaproszenie do