【问题标题】:Selecting different columns of a data frame to run ANOVA in a for loop in R?选择数据框的不同列以在 R 的 for 循环中运行方差分析?
【发布时间】:2015-08-30 04:44:53
【问题描述】:

我正在尝试对名为 MegaData 的数据框中的二项式分布数据运行 ANOVA,该数据框中的前 4 列是具有单位、年份和物种的分类变量。下面是我的 R 代码,当我尝试遍历数据框的不同列以运行我的模型时,它不起作用。

mod <- list()
for (i in MegaData[,5:36]) {
  for(j in length(MegaData[,5:36])){
    mod[[j]] <- glm(i/number ~ Unit*BeginYear*species_raw,
    family = binomial(link = logit), weight=number, 
    data = MegaData)
    print(anova(mod[[j]]), test="Chisq")
    print(summary(mod[[j]]))
  }
}

【问题讨论】:

    标签: r anova


    【解决方案1】:

    如果您尝试在 5:36 为每一列训练一个模型,获取拟合模型列表并打印出每个模型的摘要,您可以尝试:

    mod <- list()
    for (j in 5:36) {
      mod[[j]] <- glm(paste0(names(MegaData)[j], "/number~Unit*BeginYear*species_raw"),
                      family = binomial(link = logit), weight=number, data = MegaData)
      print(anova(mod[[j]]), test="Chisq")
      print(summary(mod[[j]]))
    }
    

    数据:

    set.seed(144)
    MegaData <- data.frame(number=sample(1001:2000, 1000, replace=TRUE), Unit=sample(1:10, 1000, replace=TRUE), BeginYear=sample(2000:2010, 1000, replace=TRUE), species_raw=sample(letters[1:3], 1000, replace=TRUE))
    for (i in 1:32) {MegaData[[paste0("dat", i)]] <- sample(1:1000, 1000, replace=TRUE)}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多