【问题标题】:Formatting Categorical Variables for a linear regression为线性回归格式化分类变量
【发布时间】:2018-04-13 16:57:45
【问题描述】:

我正在尝试在 R 中构建线性回归模型。我正在将分类变量转换为数字以供模型使用。我想将过程的名称转换为数字,并使用以下代码行来执行此操作。它似乎工作成功。我也在使用一个名为 CAR 的库。

res$Procedure <- recode(res$Procedure, "'Primary Knee'='1'; 'Primary Hip'='2'; 'Revision Knee'='3'; 'Revision Knee'='4'; 
                          'Partial Knee'='5'; 'Revision Hip'='6'; 'Partial knee'='7'; 'Bilateral Hip'='8'; 
                          'Bilateral knee'='9'; 'Bilateral Knee'='9'; 'Resurfacing Hip'='10';'Resurfacing Hip '='10'; 'Revision knee'='3'")

然后我正在运行模型 -

lg1 = glm(BloodTransfusions~ Age+Hospital+Procedure+LenthOfStay,
      family=binomial(link=probit), data=res)

然后我正在查看我的模型的结果,这看起来有点奇怪。

summary(lg1)

|变量 | P 值 |

|年龄 | |

|医院 | |

|程序1 | |

|程序2 | |

|程序3 | |

基本上,该模型将我转换为数字的每个分类变量视为一个不同的变量,而不是一个连续的变量。有没有人有什么建议?或者我是不是走错了路。感谢您的帮助!

【问题讨论】:

  • 在我看来,您不能将您的类别重新编码为数值。例如,如果年龄等于 20 或 23,这是有道理的。但是,如果 'Primary Knee'='1' 和 'Primary Hip'='2',procedure = 1.5 是什么意思?
  • 如果你想用类别拟合线性回归模型,我认为你需要虚拟变量来完成这项工作。
  • 我注意到在你的重新编码数据中你有一个一致的'Revision Knee'='3'; 'Revision Knee'='4';(即修订膝盖是 3 和 4)。也许我错过了什么。
  • 那是来自dplyr 包的recode 吗?你确定你的代码有效吗?你可以像library(dplyr); x = c("A","B","A"); recode(x, A=1, B=2) 这样使用它来获取一个数值变量作为输出。

标签: r linear-regression


【解决方案1】:

您可以dummify your dataframe。这将在每个级别的分类变量中创建一个二元变量。

library("dummy")
res.dummy <- dummy(res)

然后在 glm 中使用res.dummy

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 2018-04-24
    • 2014-11-29
    • 2018-11-16
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多