如何减少R中逻辑回归模型中的分类变量
Posted
技术标签:
【中文标题】如何减少R中逻辑回归模型中的分类变量【英文标题】:How to reduce a categorical variable in a logistic regression model in R 【发布时间】:2020-07-16 08:24:59 【问题描述】:我为各种品牌和型号的汽车创建了一个关于 mpg 的逻辑回归公式。 一个变量“原产地”是整数:1=美国,2=德国,3=日本。 我把它转换成 origin.factor
head(origin.factor) [1] 美国 美国 美国 美国 美国 [6] 美国 级别:美式德语日语
首先,有人建议我使用 as.factor 将 "origin" 转换为 factor 并重新标记,但我没有看到如何使用 as 传递 label=c("American", "German", "Japanese")。因素。 有什么想法吗?
接下来,包含所有变量的初始 Logistic 模型产生了这个输出(抱歉,这篇文章中的列没有对齐,但最后一列是每个变量的粗体 p 值):
auto.mpg.logistic
调用: glm(公式 = mpg.binary ~ 气缸 + 排量 + 马力 + 重量 + 加速度 + 年份 + origin.factor, family = "binomial")
偏差残差: 最小值 1Q 中值 3Q 最大值 -2.44937 -0.08809 0.00577 0.19315 3.03363
系数: 估计标准。误差 z 值 Pr(>|z|) (截取) -19.450793 5.956353 -3.266 0.00109 **
气缸 -0.264169 0.439645 -0.601 0.54793 位移 0.015568 0.013658 1.140 0.25434 马力 -0.043081 0.024621 -1.750 0.08017 . 重量 -0.005762 0.001376 -4.187 2.83e-05 ***
加速度 0.012939 0.142921 0.091 0.92786 年 0.495635 0.086155 5.753 8.78e-09 ***
origin.factorGerman 1.971277 0.785573 2.509 0.01210 *
origin.factorJapanese 1.102741 0.713768 1.545 0.12236
意义。代码:0''0.001''0.01''0.05'.'0.1''1
接下来,我继续删除 p 值 > 0.05 显着性水平的变量,以得到以下输出:
auto.mpg.logistic
调用: glm(公式 = mpg.binary ~ 马力 + 重量 + 年份 + origin.factor, 家庭=“二项式”)
偏差残差: 最小值 1Q 中值 3Q 最大值 -2.2675 -0.0943 0.0080 0.2007 3.2653
系数: 估计标准。误差 z 值 Pr(>|z|) (截取)-18.240055 4.912407 -3.713 0.000205 ***
马力 -0.042209 0.016441 -2.567 0.010251 *
重量 -0.004607 0.000734 -6.276 3.47e-10 ***
年 0.457663 0.075997 6.022 1.72e-09 ***
origin.factorGerman 1.335225 0.529879 2.520 0.011740 *
origin.factorJapanese 0.628677 0.580123 1.084 0.278500
意义。代码:0''0.001''0.01''0.05'.'0.1''1
现在唯一仍然高于 0.05 显着性水平的变量是 origin.factorJapanese
所以问题是,我可以以某种方式仅删除 origin.factorJapanese 并留在 Origin.factorGerman 中,因为它很重要吗?
或者是删除 origin.factor 的适当操作,这将从我的逻辑模型中消除此分类变量的所有方面(这似乎是我唯一的选择...)?
我是 R 新手,主要根据我们的课堂作业使用基本 R 函数,因此请在您的回答中考虑这一点。 谢谢,
约翰
【问题讨论】:
【参考方案1】:这实际上是关于统计的,而不是关于 R。你有一个模型,它有一堆连续的解释变量(horsepower
、weight
、year
)和一个单一的因素origin.factor
。您正在拟合的模型是 平行线 模型。也就是说,对于origin.factor
的每个级别,您都在拟合一个超平面(但如果有帮助,请将其视为一条线),每个原产国都有不同的截距。
R 使用Intercept
来拟合你的因子的基本水平,剩下的因子水平实际上是基本水平和水平之间的差异。因此,回归汇总表告诉您德国汽车与美国汽车不同(American
是基础,因为它按字母顺序排在第一位,这是 R 默认处理因素的方式),但日本汽车不是。请注意,它没有告诉您关于德国车和日本车之间的区别。
因此,您有一些证据表明因素的水平之间存在差异,但不是全部。你真的不想尝试在没有日语水平的情况下拟合模型(你可能会,但不是出于你认为的原因)。
【讨论】:
嗨詹姆斯。感谢您的答复。您的回答确实有道理,并证实了我的想法,即 level = American 的 Origin 变量包含在回归模型的基本水平估计中。如果我删除 Origin,我会从基本级别中删除除德语和日语之外的“美国”组件,这是不可取的。那么,当 Origin.factorJapanese 的 p 值高于 alpha 值时,我如何证明将 Origin.factorJapanese 留在模型中是合理的? 把它想象成在图表上绘制一组平行线。其中一些将相距足够远以“具有统计意义” - 即我们真的相信有足够的证据表明截距是不同的。日本的和美国的差别不大,说明我们没有足够的证据证明它们不同,所以可以认为是相同的。如果您真的担心,您可以将日文重新编码为美文并重新调整模型,但我不会打扰。以上是关于如何减少R中逻辑回归模型中的分类变量的主要内容,如果未能解决你的问题,请参考以下文章