为变量中的每个因素拟合线性模型

Fitting a linear model for every factor in a variable

我有一个数据框,其中包含一系列与森林构成相关的测量值。我想为其中一个变量中包含的每个独特树种拟合一个线性模型,但一直在努力实现这一点。我已经提供了我当前的代码方法。

for (species in TreeData$SPECIES){
  CurrSpecies <- lm(GROWTH ~ DBH + TOTAL_HGT + BASTAND + BAHW + 
BA_UPPER + BA_MAX + GDD + PCP + TREE_STATU, 
data = TreeData, subset = SPECIES_CO == species)
  path <- paste(".../SUMMARY_", species, ".csv")
  write(capture.output(summary(CurrSpecies)), file = path)
}

使用您的策略提取系数表的一种方法是这样的,以(内置)iris 数据集为例:

for (species in unique(iris$Species)){
  data <- iris[iris$Species==species, ]
  outname <- paste0("output_folder/", species, ".csv")
  fit <- lm(data[["Sepal.Length"]] ~ data[["Sepal.Width"]])
  fit_coefs <- as.data.frame(summary(fit)$coefficients)
  write.csv(fit_coefs, outname)
}

另请查看 broom:: 包,它使此类任务更快、更一致。

如果您需要摘要的其他部分,您可以尝试提取和重组摘要对象的不同部分 summary(fit)

还有一个重要提示:在原始 post!

中包含您的 TreeData df 样本很重要