6

我有一个数据集,由存储在 csv 文件中的二分因变量 ( Y) 和 12 个自变量 ( X1to ) 组成。X12以下是数据的前 5 行:

Y,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12  
0,9,3.86,111,126,14,13,1,7,7,0,M,46-50  
1,7074,3.88,232,4654,143,349,2,27,18,6,M,25-30  
1,5120,27.45,97,2924,298,324,3,56,21,0,M,31-35
1,18656,79.32,408,1648,303,8730,286,294,62,28,M,25-30
0,3869,21.23,260,2164,550,320,3,42,203,3,F,18-24

我使用以下代码从数据中构建了一个逻辑回归模型:

mydata <- read.csv("data.csv")     
mylogit <- glm(Y~X1+X2+X3+X4+X5+X6+X7+X8+X9+X10+X11+X12, data=mydata, 
               family="binomial")  
mysteps <- step(mylogit, Y~X1+X2+X3+X4+X5+X6+X7+X8+X9+X10+X11+X12, data=mydata, 
                family="binomial")

我可以使用以下代码获得每个数据的预测概率:

theProbs <- fitted(mysteps)

现在,我想创建一个分类表 - 使用数据表 ( mydata) 的前 20 行 - 我可以从中确定与数据实际一致的预测概率的百分比。请注意,对于因变量 ( Y),0 表示小于 0.5 的概率,1 表示大于 0.5 的概率。

我花了很多时间试图构建分类但没有成功。如果有人建议可以帮助解决此问题的代码,我将不胜感激。

4

2 回答 2

9

问题有点老了,但我想如果有人正在查看档案,这可能会有所帮助。这很容易通过 xtabs 完成

classDF <- data.frame(response = mydata$Y, predicted = round(fitted(mysteps),0))

xtabs(~ predicted + response, data = classDF)

这将产生一个像这样的表:

           response
predicted   0   1
        0 339 126
        1 130 394
于 2014-09-02T20:46:50.973 回答
1

我认为'round'可以在这里完成工作。
表(圆形(theProbs))

于 2013-09-21T01:39:44.867 回答