R: Tính trung bình và sai số chuẩn của giá trị trung bình cho các yếu tố có lm () so với tính toán trực tiếp -edited


8

Khi xử lý dữ liệu với các yếu tố R có thể được sử dụng để tính phương tiện cho mỗi nhóm với hàm lm (). Điều này cũng đưa ra các lỗi tiêu chuẩn cho các phương tiện ước tính. Nhưng lỗi tiêu chuẩn này khác với những gì tôi nhận được từ một phép tính bằng tay.

Dưới đây là một ví dụ (lấy từ đây Dự đoán sự khác biệt giữa hai nhóm trong R )

Đầu tiên tính giá trị trung bình với lm ():

    mtcars$cyl <- factor(mtcars$cyl)
    mylm <- lm(mpg ~ cyl, data = mtcars)
    summary(mylm)$coef

                Estimate Std. Error   t value     Pr(>|t|)
  (Intercept)  26.663636  0.9718008 27.437347 2.688358e-22
  cyl6         -6.920779  1.5583482 -4.441099 1.194696e-04
  cyl8        -11.563636  1.2986235 -8.904534 8.568209e-10

Đánh chặn là trung bình cho nhóm đầu tiên, 4 chiếc xe hình trụ. Để có được phương tiện bằng cách tính trực tiếp, tôi sử dụng:

  with(mtcars, tapply(mpg, cyl, mean))

         4        6        8 
    26.66364 19.74286 15.10000 

Để có được các lỗi tiêu chuẩn cho phương tiện, tôi tính toán biến thể tiêu chuẩn mẫu và chia cho số lượng quan sát trong mỗi nhóm:

 with(mtcars, tapply(mpg, cyl, sd)/sqrt(summary(mtcars$cyl)) )

         4         6         8 
   1.3597642 0.5493967 0.6842016 

Tính toán trực tiếp cho cùng một giá trị trung bình nhưng sai số chuẩn là khác nhau đối với 2 cách tiếp cận, tôi đã dự kiến ​​sẽ có cùng một lỗi tiêu chuẩn. Chuyện gì đang xảy ra ở đây? Nó có liên quan đến lm () phù hợp với giá trị trung bình của từng nhóm và một thuật ngữ lỗi không?

Chỉnh sửa: Sau khi Svens trả lời (bên dưới) tôi có thể hình thành câu hỏi của mình ngắn gọn và rõ ràng hơn.

Đối với dữ liệu phân loại, chúng ta có thể tính toán phương tiện của một biến cho các nhóm khác nhau bằng cách sử dụng lm () mà không cần chặn.

  mtcars$cyl <- factor(mtcars$cyl)
  mylm <- lm(mpg ~ cyl, data = mtcars)
  summary(mylm)$coef

      Estimate Std. Error
  cyl4 26.66364  0.9718008
  cyl6 19.74286  1.2182168
  cyl8 15.10000  0.8614094

Chúng ta có thể so sánh điều này với một tính toán trực tiếp về phương tiện và các lỗi tiêu chuẩn của chúng:

  with(mtcars, tapply(mpg, cyl, mean))

         4        6        8 
    26.66364 19.74286 15.10000 

  with(mtcars, tapply(mpg, cyl, sd)/sqrt(summary(mtcars$cyl)) )

         4         6         8 
   1.3597642 0.5493967 0.6842016 

Các phương tiện hoàn toàn giống nhau nhưng các lỗi tiêu chuẩn là khác nhau đối với 2 phương thức này (như Sven cũng thông báo). Câu hỏi của tôi là tại sao chúng khác nhau và không giống nhau?

(khi chỉnh sửa câu hỏi của tôi, tôi nên xóa văn bản gốc hoặc thêm phiên bản của mình như tôi đã làm)

Câu trả lời:


7

Sự khác biệt trong các lỗi tiêu chuẩn là do trong hồi quy bạn tính toán ước lượng kết hợp của phương sai, trong khi trong phép tính khác, bạn tính các ước tính riêng biệt của phương sai.


2
Cảm ơn bạn đã làm rõ điều này. Tôi vừa tìm thấy một câu trả lời rất hay cho một câu hỏi tương tự ở đây, với một ví dụ hoạt động tốt: stats.stackexchange.com/questions/29479/ trộm
SRJ

Vâng, điều đó có vẻ có liên quan. Cũng phát hiện ra.
Glen_b -Reinstate Monica

5

Các lmchức năng không ước lượng phương tiện và sai số chuẩn của các cấp yếu tố nhưng trong những contrats gắn liền với mức độ yếu tố.

Nếu không có độ tương phản được chỉ định thủ công, độ tương phản điều trị được sử dụng trong R. Đây là mặc định cho dữ liệu phân loại.

Yếu tố mtcars$cylnày có ba cấp độ (4,6 và 8). Theo mặc định, cấp độ đầu tiên, 4, được sử dụng làm danh mục tham khảo. Chặn của mô hình tuyến tính tương ứng với giá trị trung bình của biến phụ thuộc trong danh mục tham chiếu. Nhưng các hiệu ứng khác là kết quả của việc so sánh một cấp độ yếu tố với thể loại tham chiếu. Do đó, ước tính và lỗi tiêu chuẩn cho cyl6có liên quan đến sự khác biệt giữa cyl == 6cyl == 4. Hiệu quả cyl8có liên quan đến sự khác biệt giữa cyl == 8cyl == 4.

Nếu bạn muốn lmhàm tính toán phương tiện của các cấp yếu tố, bạn phải loại trừ thuật ngữ chặn ( 0 + ...):

