【发布时间】: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