是否有适当的方法来进行R风格的逻辑回归,避免使用循环,但我可以针对特定因子的每个级别进行多次回归?
例如,假设df是每日365行,带有二进制表示是否下雨:
multifactorglm(x){
glm(rained ~ temp + humidity, data=x, family="binomial")
}
tapply(df, month, multifactorglm)
这将不会在R中运行,并显示以下消息...
Error: unexpected '{' in "multifactorglm(x){"
> glm(rained ~ temp + humidity, data=x, family="binomial")
Error in eval(predvars, data, env) :
numeric 'envir' arg not of length one
> }
Error: unexpected '}' in "}"
>
我希望得到一个12 glm回归的向量,但我不想使用循环。我该怎么办?
答案 0 :(得分:3)
我认为错误是由于无法理解定义函数的R语法(以及不知道诸如“月”之类的列名不可用作全局变量而导致的另一个错误。请尝试改为:
multifactorglm <- function(x){
glm(rained ~ temp + humidity, data=x, family="binomial")
}
do.call(rbind, do(df, df$month, multifactorglm) )
如果你真的想要一个完全数字化的结果,可能是:
multifactorglm<- function(x){
coef( glm(rained ~ temp + humidity, data=x, family="binomial") )
}
do.call( rbind, do(df, df$month, multifactorglm) )
...我认为这将是一个包含3列(拦截和两个参数列)的矩阵......虽然在没有数据的情况下未经测试。看着我的第一次努力,我意识到tapply不会正确分割数据帧。您可能需要使用lapply (split(df, df$month) ,multifactorglm)
或do
函数,该函数在rownames内部使用tapply
。