2017-10-24 5 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)などを持っていました。 問題は次のとおりです。今は2つの異なるモデルを比較するときに、私は実際に多くの比較を行う必要があります。

答えて

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

関連する問題