в R: группировать данные по фактору, цикл LM.Cluster (tidy) - PullRequest
0 голосов
/ 12 марта 2019

У меня есть рабочий код, который использует аккуратный способ зацикливания линейных моделей для всех серий названий культур в моей базе данных. Проблема в том, что я понял, что мне нужно кластеризовать надежные стандартные ошибки по уникальному номеру поля. Когда я перешел от простой модели 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 = . )))

...