2017-03-09 180 views
0

我想运行一个简单的多变量逻辑回归。我在下面用二进制数据举例说明了一个例子。R中的多元逻辑回归

多元回归=试图预测2+结果变量

> y = matrix(c(0,0,0,1,1,1,1,1,1,0,0,0), nrow=6,ncol=2) 

> x = matrix(c(1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1), nrow=6,ncol=6) 
> x 
    [,1] [,2] [,3] [,4] [,5] [,6] 
[1,] 1 1 1 1 1 1 
[2,] 0 1 1 1 1 1 
[3,] 0 0 1 1 1 1 
[4,] 0 0 0 1 1 1 
[5,] 0 0 0 0 1 1 
[6,] 0 0 0 0 0 1 
> y 
    [,1] [,2] 
[1,] 0 1 
[2,] 0 1 
[3,] 0 1 
[4,] 1 0 
[5,] 1 0 
[6,] 1 0 

所以,变量 “x” 具有6个样品和每个样本具有6个属性。变量“y”对6个样本中的每一个都有2个预测。我特别想使用二进制数据。

> fit = glm(y~x-1, family = binomial(logit)) 

我做“-1”来消除截距系数。其他一切都是多变量情况下的标准逻辑回归。

> fit 

Call: glm(formula = y ~ x - 1, family = binomial(logit)) 

Coefficients: 
data1 data2 data3 data4 data5 data6 
    0.00 0.00 -49.13 0.00 0.00 24.57 

Degrees of Freedom: 6 Total (i.e. Null); 0 Residual 
Null Deviance:  8.318 
Residual Deviance: 2.572e-10 AIC: 12 

在这一点上,事情开始关头。我不确定为什么数据3和6的互联网就是这样。

val <- predict(fit,data.frame(c(1,1,1,1,1,1)), type = "response") 

> val 
     1   2   3   4   5   6 
2.143345e-11 2.143345e-11 2.143345e-11 1.000000e+00 1.000000e+00 1.000000e+00 

从逻辑上说,我做错了什么。我期待1x2矩阵,而不是1x6。我想要矩阵告诉我在y1和y2中数据帧向量是“1”(真)的概率。

任何帮助,将不胜感激。

注意:我根据Mario的回复更新了我的问题的结尾。

回答

0

参数newdata需要是data.frame。你可以这样做:

aux <- data.frame(c(1,1,1,1,1,1)) 
val <- predict(fit, aux, type = "response") 
+0

首先,你是对的,我需要在“预测”函数中输入一个数据帧类型对象。其次,“val”的输出值是1x6矩阵。我试图得到一个1x2矩阵,告诉我在y1和y2中向量[1,1,1,1,1,1]为“1”(真)的概率。 – logic8

+0

它有可能使一个模型的目标将是y1和其他目标将是y2并连接输出? – Mario

+0

我明白你在说什么了。我认为在多因素逻辑回归可以发现的因变量之间存在某种相关因子,如果您有50-100个因变量,连接输出的运行时间会长得多。 – logic8