Arka fon
Ben modelleri uydurma bir kursta ilk örneği anlamaya çalışıyorum (bu yüzden bu gülünç derecede basit görünebilir). Hesaplamaları elle yaptım ve örnekle eşleşiyorlar, ancak bunları R'de tekrarladığımda, model katsayıları kapalı. Ben fark nüfus kitaplığı ( ) kullanarak ders kitabı nedeniyle olabilir R ise örnek varyans ( ) kullanıyor olabilir , ama bu hesaplamalarda nerede kullanıldığı göremiyorum. Örneğin, eğer
kullandığı yerde, üzerinde yardım bölümü notları:S 2lm()
var()
var()
İid gözlemleri için (ko) varyansın tarafsız bir tahmincisini veren n - 1 paydası kullanılır.
Her ikisi için kod baktım lm()
ve lm.fit()
ve ne make kullanımı var()
, ama lm.fit()
derlenmiş C koduna (bu verileri geçirir z <- .Call(C_Cdqrls, x, y, tol, FALSE)
ben erişimi yok).
Soru
Herkes R'nin neden farklı sonuçlar verdiğini açıklayabilir mi? Örneklem ile popülasyon varyansı kullanımında fark olsa bile, katsayı tahminleri neden farklıdır?
Veri
Okuldaki sınıftan ayakkabı boyutunu tahmin etmek için bir çizgi takın.
# model data
mod.dat <- read.table(
text = 'grade shoe
1 1
2 5
4 9'
, header = T);
# mean
mod.mu <- mean(mod.dat$shoe);
# variability
mod.var <- sum((mod.dat$shoe - mod.mu)^2)
# model coefficients from textbook
mod.m <- 8/3;
mod.b <- -1;
# predicted values ( 1.666667 4.333333 9.666667 )
mod.man.pred <- mod.dat$grade * mod.m + mod.b;
# residuals ( -0.6666667 0.6666667 -0.6666667 )
mod.man.resid <- (mod.dat$shoe - mod.man.pred)
# residual variance ( 1.333333 )
mod.man.unexpl.var <- sum(mod.man.resid^2);
# r^2 ( 0.9583333 )
mod.man.expl.var <- 1 - mod.man.unexpl.var / mod.var;
# but lm() gives different results:
summary(lm(shoe ~ grade, data = mod.dat))
Call:
lm(formula = shoe ~ grade, data = mod.dat)
Residuals:
1 2 3
-0.5714 0.8571 -0.2857
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.0000 1.3093 -0.764 0.585
grade 2.5714 0.4949 5.196 0.121
Residual standard error: 1.069 on 1 degrees of freedom
Multiple R-squared: 0.9643, Adjusted R-squared: 0.9286
F-statistic: 27 on 1 and 1 DF, p-value: 0.121
Düzenle
As Ben Bolker göstermiştir öğretmenler bazen hata yapabilir gibi görünüyor. Görünüşe göre R hesaplamaları doğru. Hikayenin ahlakı: Bir öğretmenin doğru olduğunu söylediği için bir şeye inanma. Kendiniz doğrulayın!
lm
R'deki işlev durumunda , kelimenin tam anlamıyla on binlerce kişi sonuçları başka şeylerle karşılaştırarak lm
kontrol etti ve kodda her değişiklik olduğunda , çıktısı bilinen örneklerle karşılaştırıldı. Burada cevaplarla, en az birkaç kişinin kontrol etmesi muhtemeldir (sorunuz 29 defa incelenmiştir).
mod.m=8/3
. Çünkü sen koyarsanmod.m=2.5714
, aynı görünüyorlar.