Catatan: pertanyaan ini adalah repost, karena pertanyaan saya sebelumnya harus dihapus karena alasan hukum.
Sambil membandingkan PROC CAMPURAN dari SAS dengan fungsi lme
dari nlme
paket di R, saya menemukan beberapa perbedaan yang agak membingungkan. Lebih khusus lagi, derajat kebebasan dalam berbagai tes berbeda antara PROC MIXED
dan lme
, dan saya bertanya-tanya mengapa.
Mulai dari dataset berikut (kode R yang diberikan di bawah):
- ind: faktor yang menunjukkan individu tempat pengukuran dilakukan
- fac: organ tempat pengukuran dilakukan
- trt: faktor yang mengindikasikan perawatan
- y: beberapa variabel respons kontinu
Idenya adalah untuk membangun model-model sederhana berikut:
y ~ trt + (ind)
: ind
sebagai faktor acak
y ~ trt + (fac(ind))
: fac
bersarang ind
sebagai faktor acak
Perhatikan bahwa model terakhir harus menyebabkan singularitas, karena hanya ada 1 nilai y
untuk setiap kombinasi ind
dan fac
.
Model Pertama
Di SAS, saya membuat model berikut:
PROC MIXED data=Data;
CLASS ind fac trt;
MODEL y = trt /s;
RANDOM ind /s;
run;
Menurut tutorial, model yang sama dalam R menggunakan nlme
harus:
> require(nlme)
> options(contrasts=c(factor="contr.SAS",ordered="contr.poly"))
> m2<-lme(y~trt,random=~1|ind,data=Data)
Kedua model memberikan estimasi yang sama untuk koefisien dan SE mereka, tetapi ketika melakukan uji F untuk efek trt
, mereka menggunakan jumlah derajat kebebasan yang berbeda:
SAS :
Type 3 Tests of Fixed Effects
Effect Num DF Den DF F Value Pr > F
trt 1 8 0.89 0.3724
R :
> anova(m2)
numDF denDF F-value p-value
(Intercept) 1 8 70.96836 <.0001
trt 1 6 0.89272 0.3812
Pertanyaan1: Apa perbedaan antara kedua tes? Keduanya dipasang menggunakan REML, dan menggunakan kontras yang sama.
CATATAN: Saya mencoba nilai yang berbeda untuk opsi DDFM = (termasuk BETWITHIN, yang secara teoritis akan memberikan hasil yang sama dengan lme)
Model Kedua
Dalam SAS:
PROC MIXED data=Data;
CLASS ind fac trt;
MODEL y = trt /s;
RANDOM fac(ind) /s;
run;
Model setara dalam R harus:
> m4<-lme(y~trt,random=~1|ind/fac,data=Data)
Dalam hal ini, ada beberapa perbedaan yang sangat aneh:
- R cocok tanpa mengeluh, sedangkan SAS mencatat bahwa goni akhir tidak pasti positif (yang tidak sedikit mengejutkan saya, lihat di atas)
- SE pada koefisien berbeda (lebih kecil dalam SAS)
- Sekali lagi, uji F menggunakan jumlah DF yang berbeda (pada kenyataannya, dalam SAS jumlah itu = 0)
Output SAS:
Effect trt Estimate Std Error DF t Value Pr > |t|
Intercept 0.8863 0.1192 14 7.43 <.0001
trt Cont -0.1788 0.1686 0 -1.06 .
R Output:
> summary(m4)
...
Fixed effects: y ~ trt
Value Std.Error DF t-value p-value
(Intercept) 0.88625 0.1337743 8 6.624963 0.0002
trtCont -0.17875 0.1891855 6 -0.944840 0.3812
...
(Perhatikan bahwa dalam kasus ini, uji F dan T setara dan gunakan DF yang sama.)
Menariknya, ketika menggunakan lme4
dalam R model bahkan tidak cocok:
> require(lme4)
> m4r <- lmer(y~trt+(1|ind/fac),data=Data)
Error in function (fr, FL, start, REML, verbose) :
Number of levels of a grouping factor for the random effects
must be less than the number of observations
Pertanyaan 2 : Apa perbedaan antara model ini dengan faktor bersarang? Apakah mereka ditentukan dengan benar dan jika demikian, bagaimana hasilnya sangat berbeda?
Data Simulasi dalam R:
Data <- structure(list(y = c(1.05, 0.86, 1.02, 1.14, 0.68, 1.05, 0.22,
1.07, 0.46, 0.65, 0.41, 0.82, 0.6, 0.49, 0.68, 1.55), ind = structure(c(1L,
2L, 3L, 1L, 3L, 4L, 4L, 2L, 5L, 6L, 7L, 8L, 6L, 5L, 7L, 8L), .Label = c("1",
"2", "3", "4", "5", "6", "7", "8"), class = "factor"), fac = structure(c(1L,
1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L), .Label = c("l",
"r"), class = "factor"), trt = structure(c(2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Cont",
"Treat"), class = "factor")), .Names = c("y", "ind", "fac", "trt"
), row.names = c(NA, -16L), class = "data.frame")
Data Simulasi:
y ind fac trt
1.05 1 l Treat
0.86 2 l Treat
1.02 3 l Treat
1.14 1 r Treat
0.68 3 r Treat
1.05 4 l Treat
0.22 4 r Treat
1.07 2 r Treat
0.46 5 r Cont
0.65 6 l Cont
0.41 7 l Cont
0.82 8 l Cont
0.60 6 r Cont
0.49 5 l Cont
0.68 7 r Cont
1.55 8 r Cont