R:如何为循环而下降的因素有<2级水平的多重线性回归

问题描述 投票:0回答:1

我想回路多元线性回归和自动降不至少有两个层面,以避免以下错误消息因素:

误差在contrasts<-*tmp*,值= contr.funs [1 + ISOF [NN]]):对比度可以仅用于有2级或更多的水平的因素*

现在,我的代码是:

df %>% 
  group_by(crop_name) %>% 
    do(tidy(lm(formula = value ~ intercrop + 
erosion_c + purchased_seed + inorg_pest +
 org_pest + landscape + fert + inorgfert,
             data = . )))

问题是,一些农作物有足够的所有,我回归变量点的大样本,而其他有一个非常小的样本量和零收到一个给定的治疗(即,无血水果作物间作了,等等。 )。

有没有一种办法中的for循环让R退步什么可以,否则放下一切,并避免这个问题?

r for-loop linear-regression tidy
1个回答
0
投票

我很新,所以这可能不是最好的办法。您可能需要建立一个for循环与crop_name,因为在我的例子DF是你的一个作物组子集。

df <- data.frame(intercrop = c("A","B","C","A","B","C"),
                   erosion_c = c("A","D","C","A","B","C"),
                   purchased_seed = c("A","B","D","F","E","C"),
                   inorg_pest = c("A","B","C","A","B","C"),
                   org_pest = c("A","B","A","A","B","B"),
                   landscape = c("A","A","A","A","A","A"),
                   fert = c("A","B","C","A","B","C"),
                   inorgfert = c("A","B","C","A","B","C")
                   )


yo <- sapply(df, levels)
hi <- as.data.frame(c(NA))
for(i in 1:length(yo)){
  hi[i] <- length(yo[[i]])
  names(hi)[i] <- names(df[i])
}

hi <- subset(as.data.frame(t(hi)), V1 >= 2)

formu <- row.names(hi)
formu <- as.formula(paste("value ~ ",gsub('.{3}$', '', paste( unlist(paste(formu,"+ ")), collapse=''))))
© www.soinside.com 2019 - 2024. All rights reserved.