混合类型解释变量的多项式概率回归

时间:2018-12-10 16:28:05

标签: r glm

我有一个名为aggregates的数据帧,该数据帧由数字列组成,每个数字列均具有大量的零值。我想通过将它们回归到另一个称为exp_vars的数据框中来为每列拟合一个概率模型。 exp_vars由因子,有序因子,整数和数字组成。我尝试过:

probit_reg = lapply(aggregates, function(y) glm(y ~ subset(exp_vars, select=-c(HH_Net_Income)) + log(exp_vars$HH_Net_Income) + 
log(exp_vars$HH_Net_Income)^2 + log(exp_vars$HH_Net_Income)^3 , data = cbind(y = y, exp_vars)))

但是我得到了这个错误:

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  contrasts can be applied only to factors with 2 or more levels 

我知道该错误与我设置的公式无关,因为即使使用最基本的公式,我也会遇到相同的错误:

probit_reg=lapply(aggregates, function(y) glm(y ~ exp_vars, data = cbind(y = y, exp_vars)))

我觉得这与以下事实有关:我的一些预测因素是因素,但我不知道为什么这应该是一个问题以及如何解决它。我应该为我所有因素的每个级别创建二进制变量,还是有更简单的理由将预测因子与glm结合使用?

以下是可重现的示例:

    aggregates <- data.frame(agg1 =c(1,0,0,0,0), agg2=c(1,1,1,0,1))
    exp_vars <- data.frame(exp1 =c(21:25), exp2=c(11,12,21,22,23), exp3=c(1,0,0,1,1))
    exp_vars$exp2 = ordered(exp_vars$exp2, levels = c('11','12','21','22','23'))
    exp_vars$exp3 = as.factor(exp_vars$exp3)

     agg1 agg2
#1    1    1
#2    0    1
#3    0    1
#4    0    0
#5    0    1

# exp1 exp2 exp3
#1   21   11    1
#2   22   12    0
#3   23   21    0
#4   24   22    1
#5   25   23    1

probit_reg=lapply(aggregates , function(y) glm(y ~ exp_vars ,family = binomial(link = "probit"), data = cbind(y = y, exp_vars)))

#Error in model.frame.default(formula = y ~ exp_vars , data = cbind(y = y, exp_vars ),  : 
  invalid type (list) for variable 'exp_vars '

1 个答案:

答案 0 :(得分:1)

问题确实与公式有关。以下作品

['15' '9' '3' '35' '3' '18' '2' '32' '10' '3' '37' '28' '13' '24' '31' '1' '25' '18' '11' '22']

问题在于,当您编写lapply(aggregates , function(y) glm(y ~ . ,family = binomial(link = "probit"), data = cbind(y = y, exp_vars))) 时,y ~ exp_vars会寻找一个名为glm的变量并找到一个它不喜欢的数据框。写作

exp_vars

并不意味着data = cbind(y = y, exp_vars) 的所有列都可以称为exp_vars。实际上,

exp_vars

与此同时,编写cbind(y = 1:5, exp_vars) # y exp1 exp2 exp3 # 1 1 21 11 1 # 2 2 22 12 0 # 3 3 23 21 0 # 4 4 24 22 1 # 5 5 25 23 1 意味着对y ~ .中发现的所有其他内容进行回归y