2014-09-11 2 views
3

공동 작업자가 분석을 수행하지만 SAS는 가지고 있지 않기 때문에 반복 측정 모델을 SAS에서 R로 변환하려고했습니다. 우리는 4 그룹, 그룹당 8-10 동물, 그리고 각 동물에 대한 5 시간 지점을 다루고 있습니다.혼합 모델을 SAS에서 R까지 반복 측정으로 변환

원래 SAS 코드 (1)는 :

proc mixed data=essai.data_test method=reml; 
    class group time mice; 
    model param = group time group*time/ddfm=kr; 
    repeated time/type=un subject=mice group=group; 
run; 

준다 :

Type 3 Tests des effets fixes 
       DDL  DDL  Valeur 
Effet   Num. Res.   F Pr > F 
group   3 15.8  1.58 0.2344 
time    4 25.2  10.11 <.0001 
group*time  12 13.6  1.66 0.1852 

모의 데이터 파일 여기 엑셀 파일로 RDATA 파일로 https://drive.google.com/file/d/0B-WfycVUQyhaVGU2MUpuQkg4Mk0/edit?usp=sharing 여기 https://drive.google.com/file/d/0B-WfycVUQyhaR0JtZ0V4VjRkTk0/edit?usp=sharing 사용할 저는 R이 SAS와 같은 방식으로 자유도를 다루지 않으므로 (2)와 비슷한 결과를 얻으려고합니다.

proc mixed data=essai.data_test method=reml; 
    class group time mice; 
    model param = group time group*time; 
    repeated time/type=un subject=mice group=group; 
run; 

여기에 몇 가지 힌트가 있습니다. Converting Repeated Measures mixed model formula from SAS to R 복합 대칭 상관 행렬을 지정할 때 완벽하게 작동합니다. 그러나 일반적인 상관 행렬에 대해 동일한 것을 얻을 수는 없습니다. I 얻을

options(contrasts=c('contr.sum','contr.poly')) 
mod <- lme(param~group*time, random=list(mice=pdDiag(form=~group-1)), 
      correlation = corSymm(form=~1|mice), 
      weights = varIdent(form=~1|group), 
      na.action = na.exclude, data = data, method = "REML") 
anova(mod,type="marginal") 

:

  numDF denDF F-value p-value 
(Intercept)  1 128 1373.8471 <.0001 
group   3 32 1.5571 0.2189 
time   4 128 10.0628 <.0001 
group:time  12 128 1.6416 0.0880 

정도에 다음 R 코드를 사용

Type 3 Tests des effets fixes 
       DDL  DDL  Valeur 
Effet   Num. Res.   F Pr > F 
group   3  32  1.71 0.1852 
time    4  128  11.21 <.0001 
group*time  12  128  2.73 0.0026 

(2) SAS에서, I는 다음과 같은 결과를 얻었다 함께

자유는 비슷하지만 고정 효과에 대한 테스트는 아니며 어디에서 발생하는지 알지 못합니다. 누구든지 내가 여기서 잘못하고있는 것에 대해 어떤 생각을 가지고 있겠습니까?

답변

1

R 코드는 SAS 코드와 여러 가지 점에서 다릅니다. 그 중 일부는 해결할 수 있지만 SAS 분석을 재현하기 위해 모든 측면을 수정할 수는 없습니다. 는 SAS 코드가 잔차 간의 상관 관계를 허용하는 일반화 된 선형 모델에 적합하면서

  1. 는 R 코드, 임의 mice 효과와 혼합 효과 모델 맞지만 더 RANDOM 문이 없으므로 아무런 랜덤 효과 (없다). R에서는 동일한 nlme 패키지의 gls 함수를 사용해야합니다.

  2. R 코드에서 동일한 그룹 내의 모든 관측치는 동일한 편차를 가지며 SAS 코드에는 구조화되지 않은 공분산 행렬이 있습니다. 즉, 각 그룹 내의 각 시간 점에는 자체 분산이 있습니다. weights=varIdent(form=~1|group*time)을 사용하면 동일한 효과를 얻을 수 있습니다.

  3. R 코드에서 상관 매트릭스는 그룹에 관계없이 모든 마우스에서 동일합니다. SAS 코드에서 각 그룹은 고유 한 상관 행렬을 가지고 있습니다. 이것은 내가 내가 R 모델이 더 의미있는 것 같다주의해야

R.

에서 재생하는 방법을 알고하지 않는 부분 - SAS는 너무 많은 차이와 상관 관계를 (추정하는 바이 그렇다면 repeated 문에는 RRCORR 옵션을 사용하여 의미있게 배열 된 것을 볼 수 있습니다.

+0

감사합니다.나는 너의 요점을 이해한다고 생각한다. 그렇다면 내가 이해하는 바에 따르면 R에서 각 그룹에 대해 서로 다른 상관 행렬을 가질 수 없습니다. 내가 맞습니까? –

+0

자세한 내용을 포함하여 답변을 편집했지만'nlme' 라이브러리를 사용하여 각 그룹에 대해 서로 다른 상관 관계 매트릭스를 얻을 수 없습니다. 아마도 거기에 다른 것이있을 것입니다. – Aniko

+0

업데이트 된 답변을 제공해 주셔서 감사합니다. 이제 상황이 훨씬 명확 해졌습니다. 그리고 gl 함수를 지적 해 주셔서 감사합니다. 이제는 그룹 = 부분없이 SAS에서 반복되는 일반적인 문장을 재현 할 수 있습니다. 나는 SAS가 너무 많은 매개 변수를 추정하고, SAS에서 분명히 "un"행렬이 제게 최선의 선택이 아니라고 생각합니다. 이제 각 마우스에 대해 동일한 상관 구조가 있는지 확인하고 SAS에서 그룹별로 다른 분산이 가능한지 확인하려고합니다. –

관련 문제