Ini mungkin terlihat seperti sedikit promosi diri (dan saya kira begitu). Tapi saya mengembangkan paket lsmeans untuk R (tersedia di CRAN) yang dirancang untuk menangani situasi seperti ini. Inilah cara kerjanya sebagai contoh:
> sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))
> sample.aov <- aov(DV ~ factor(IV), data = sample.data)
> library("lsmeans")
> (sample.lsm <- lsmeans(sample.aov, "IV"))
IV lsmean SE df lower.CL upper.CL
1 -3.009669 0.2237448 76 -3.4552957 -2.564043
2 -3.046072 0.2237448 76 -3.4916980 -2.600445
3 1.147080 0.2237448 76 0.7014539 1.592707
4 3.049153 0.2237448 76 2.6035264 3.494779
> contrast(sample.lsm, list(mycon = c(-3,-1,1,3)))
contrast estimate SE df t.ratio p.value
mycon 22.36962 1.000617 76 22.356 <.0001
Anda dapat menentukan kontras tambahan dalam daftar jika Anda mau. Untuk contoh ini, Anda akan mendapatkan hasil yang sama dengan kontras polinomial linier bawaan:
> con <- contrast(sample.lsm, "poly")
> con
contrast estimate SE df t.ratio p.value
linear 22.369618 1.0006172 76 22.356 <.0001
quadratic 1.938475 0.4474896 76 4.332 <.0001
cubic -6.520633 1.0006172 76 -6.517 <.0001
Untuk mengonfirmasi ini, perhatikan bahwa "poly"
spesifikasi mengarahkannya untuk menelepon poly.lsmc
, yang menghasilkan hasil ini:
> poly.lsmc(1:4)
linear quadratic cubic
1 -3 1 -1
2 -1 -1 3
3 1 -1 -3
4 3 1 1
Jika Anda ingin melakukan uji gabungan dari beberapa kontras, gunakan test
fungsi dengan joint = TRUE
. Sebagai contoh,
> test(con, joint = TRUE)
Ini akan menghasilkan tes "tipe III". Tidak seperti car::Anova()
itu, ia akan melakukannya dengan benar terlepas dari pengkodean kontras yang digunakan pada tahap pemasangan model. Ini karena fungsi linier yang diuji ditentukan secara langsung daripada secara implisit melalui reduksi model. Fitur tambahan adalah bahwa kasus di mana kontras yang diuji secara linear tergantung terdeteksi, dan statistik uji yang benar dan derajat kebebasan dihasilkan.