准备广义线性回归的数据

时间:2013-05-03 03:15:55

标签: r regression categorical-data

我想对R中的数据集glm执行Titanic。我执行了以下步骤来准备数据并运行glm:

install.packages("reshape")
library(reshape)
data=(Titanic)
da=melt(Titanic)

m=dim(da)[1]
for (i in 1:m){
    if (da[i,5]!=0){
        for (k in 1:da[i,5]){
            da=rbind(da,da[i,])
        }
    }
}

one=rep(1, dim(da)[1])
x=as.matrix(cbind(one,da[,1:3]))
y=da[,4]

m1=glm(y~x,family=binomial)

我收到了错误消息:

Error in `[[<-.data.frame`(`*tmp*`, i, value = c(1L, 1L, 1L, 1L, 1L, 1L,  : 
  replacement has 8932 rows, data has 2233

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

你的主要错误在公式的规范中:它的右边是x,这没有被翻译成“x的每一列的主要术语”:它只是将你的矩阵x变成一列(长度) 8932)并尝试将其用作预测器。

执行此类操作的最简单方法是确保所有感兴趣的列都在1 data.frame中。幸运的是,在你的情况下,你已经在da:

中有了这个
m1<-glm(Survived~Class+Sex+Age, data=da, family=binomial)

此外,默认情况下,glm会自动添加截距,因此您无需手动指定一列(如上所述)。