Lý lịch
Tôi đang cố gắng để hiểu ví dụ đầu tiên trong một khóa học về các mô hình phù hợp (vì vậy điều này có vẻ đơn giản đến mức lố bịch). Tôi đã thực hiện các phép tính bằng tay và chúng khớp với ví dụ, nhưng khi tôi lặp lại chúng trong R, các hệ số mô hình bị tắt. Tôi nghĩ rằng sự khác biệt có thể là do sách giáo khoa sử dụng phương sai dân số ( ) trong khi R có thể sử dụng phương sai mẫu ( ), nhưng tôi không thể thấy chúng được sử dụng ở đâu trong các tính toán. Ví dụ: nếu
sử dụng ở đâu đó, phần trợ giúp về ghi chú:lm()
var()
var()
Mẫu số n - 1 được sử dụng để đưa ra một ước lượng không thiên vị của phương sai (đồng) cho các quan sát iid.
Tôi đã xem xét mã cho cả hai lm()
và lm.fit()
không sử dụng var()
, nhưng lm.fit()
chuyển dữ liệu đó sang mã C được biên dịch ( z <- .Call(C_Cdqrls, x, y, tol, FALSE)
) mà tôi không có quyền truy cập.
Câu hỏi
Bất cứ ai có thể giải thích tại sao R cho kết quả khác nhau? Ngay cả khi có sự khác biệt trong việc sử dụng mẫu so với phương sai dân số, tại sao các ước tính hệ số lại khác nhau?
Dữ liệu
Lắp một đường để dự đoán cỡ giày từ lớp trong trường.
# 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
Biên tập
Như Ben Bolker đã chỉ ra, đôi khi có vẻ như giáo viên mắc lỗi. Có vẻ như tính toán R là chính xác. Đạo đức của câu chuyện: đừng tin điều gì đó chỉ vì một giáo viên nói đó là sự thật. Xác nhận nó cho chính mình!
lm
hàm trong R, theo nghĩa đen, hàng chục nghìn người đã kiểm tra kết quả bằng cách so sánh chúng với những thứ khác và đầu ra của lm
được kiểm tra so với các ví dụ đã biết mỗi khi có bất kỳ thay đổi nào trong mã. Với câu trả lời ở đây, ít nhất một vài người có khả năng kiểm tra (câu hỏi của bạn đã được xem xét 29 lần).
mod.m=8/3
. Bởi vì nếu bạn đặtmod.m=2.5714
, thì chúng dường như giống hệt nhau.