2017-10-24 9 views
0

내 데이터는 많은 장치로 구성되어 있으며 각각은 여러 개의 측정 데이터 포인트 (전압 대비 증폭)를 포함하므로 데이터는 Serial_number로 그룹화됩니다.고정 된 효과와 무작위 효과에 대한 다항식의 차수를 비교하십시오.

fit<- lmer(log(log(Amplification)) ~ poly(Voltage, **degree**) + (poly(Voltage, **degree**) | Serial_number), data = APD) 

가 지금은 고정 및 임의 효과를위한 3 정도까지 다른 polyonimals 각을 비교하고 싶습니다 : 는 그럼으로 일반적으로 설명되어 lmer 모델이있다.

예컨대 : 그래서

fit01<- lmer(log(log(Amplification)) ~ poly(Voltage, **0**) + (poly(Voltage, **1**) | Serial_number), data = APD) 
fit11<- lmer(log(log(Amplification)) ~ poly(Voltage, **1**) + (poly(Voltage, **1**) | Serial_number), data = APD) 

합니다. 모든 가능성 (16 점)을 확인해야합니까? 아니면 똑똑한 가정 때문에 축소 할 수 있습니까? 마지막으로 나는 anova(fit11,fit01) 등등을 가지고있을 것입니다. 문제는 다음과 같습니다. 지금 비교할 때마다 실제로 두 가지 모델을 비교할 때 많이 비교해야합니다.

답변

1

당신은 프로그래밍 모델을 들어갈 수있는, 다음 AIC 사용하여 모든 비교 : 빨랐다

library(lme4) 

combinations <- expand.grid(fixed = 1:3, random = 1:3) 

models <- lapply(seq_len(nrow(combinations)), function(i) { 
    f <- as.formula(paste(
    'mpg ~ poly(qsec,', combinations[i, 1], ') + (poly(qsec,', combinations[i, 2], ') | cyl)' 
)) 
    lmer(f, mtcars) 
}) 

names(models) <- apply(combinations, 1, paste, collapse = '_') 
aics <- sapply(models, function(m) summary(m)$AIC) 

result <- data.frame(model = names(models), AIC = aics) 
result <- result[order(result$AIC), ] 
result$dAIC <- result$AIC - result$AIC[1] 

result 
  model  AIC  dAIC 
3_3.REML 3_3 155.7776 0.0000000 
3_2.REML 3_2 155.9683 0.1907229 
3_1.REML 3_1 156.0175 0.2398943 
2_3.REML 2_3 160.1618 4.3842105 
2_2.REML 2_2 160.2372 4.4595903 
2_1.REML 2_1 160.3215 4.5438645 
1_3.REML 1_3 164.5201 8.7424622 
1_2.REML 1_2 165.2802 9.5025476 
1_1.REML 1_1 165.3264 9.5487699 
+0

가 좋은 코드 라인에 대한 감사합니다! – Ben