Ketika berhadapan dengan data dengan faktor R dapat digunakan untuk menghitung rata-rata untuk setiap kelompok dengan fungsi lm (). Ini juga memberikan kesalahan standar untuk estimasi cara. Tetapi kesalahan standar ini berbeda dari apa yang saya dapatkan dari perhitungan dengan tangan.
Ini adalah contoh (diambil dari sini. Memprediksi perbedaan antara dua grup dalam R )
Pertama menghitung mean dengan 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
Mencegat adalah rata-rata untuk kelompok pertama, 4 mobil silinder. Untuk mendapatkan sarana dengan perhitungan langsung, saya menggunakan ini:
with(mtcars, tapply(mpg, cyl, mean))
4 6 8
26.66364 19.74286 15.10000
Untuk mendapatkan kesalahan standar untuk cara saya menghitung variasi standar sampel dan membaginya dengan jumlah pengamatan di setiap kelompok:
with(mtcars, tapply(mpg, cyl, sd)/sqrt(summary(mtcars$cyl)) )
4 6 8
1.3597642 0.5493967 0.6842016
Perhitungan langsung memberikan rata-rata yang sama tetapi kesalahan standar berbeda untuk 2 pendekatan, saya berharap mendapatkan kesalahan standar yang sama. Apa yang terjadi disini? Ini terkait dengan lm () yang cocok dengan rata-rata untuk setiap kelompok dan istilah kesalahan?
Diedit: Setelah jawaban Svens (di bawah) saya dapat merumuskan pertanyaan saya lebih ringkas dan jelas.
Untuk data kategorikal kita dapat menghitung rata-rata variabel untuk kelompok yang berbeda adalah dengan menggunakan lm () tanpa intersep.
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
Kita dapat membandingkan ini dengan perhitungan langsung dari cara dan kesalahan standar mereka:
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
Berarti persis sama tetapi kesalahan standar berbeda untuk 2 metode ini (seperti Sven juga perhatikan). Pertanyaan saya adalah mengapa mereka berbeda dan tidak sama?
(saat mengedit pertanyaan saya, haruskah saya menghapus teks asli atau menambahkan edisi saya seperti yang saya lakukan)
sumber
The
lm
Fungsi tidak memperkirakan sarana dan kesalahan standar dari tingkat faktor tapi contrats terkait dengan tingkat faktor.Jika tidak ada kontras yang ditentukan secara manual, kontras pengobatan digunakan dalam R. Ini adalah default untuk data kategorikal.
Faktor ini
mtcars$cyl
memiliki tiga tingkatan (4,6, dan 8). Secara default, level pertama, 4, digunakan sebagai kategori referensi. Intersep model linier berhubungan dengan rata-rata variabel dependen dalam kategori referensi. Tetapi efek lainnya dihasilkan dari perbandingan satu tingkat faktor dengan kategori referensi. Oleh karena itu, estimasi dan kesalahan standarcyl6
terkait dengan perbedaan antaracyl == 6
dancyl == 4
. Efeknyacyl8
terkait dengan perbedaan antaracyl == 8
dancyl == 4
.Jika Anda ingin
lm
fungsi untuk menghitung rata-rata tingkat faktor, Anda harus mengecualikan istilah intersep (0 + ...
):Seperti yang Anda lihat, perkiraan ini identik dengan rata-rata tingkat faktor. Tetapi perhatikan bahwa kesalahan standar estimasi tidak identik dengan kesalahan standar data.
Omong-omong: Data dapat dikumpulkan dengan mudah dengan
aggregate
fungsi:sumber
Selain apa yang dikatakan Sven Hohenstein,
mtcars
data tidak seimbang . Biasanya satu menggunakanaov
untuk lm dengan data kategorikal (yang hanya pembungkus untuklm
) yang secara khusus mengatakan pada?aov
:Saya pikir Anda juga bisa melihat ini pada korelasi aneh dari matriks model:
Oleh karena itu, kesalahan standar yang diperoleh dari
aov
(ataulm
) kemungkinan akan palsu (Anda dapat memeriksa ini jika Anda membandingkan denganlme
ataulmer
kesalahan standar.sumber
sumber