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