summary(lm(mpg ~ 0 + as.factor(cyl), mtcars))

Call:
lm(formula = mpg ~ 0 + as.factor(cyl), data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.2636 -1.8357  0.0286  1.3893  7.2364 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
as.factor(cyl)4  26.6636     0.9718   27.44  < 2e-16 ***
as.factor(cyl)6  19.7429     1.2182   16.21 4.49e-16 ***
as.factor(cyl)8  15.1000     0.8614   17.53  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 3.223 on 29 degrees of freedom
Multiple R-squared: 0.9785, Adjusted R-squared: 0.9763 
F-statistic: 440.9 on 3 and 29 DF,  p-value: < 2.2e-16 

Như bạn có thể thấy, những ước tính này giống hệt với phương tiện của các cấp độ yếu tố. Nhưng lưu ý rằng các lỗi tiêu chuẩn của các ước tính không giống với các lỗi tiêu chuẩn của dữ liệu.

Nhân tiện: Dữ liệu có thể được tổng hợp dễ dàng với aggregatechức năng:

aggregate(mpg ~ cyl, mtcars, function(x) c(M = mean(x), SE = sd(x)/sqrt(length(x))))

  cyl      mpg.M     mpg.SE
1   4 26.6636364  1.3597642
2   6 19.7428571  0.5493967
3   8 15.1000000  0.6842016

Cảm ơn vì sự trả lời. Tôi đã biết rằng các hệ số không phải là phương tiện, vì tôi đã viết phần chặn là giá trị trung bình của cấp thứ nhất, các hệ số khác là sự khác biệt về giá trị trung bình của các cấp khác với cấp đó. Bạn cũng nhận thấy rằng với nhận xét của bạn "lỗi tiêu chuẩn của các ước tính không giống với lỗi tiêu chuẩn của dữ liệu." Điều đó có nghĩa là lm () ước tính phương tiện và tính toán các lỗi tiêu chuẩn cho các ước tính đó
SRJ

Ồ, tôi muốn chỉnh sửa nhận xét đó cho rõ ràng nhưng không biết tôi chỉ có thể chỉnh sửa trong 5 phút, tôi có thể xóa nhận xét không? Tôi đã không nhận ra rằng tôi có thể nhận được các ước tính trung bình trực tiếp bằng cách bỏ qua phần chặn, cảm ơn vì mẹo đó. Nếu tôi hiểu bạn chính xác, các lỗi tiêu chuẩn của phương tiện ước tính không giống với các lỗi tiêu chuẩn được tính trực tiếp từ dữ liệu. Đây có phải là một bộ phương trình khác nhau được sử dụng trong mỗi trường hợp? Và những phương trình này là gì? Tôi muốn có thêm một số chi tiết để hiểu rõ hơn về sự khác biệt
SRJ

1

Ngoài những gì Sven Hohenstein nói, mtcarsdữ liệu không được cân bằng . Thông thường người ta sử dụng aovcho lm với dữ liệu phân loại (chỉ là một trình bao bọc cho lm) mà cụ thể là trên ?aov:

aov được thiết kế cho các thiết kế cân bằng và kết quả có thể khó diễn giải nếu không có sự cân bằng: hãy cẩn thận khi thiếu các giá trị trong (các) phản hồi sẽ có thể mất cân bằng.

Tôi nghĩ bạn cũng có thể thấy điều này trên các mối tương quan kỳ lạ của ma trận mô hình:

mf <- model.matrix(mpg ~ cyl, data = mtcars)
cor(mf)
            (Intercept)       cyl6       cyl8
(Intercept)           1         NA         NA
cyl6                 NA  1.0000000 -0.4666667
cyl8                 NA -0.4666667  1.0000000
Warning message:
In cor(mf) : the standard deviation is zero

Do đó, các lỗi tiêu chuẩn thu được từ aov(hoặc lm) có thể sẽ không có thật (bạn có thể kiểm tra lỗi này nếu so sánh với lmehoặc lmerlỗi tiêu chuẩn.


Làm thế nào bạn sẽ áp dụng lme ở đây?
SRJ

Các mối tương quan của các giá trị ma trận mô hình không có gì lạ. Vì hằng số (chặn) vốn đã bằng một, nên không có sự khác biệt giữa các giá trị của nó. Do đó, bạn không thể tính hệ số tương quan giữa một biến và hằng số.
Sven Hohenstein

-1
Y = matrix(0,5,6)
Y[1,] = c(1250, 980, 1800, 2040, 1000, 1180)
Y[2,] = c(1700, 3080,1700,2820,5760,3480)
Y[3,] = c(2050,3560,2800,1600,4200,2650)
Y[4,] = c(4690,4370,4800,9070,3770,5250)
Y[5,] = c(7150,3480,5010,4810,8740,7260)

n = ncol(Y)
R = rowMeans(Y)
M = mean(R)

s = mean(apply(Y,1,var))

v = var(R)  -s/n


#z = n/(n+(E(s2)/var(m)))
Q = 6/(6+(s/v))
t = Q*R[1] + (1-Z)*M

Điều này là không thể đọc được và thiếu bất kỳ loại bình luận nào về ý nghĩa của nó hoặc làm. Bạn có thể chỉnh sửa nó để cho rõ ràng hơn?
mdewey

Không thể hiểu câu trả lời. Nó đòi hỏi một số bình luận để giải thích những gì bạn đang làm.
Michael R. Chernick
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.