У меня есть рабочий код, который использует аккуратный способ зацикливания линейных моделей для всех серий названий культур в моей базе данных. Проблема в том, что я понял, что мне нужно кластеризовать надежные стандартные ошибки по уникальному номеру поля. Когда я перешел от простой модели LM к кластеру LM.Coop, цикл больше не работал. Дело в том, что R не хранит вывод lm.cluster как фрейм данных, который Broom может распознать. HALP!
####Load Packages
library(tidyverse)
library(broom)
library(purrr)
library(miceadds)
####example data
df <- data.frame("crop" = rep(c('Beans', 'Corn', 'Potatoes'), 10),
"harvest" = rnorm(n = 30),
"pattern" = rep(c("inter", "mono"), 15),
"farmid" = rep(c(001, 002, 003, 004, 005 ), 6),
stringsAsFactors = TRUE)
####Working code to group by crop and run a regression on each (this is how we had it before, doing a simple linear model, before adding a cluster variable)
inter_lm <- df %>%
group_by(crop) %>%
do(broom::tidy(lm(formula = harvest ~ pattern,
data = . )))
####Here's the problem. I'm getting the error message "Error in as.data.frame.default(x) : cannot coerce class ""lm.cluster"" to a data.frame"
inter_lm <- df %>%
group_by(crop) %>%
do(broom::tidy(miceadds::lm.cluster(formula = harvest ~ pattern, cluster = 'farmid',
data = . )))