Подбор линейной модели для каждого фактора переменной
Я начну с того, что говорю, что я очень плохо знаком с R, и вроде как спотыкаюсь о свой крутой путь обучения. У меня есть блок данных, содержащий длинный ряд измерений, касающихся состава леса. Я хотел бы подобрать линейную модель для каждого уникального вида дерева, содержащегося в одной из этих переменных, но изо всех сил пытался достичь этого. У меня есть некоторый опыт работы с Python, и моя интуиция подсказывает мне использовать цикл for, но это может быть неправильным подходом в R. Любая помощь заранее благодарна. Я предоставил свой текущий подход к коду.
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)
}
1 ответ
Один из способов извлечения таблиц коэффициентов с использованием вашей стратегии заключается в следующем, используя (встроенный) 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)
,
И важный совет: важно включить образец вашего TreeData
дф в оригинальном посте!