我认为这是一个相对简单的问题,但我似乎无法找到答案。
我有一个200 X 8矩阵temp
和一个响应矩阵(200X1)Binomial Vector
当我运行以下行时:
CLog=glm(BinomialVector~temp,family= binomial(logit))
我能够运行逻辑回归。我认为这样做的确是BinomialVector~tempcol1 +tempcol2+tempcol3
等等。
然而,当我按summary(CLog)
时,我的因素的名称已经改变。如果第一列被称为trees
,那么它的变化是temptrees
。有没有办法阻止这种情况?
根据要求:
BinomialVector
[,1]
[1,] 0
[2,] 1
[3,] 1
[4,] 0
[5,] 0
[6,] 0
[7,] 1
temp
Net.Income.Y06. Return.on.Assets.Y06.
A 0.1929241 27.947
AA 1.1405694 12.427
AAP 1.0302481 17.117
ABT 2.1006512 13.826
Return.on.Investment.Y06. Total.Current.Assets.Y06.
A 39.844 0.9274886
AA 20.003 0.8830403
AAP 30.927 1.0439536
ABT 21.376 1.2447154
Total.Current.Liabilities.Y06. IntersectionMostAdmired.2006.
A 1.0812744 0.000
AA 0.9842055 7.255
AAP 1.1010472 0.000
ABT 0.7617044 6.715
这就是我的临时矩阵的可能列。我不喜欢使用附加符号的原因是列的数量发生了变化,因为我在用户定义的函数中使用它,我在temp矩阵中输入它。至于使用数据框架,我的印象是数据框确实是正确使用的东西但是当它不是as.matrix时我似乎得到了一个错误。 :s
答案 0 :(得分:0)
您可以发布数据的代表性子集,还有实际输出glm为您提供该子集吗?
然后诊断/复制会更容易。
与此同时,我建议您使用数据框而不是矩阵。方法如下:
mydf<-data.frame(y=BinomialVector,temp);
CLog = glm(BinomialVector~tempcol1+tempcol2+tempcol3,data=mydf,family=binomial(logit));
矩阵是一种不好的格式,可用作回归模型的数据源(一方面,它们将所有列强制转换为相同的数据类型,这可能是也可能不是问题的一部分),所以我从不使用它们。但是如果我不得不猜测,你的模型可能会将矩阵转换成一个长向量?也许那里的某个变量有一个值“树”?但是如果没有示例数据和输出,那就完全是猜测了。当您运行上述命令时,问题的本质可能会在那里显现出来。
答案 1 :(得分:0)
使用数据框是可行的方法。首先,它将使得对新数据的预测变得更加容易;并且它还允许您使用名义预测变量(因子)而无需自己编写虚拟变量。如果预测变量的数量不固定,并且您希望在所有预测变量上拟合模型,请在公式中使用.
。
df <- data.frame(y=BinomialVector, temp)
glm(y ~ ., family=binomial, data=df)