0

我有一个我认为是一个相对简单的问题,但我似乎找不到答案。

当我运行以下行时,我有一个 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

这就是我的临时矩阵的可能列的样子。我不喜欢使用这种加法表示法的原因是列数发生了变化,因为我在用户定义的函数中使用它,我在临时矩阵中将它提供给它。至于使用数据框,我的印象是数据框确实是正确使用的东西,但是当它不是 as.matrix 时,我似乎得到了一个错误。:秒

4

2 回答 2

0

您能否发布数据的代表性子集,以及 glm 为该子集提供的实际输出?

然后将更容易诊断/复制。

同时,我建议您使用数据框而不是矩阵。方法如下:

mydf<-data.frame(y=BinomialVector,temp);
CLog = glm(BinomialVector~tempcol1+tempcol2+tempcol3,data=mydf,family=binomial(logit));

矩阵作为回归模型的数据源是一种不好的格式(一方面,它们将所有列强制为相同的数据类型,这可能是问题的一部分,也可能不是问题的一部分),所以我从不使用它们。但如果我不得不猜测,您的模型可能会将矩阵转换为一个长向量?也许那里的某个地方有一个变量,其值为“树”?但是没有示例数据和输出,这一切都是猜测。当您运行上述命令时,问题的性质很可能会在那里显露出来。

于 2013-08-13T23:11:05.610 回答
0

使用数据框是要走的路。一方面,它将使对新数据的预测变得更加容易;它还可以让您使用名义预测变量(因子),而无需自己编写虚拟变量。如果预测变量的数量不固定,并且您想在所有预测变量上拟合模型,.请在公式中使用。

df <- data.frame(y=BinomialVector, temp)
glm(y ~ ., family=binomial, data=df)
于 2013-08-14T06:48:14.880 回答