참고 :이 질문은 법적 이유로 인해 이전 질문을 삭제해야했기 때문에 다시 게시되었습니다.
SAS의 PROC MIXED를 R lme
의 nlme
패키지 기능과 비교하는 동안 다소 혼란스러운 차이점을 발견했습니다. 구체적으로는, 다른 시험에서 자유도간에 상이 PROC MIXED
하고 lme
, 그리고 왜 생각해.
다음 데이터 세트에서 시작하십시오 (아래 제공된 R 코드).
- ind : 측정 대상을 나타내는 계수
- fac : 측정되는 기관
- trt : 치료를 나타내는 인자
- y : 일부 연속 반응 변수
아이디어는 다음과 같은 간단한 모델을 작성하는 것입니다.
y ~ trt + (ind)
: ind
임의의 요인으로
y ~ trt + (fac(ind))
: fac
중첩 ind
임의의 요인으로
및의 y
모든 조합에 대해 1 개의 값만 있기 때문에 마지막 모델은 특이점을 유발해야합니다 .ind
fac
첫 번째 모델
SAS에서는 다음 모델을 작성합니다.
PROC MIXED data=Data;
CLASS ind fac trt;
MODEL y = trt /s;
RANDOM ind /s;
run;
튜토리얼에 따르면 R을 사용하는 동일한 모델은 다음과 nlme
같아야합니다.
> require(nlme)
> options(contrasts=c(factor="contr.SAS",ordered="contr.poly"))
> m2<-lme(y~trt,random=~1|ind,data=Data)
두 모델 모두 계수와 SE에 대해 동일한 추정치를 제공하지만의 효과에 대해 F 검정을 수행 할 때 trt
다른 자유도를 사용합니다.
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
질문 1 : 두 테스트의 차이점은 무엇입니까? 둘 다 REML을 사용하여 장착되며 동일한 대비를 사용합니다.
참고 : DDFM = 옵션에 대해 다른 값을 시도했습니다 (BETWITHIN 포함, 이론적으로 lme와 동일한 결과를 제공해야 함)
두 번째 모델
SAS에서 :
PROC MIXED data=Data;
CLASS ind fac trt;
MODEL y = trt /s;
RANDOM fac(ind) /s;
run;
R에서 동등한 모델은 다음과 같아야합니다.
> m4<-lme(y~trt,random=~1|ind/fac,data=Data)
이 경우 몇 가지 매우 이상한 차이점이 있습니다.
- R은 불평없이 맞습니다 .SAS는 최종 헤센이 양의 명확한 것이 아니라고 지적합니다 (나를 놀라게하지는 않습니다)
- 계수의 SE가 다릅니다 (SAS에서는 더 작음)
- 다시 F 테스트는 다른 양의 DF를 사용했습니다 (사실 SAS의 양 = 0).
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 출력 :
> 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
...
(이 경우 F 및 T 테스트는 동일하며 동일한 DF를 사용합니다.)
흥미롭게도 lme4
R에서 사용할 때 모델은 맞지 않습니다.
> 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
질문 2 : 중첩 요인이있는이 모델들 간의 차이점은 무엇입니까? 그것들이 올바르게 지정 되었으면, 어떻게 다른 결과가 나옵니까?
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")
시뮬레이션 된 데이터 :
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