r - .L, .Q., .C, .4… 的逻辑回归解释
问题描述
我已经进行了大量的谷歌搜索,这些解释要么没有任何意义,要么他们说只使用因子而不是序数数据。我知道``.L is linear,
.Q' 是二次的,......等等。但我不知道如何真正说出它的含义。所以例如让我们说
Primary.L 7.73502 0.984
Primary.Q 6.81674 0.400
Primary.C -4.07055 0.450
Primary^4 1.48845 0.600
其中第一列是变量,第二列是估计值,第三列是 p 值。当变量按顺序增加时,我会说些什么?这基本上是在说我会使用什么模型,所以这就是模型7.73502x + 6.81674x^2 - 4.07055x^3
的样子吗?还是只包括二次?这一切都太令人困惑了。如果有人能阐明如何解释这些.L
, .Q
,.C
等,那就太好了。
例子
> summary(glm(DEPENDENT ~ Year, data = HAVE, family = "binomial"))
Call:
glm(formula = DEPENDENT ~ Year, family = "binomial", data = HAVE)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.3376 -0.2490 -0.2155 -0.1635 3.1802
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.572966 0.028179 -126.798 < 2e-16 ***
Year.L -2.212443 0.150295 -14.721 < 2e-16 ***
Year.Q -0.932844 0.162011 -5.758 8.52e-09 ***
Year.C 0.187344 0.156462 1.197 0.2312
Year^4 -0.595352 0.147113 -4.047 5.19e-05 ***
Year^5 -0.027306 0.135214 -0.202 0.8400
Year^6 -0.023756 0.120969 -0.196 0.8443
Year^7 0.079723 0.111786 0.713 0.4757
Year^8 -0.080749 0.103615 -0.779 0.4358
Year^9 -0.117472 0.098423 -1.194 0.2327
Year^10 -0.134956 0.095098 -1.419 0.1559
Year^11 -0.106700 0.089791 -1.188 0.2347
Year^12 0.102289 0.088613 1.154 0.2484
Year^13 0.125736 0.084283 1.492 0.1357
Year^14 -0.009941 0.084058 -0.118 0.9059
Year^15 -0.173013 0.088781 -1.949 0.0513 .
Year^16 -0.146597 0.090398 -1.622 0.1049
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 18687 on 80083 degrees of freedom
Residual deviance: 18120 on 80067 degrees of freedom
AIC: 18154
Number of Fisher Scoring iterations: 7
解决方案
该输出表明您的预测变量Year
是“有序因子”,这意味着 R 不仅将变量内的观察结果理解为不同的类别或组(即一个因子),而且在考虑一个类别的情况下,各种类别对它们具有自然顺序比另一个大。
在这种情况下,R 的默认设置是拟合一系列多项式函数或对比变量的水平。第一个是线性 (.L),第二个是二次 (.Q),第三个是三次 (.C),依此类推。R 将拟合的多项式函数比可用级别的数量少一个。因此,您的输出表明您的数据中有 17 个不同的年份。
您可能可以将输出中的这 17 个(计算截距)预测变量视为全新的变量,所有变量都基于原始变量的顺序,因为 R 使用特殊值创建它们,这些值使所有新预测变量正交(即不相关,线性独立,或不相关)彼此。
查看使用的值的一种方法是model.matrix()
在模型对象上使用该函数。
model.matrix(glm(DEPENDENT ~ Year, data = HAVE, family = "binomial"))
如果您运行上述操作,您会在每个新变量列中发现一堆重复的数字,其中重复的变化对应于您的原始Year
预测器切换类别的位置。具体值本身对您没有真正意义,因为它们是由 R 选择/计算的,以使所有对比彼此线性独立。
因此,您在 R 输出中的模型将是:
logit(p) = -3.57 + -2.21 * Year.L + -0.93 * Year.Q + ... + -0.15 * Year^16
其中 p 是感兴趣特征存在的概率,logit 转换定义为对数赔率,其中赔率 = p / (1 - p) 和对数赔率 = ln(odds)。因此 logit(p) = ln(p / (1 - p))。
然后将特定 beta 测试的解释概括为:哪些对比对解释因变量中水平之间的任何差异有显着贡献?因为您的Year.L
预测变量显着且为负,这表明多年来 logit 呈线性下降趋势,并且由于您的Year.Q
预测变量显着且为负,这表明在不同年份的 logit 模式中可以检测到减速趋势。三阶多项式模型jerk和四阶多项式模型jounce(又名 snap)。但是,我会停止围绕这个甚至更高的顺序进行解释,因为它很快对实际的人来说变得毫无意义。
同样,解释特定的 beta 估计值对我来说有点荒谬,但与在特定对比度(例如二次)的给定水平下切换结果中的类别的几率相比,在您在该对比度的给定水平(例如,二次)减去一个单位的结果等于通过对 beta 估计取幂得到的优势比。对于您示例中的二次对比,优势比exp(-0.9328)
= 0.3935,但我说这有点荒谬,因为这些单位几乎没有实际意义,因为它们是由 R 选择的,以使预测变量彼此线性独立。因此,我更喜欢关注给定对比度测试的解释,而不是这种情况下的系数。
为了进一步阅读,这里是 UCLA 精彩的 IDRE 的一个网页,讨论了如何解释逻辑回归中的优势比,这里是一个疯狂酷但激烈的堆栈交换答案,介绍了 R 如何选择多项式对比权重。
推荐阅读
- python - 关于 python 中的 raw_input.split() 函数
- reactjs - 如何使用 react-redux 显示所有用户的列表?
- python - 在 lambda 中运行 os.system 模块时遇到“sh: php: command not found”错误
- python - 检测多维数据中的空隙
- java - 请求用户权限对话框语言基于 Android System Locale 而不是 APP Locale
- swift - 类型没有成员下标,在带有 CoreData 的 SwiftUI 中
- javascript - 如何通过javascript在asp中的数据列表中获取项目文本值
- c++ - 有没有办法使用 C++ 中的继承方法修改子类的私有变量?
- c++ - using size_t inside for loop throwing error "std::length_error"
- php - 致命错误:允许的内存大小为 536870912 字节已用尽(尝试分配 262144 字节)