线性模型(lm),因变量是因子/分类变量

时间:2014-03-05 09:00:50

标签: r lm r-factor

我想用lm函数进行线性回归(或者另一个函数,如果有效)。我的因变量是一个名为AccountStatus的因子:

拖欠1:0天,拖欠2:30-60天,拖欠3:60-90天,拖欠4:90天。 (4)

作为独立变量,我有几个数字变量:贷款到价值,债务到收入和利率。

是否可以使用这些变量进行线性回归?我在互联网上看到了一些关于假人的东西,但这些都是为了自变量。

这不起作用:

fit <- lm(factor(AccountStatus) ~ OriginalLoanToValue, data=mydata)
summary(fit)

3 个答案:

答案 0 :(得分:9)

线性回归不对依赖部分采用分类变量,它必须是连续的。考虑到您的AccountStatus变量只有四个级别,将其视为连续是不可行的。在开始任何统计分析之前,应该知道一个变量的measurement levels

您可以使用多项逻辑回归,例如,请参阅here。或者,您可以将AccountStatus重新编码为二分法并使用简单的逻辑回归。

很抱歉让你失望,但这只是多元回归的固有限制,与R无关。如果您想了解更多关于哪种统计技术适用于依赖变量和自变量的不同测量水平组合,我可以全心全意地建议this book

答案 1 :(得分:2)

稍微扩展@MaximK 的回答:多项 方法适用于当因子水平无序时:但是,在您的情况下,当测量水平为序数(即有序,但水平之间的距离未知/未定义),您可以通过执行ordinal regression从数据中获得更多,例如使用 polr() 包中的 MASS 函数或 ordinal 包中的函数。但是,由于序数回归具有与简单线性回归不同/更复杂的基础理论,您可能应该阅读更多相关内容(例如,在上面链接的维基百科文章中,或在 ordinal 包的小插图中,或在 { {3}},或浏览相关的 UCLA stats consulting page on ordinal regression

答案 2 :(得分:0)

如果您可以为变量提供数值,那么您可能有一个解决方案。您必须将值重命名为数字,然后将变量转换为数字变量。方法如下:

library(plyr)
my.data2$islamic_leviathan_score <- revalue(my.data2$islamic_leviathan,
               c("(1) Very Suitable"="3", "(2) Suitable"="2", "(3) Somewhat Suitable"="1", "(4) Not Suitable At All"="-1"))

my.data2$islamic_leviathan_score_1 <- as.numeric(as.character(my.data2$islamic_leviathan_score))

这会在将变量转换为数字变量时重新评估潜在值。当变量作为因子变量时,我得到的结果与数据集中包含的原始值一致。您可以使用此解决方案将变量的名称更改为您可能喜欢的任何名称,同时将它们转换为数字变量。

最后,这是值得做的,因为它允许您绘制直方图或回归,这是因子变量无法做到的。

希望这有帮助!