Подбор линейной модели для каждого фактора переменной

Я начну с того, что говорю, что я очень плохо знаком с 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 дф в оригинальном посте!

Другие вопросы по тегам