0

以下は、私のデータ フレームの小さなサブセットです。実際のデータフレームには、変数ごとに明示的な名前があります。「DepVar1、および DepVar2 (2 つの応答変数)」または「IndVar (1-9)」(9 つの説明変数 - 1 つのカテゴリ変数と 8 つの連続変数) だけではありません。

lme4 パッケージにある関数 glm() をlmer( ) に変更して、 Bergan によって記述されたループを適応させ、 説明変数 (Indvar 1- 9) (1|IndVarType) 構文を使用して指定された変量効果を使用して、応答変数 (DepVar1 および DepVar2) の分散を説明します。

Example of glmm models: 

DepVar1 ~ Indvar (1-9) + (1|IndVarType)
DepVar2 ~ Indvar (1-9) + (1|IndVarType)

ループを実行してすべての glmm モデルを生成した後、AICcmodavgパッケージの関数aictab()を使用して AICc 値が最も低い順に最適な glmm モデルを並べ替え、 関連する統計を表示することを目指します。(2) AICcWt; (3)Cum.Wt.

私はランダム効果 (1|IndVarType) を組み込むために Bergans コードを適応させようと試みてきましたが、これまでのところ成功していません。それを行う方法はありますか?いくつかの検索を行ったところ、glm() 関数を含むループの例しか見つかりませんでした。誰かが解決策を持っている場合は、事前に感謝します。

コード

library(lme4)

ind_vars <-  c("Indvar1",
               "Indvar2",
               "Indvar3", 
               "Indvar4",
               "Indvar4",
               "Indvar5",
               "Indvar6",
               "Indvar7",
               "Indvar8",
               "Indvar9",
               "IndvarType")

   dep_vars <- c("Depvar1", "DepVar2")

   # create all combinations of ind_vars

ind_vars_comb <- 
  unlist(sapply( seq_len(length(ind_vars)), 
              function(i) {
                apply( combn(ind_vars,i), 2, function(x) paste(x, collapse = "+"))
              }))

    # pair with dep_vars:
      var_comb <- expand.grid(dep_vars, ind_vars_comb ) 

    # formulas for all combinations
      formula_vec <- sprintf("%s ~ %s", var_comb$Var1, var_comb$Var2)

    # create models
      # create models
     glm_mixed <- lapply(formula_vec, function(f)   {
          fit1 <- lmer(f, (1|IndvarType), data = bats)
          fit1$coefficients <- coef(summary(fit1))
          return(fit1)
          })
          names(glm_mixed) <- formula_vec

          ##Error: No random effects terms specified in formula 

 # Model selection
 # Installed AICcmodavg package for AICc values into R 

AICc情報

 # R code from Mazerolle (2014)

   library(AICcmodavg)

   mydata.aov <- glm_mixed # list of models
   mydata.model.names <- formula_vec # list of model names

# generates AICc values # sort models into order of AIC value

   aictab(mydata.aov, mydata.model.names, second.ord = TRUE, sort = TRUE) 

データ構造

structure(list(Indvar1 = c(0, 5, 10, 19, 30, 33, 39, 44, 54, 
63, 68, 72, 81, 87, 93, 100, 105, 110, 119, 127, 134, 141, 149, 
155, 115, 120, 125, 0, 5, 9, 17, 22, 29, 35, 39, 44, 45, 50, 
55, 63), IndvarType = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L), .Label = c("CONTROL", "LED", "Metal Halide", "SOX"), class = "factor"), 
`IndvarCat ` = c(26.9, 25.16, 39, 29.81, 21.83, 20.22, 2.9, 
2.1, 0.85, 0.62, 0.39, 0.26, 24.7, 21.99, 20.46, 26.32, 0, 
0, 0.43, 0.02, 0.02, 0.03, 0.02, 0.03, 2.62, 0.43, 0.44, 
25.16, 39, 29.81, 21.83, 20.22, 20.88, 0.63, 0.56, 0.56, 
86.63, 87.97, 88.59, 0.31), Indvar2 = c(10.34, 12.56, 15.76, 
10.35, 11.15, 14.6, 15.05, 12.54, 15.29, 19.5, 17.12, 17.62, 
13.92, 12.7, 12.55, 17.86, 18.86, 18.23, 19.65, 19.59, 18.11, 
19.04, 16.92, 18.39, 18.97, 18.96, 17.72, 7.65, 8.61, 8.98, 
8.68, 12.25, 11.71, 16.19, 15.73, 16.02, 13.62, 14.89, 14.98, 
17.14), Indvar3 = c(7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 11, 11, 11, 11, 11, 11, 
11, 11, 11, 13, 13, 13, 13, 13, 8, 8), Indvar4 = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("Full Moon", 
"Waning Gibbous", "Waxing Crescent", "Waxing Gibbous"), class = "factor"), 
Indvar5 = c(32.2, 32.2, 32.2, 32.2, 32.2, 32.2, 32.2, 32.2, 
32.2, 32.2, 32.2, 32.2, 32.2, 32.2, 32.2, 32.2, 32.2, 32.2, 
32.2, 32.9, 32.9, 32.9, 32.9, 32.9, 41.4, 41.4, 41.4, 41.4, 
41.4, 41.4, 41.4, 41.4, 41.4, 41.1, 41.1, 41.1, 41.1, 41.1, 
42.2, 42.2), Indvar6 = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3), Indvar7 = c(18, 18, 18, 18, 
18, 18, 18, 18, 18, 18, 18, 18, 18, 14, 14, 14, 14, 14, 14, 
14, 14, 13, 13, 13, 14.3, 14.3, 14.3, 14.3, 14.3, 14.3, 14.3, 
14.3, 14.3, 15.5, 15.5, 15.5, 15.5, 15.5, 14.6, 14.6), Indvar8 = c(51, 
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 69, 69, 69, 
69, 69, 69, 77, 77, 77, 77, 77, 62, 62, 62, 62, 62, 62, 62, 
62, 62, 57, 57, 57, 57, 57, 61, 61), Indvar9 = c(0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Depvar1 = c(3, 
2, 5, 6, 15, 2, 10, 12, 17, 2, 0, 0, 15, 7, 17, 0, 1, 0, 
14, 10, 12, 7, 4, 1, 5, 4, 2, 9, 7, 7, 9, 5, 4, 3, 0, 0, 
12, 11, 9, 1), DepVar2 = c(0.444444444, 0, 0, 0.027777778, 
0, 0, 0.25, 0, 0.08650519, 0, 0, 0, 0.111111111, 0, 0.124567474, 
0, 0, 0, 0.25, 0.01, 0.111111111, 0.081632653, 0, 0, 0.04, 
0.25, 0.25, 0.790123457, 0.510204082, 2.040816327, 1.777777778, 
0, 2.25, 0.111111111, 0, 0, 0.027777778, 0.074380165, 0.012345679, 
0)), .Names = c("Indvar1", "IndvarType", "IndvarCat ", "Indvar2", 
"Indvar3", "Indvar4", "Indvar5", "Indvar6", "Indvar7", "Indvar8", 
"Indvar9", "Depvar1", "DepVar2"), row.names = c(NA, 40L), class =      "data.frame")
4

0 に答える 0