我想回路多元线性回归和自动降不至少有两个层面,以避免以下错误消息因素:
误差在
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退步什么可以,否则放下一切,并避免这个问题?
我很新,所以这可能不是最好的办法。您可能需要建立一个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=''))))