2017-03-12 325 views
1

我只是无法弄清楚我的代码出了什么问题。我装了一个逻辑回归模型与数据集:使用R逻辑回归模型进行预测的错误

outcome predictor 
1  0  -3 
2  0  -4 
3  1   0 
4  1  -1 
5  1   0 
6  0  -3 

我装了这种模式:

model <- glm(data$outcome~data$predictor, family = "binomial") 

       Estimate Std. Error z value  Pr(>|z|) 
(Intercept) -0.01437719 0.07516923 -0.1912644 8.483185e-01 
pvalue.us 0.19469804 0.03110934 6.2585081 3.886777e-10 

然后我想用这个载体才能做出预测:

test 
[1] -2 -5 0 -3 2 -3 

predict(model, newdata = test) 

而且我得到这个错误:

Error in eval(predvars, data, env) : 
    numeric 'envir' arg not of length one 

什么是错的?

回答

2

如果你想使用像predict()这样的函数,你不应该在你的模型中使用$ -indexing;改为使用data=参数,例如

model <- glm(outcome~predictor, data=your_data, family = "binomial") 

如果您在公式中使用$那么predict()功能实际上不会使用新的数据帧发现的变量。

使用给出的示例:

model <- glm(data$outcome~data$predictor, family = "binomial") 
predict(model,newdata=data.frame(predictor=1:6)) 
##   1   2   3   4   5   6 
## -23.48969 -46.57791 45.77497 22.68675 45.77497 -23.48969 
predict(model,newdata=data.frame(predictor=rep(0,6))) 
##   1   2   3   4   5   6 
## -23.48969 -46.57791 45.77497 22.68675 45.77497 -23.48969 

的结果是相同的,尽管使用不同的newdata(!)。如果您使用与原始数据集长度不同的newdata,则只会收到警告。

+0

不知道。删除了我的答案。 –

+0

谢谢你的回答,我也不知道。我尝试使用'data ='参数,但仍然得到相同的错误。请注意,它表示“arg不是长度一”,所以它要求一个单一的数字。 –

+0

您是否正确指定了您的数据? –