[英]Matthews Correlation Coefficient in Lasso model, logistic regression with R
[英]R Logistic regression and correlation
我在理解R中这种逻辑回归的输出时遇到了麻烦。
dat <- data.frame(
var1 = c(2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1,
1, 2, 1, 1, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2,
2, 1, 2, 1, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1,
2, 1, 2, 2, 2, 2, 2, 1),
outcome = c(1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0,
1, 0, 1, 1, 1, 0, 1, 0),
var2 = c(70, 86, 80, 88, 74, 75, 76, 82, 79, 80, 80, 79, 81, 79, 77,
75, 77, 75, 70, 65, 67, 86, 87, 70, 81, 66, 76, 62, 62, 73, 65,
66, 65, 85, 82, 76, 64, 68, 66, 83, 69, 73, 82, 65, 86, 74, 62,
68, 64, 81, 72, 74, 63, 63, 76, 79, 82, 73, 78, 70, 68, 72, 72,
60, 73, 73, 74, 86, 77, 81, 63, 79, 74, 76, 83, 85, 61, 83, 73,
71, 72, 59, 77, 73, 67, 80, 84, 77, 79, 73, 86, 75, 79, 78, 82,
80, 78, 58, 82, 74, 77, 78, 67, 68, 82, 72, 65, 85, 83, 69, 73,
78),
stringsAsFactors = FALSE)
fit <- glm(outcome ~ var1 + var2 ,
data = dat, family = "binomial")
summary(fit)
Call:
glm(formula = outcome ~ var1 + var2, family = "binomial", data = dat)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.61347 -0.00006 0.31030 0.41875 0.74162
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -47.79642 3650.08385 -0.013 0.990
var1 22.03545 1825.04048 0.012 0.990
var2 0.08264 0.05621 1.470 0.142
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 145.993 on 111 degrees of freedom
Residual deviance: 45.062 on 109 degrees of freedom
AIC: 51.062
Number of Fisher Scoring iterations: 18
从结果来看,var1具有非常高的p值,所以我的理解是,在预测“结果”方面的贡献很差。 但是,当我查看2之间的相关性时,它们是高度相关的。 反之亦然,var2的p值较低,但与“结果”的相关性不高
谁能解释,为什么? 这可能微不足道,但是我找不到答案。
cor(dat)
var1 outcome var2
var1 1.0000000 0.8671209 0.1029565
outcome 0.8671209 1.0000000 0.1587125
var2 0.1029565 0.1587125 1.0000000
如果您控制服务器,我建议创建一个Windows服务 - 完全从ASP.NET外部执行数据转换任务; 你不希望ASP.NET在40分钟的转换例程中途重启。
首先, 您的模型没有任何问题。 您没有告诉我们有关数据性质(似乎是为了演示而发明的)或模型目的的任何信息,因此在谈论“改进”模型时我没有任何意义。 听起来您将从更好地了解相关的预测变量如何影响回归模型中受益。
让我们从一个插图开始,让您对发生的事情有更好的感觉:考虑一种情况,您试图确定T恤颜色{红色,蓝色}和头发颜色{金发,深色}对体重的影响{0-100}。
首先,您观察到体重为50磅的红衫金发人,然后是体重为100磅的蓝衫黑发人。 请注意,在此示例中,头发的颜色和衬衫的颜色似乎完美相关。
仅根据数据 ,您将无法确定一件蓝色衬衫的增重效果是+50磅,还是黑发的增重效果是+50磅。 就模型而言, 衬衫颜色的效果可能没有效果(如果头发颜色是“原因”),或者+50(如果头发颜色没有真实效果)是完全负责的。
请注意,这个示例确实过分简化了 ,但是希望其本质是清楚的-当两个变量相关时, 很难分辨两个变量中哪个变量具有真正的效果 。 在模型中,这意味着方差增加-或两个变量的置信区间变大。
先前的两个答案都指出,仅使用Var1拟合模型会导致该模型得出结论,即Var1对结果产生重大影响。 但是,在完整模型中,您添加了第二个协变量Var2 ,该变量与Var1高度相关,结果模型很难判断两个变量中的哪个变量(如果有的话)对结果有重大影响。
需要指出的一件事是, 较大的模型(即使用var1和var2 )似乎比仅使用var1的模型更好地解释了结果。 请注意,较大模型(51.062)的AIC优于@Bernhard(55.045)拟合的较小模型。 这通常是正确的,因为将相关的预测变量添加到模型中并不一定会导致模型“较差”。 相反,它仅表示参数估计值将更难解释(即,当估计的效果与另一个变量高度相关时,您是否可以将估计的效果真正归因于相关变量?)
简而言之:您没有做错任何事; 您已经简单地证明了多重共线性会导致参数估计值的方差增加。 我要提醒您,您对p值的解释(“对预测“结果”的贡献不大”)是有问题的,并且可能是导致此结果令人困惑的原因之一。
有很多选项,基本上归结为你需要任何可以与之沟通的过程。 我能想到的选择是: 在另一个应用程序池下运行的Web服务; 一个Windows服务; 由ASP.NET代码启动的命令行进程。
接下来的问题是如何与其他流程进行通信。 如果您正在使用数据库,则可以设置两个进程都可以访问的公用表。 该网站将把工作请求放入第二个流程将监控的表中。 然后可以将第二个表用于结果,网站将监视该结果。 另一种选择是使用Windows Communication Foundation(WCF)或.NET远程处理等方法在进程之间发送事件。
首先,仅说明事实。 该模型在过度拟合的意义上是不好的,实际上没有一个预测指标是好的(重要的)。
关联仅反映两个对象之间的线性关联量,并不一定转化为以下事实:当关联变量与输出关联时,它将有助于将变量包括在逻辑回归中。
如果绘制“ var1”与“结果”以及“ var2”与“结果”的关系图,则可以看到在var2与结果的情况下没有线性关联,并且在“ var1”与“结果”的情况下存在一些“虚假”相关性。
假设您正在预测二进制数据,那么您的模型将使用“ var1”作为最差参数中的最佳值以进行过度拟合并给出最低的误差。
考虑改善模型。
这不是一个完整的答案,但可能会提供一些有助于您找到答案的见识。
查看您的数据, var1
应该很容易解释outcome
,主要是var1
自己:
plot(outcome ~ jitter(var1), data=dat)
但是,只要var1
只有1
和2
值, glm
不会得出“显着”的结果。 这以某种方式导致巨大的标准错误。 正如您在上图中所做的那样,在var1
添加一点抖动后,标准误差急剧下降,所有结果都非常显着
> summary(glm(outcome ~ jitter(var1), data=dat, family=binomial))
Call:
glm(formula = outcome ~ jitter(var1), family = binomial, data = dat)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.7033 -0.1286 0.2903 0.4610 0.7332
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -11.405 2.988 -3.818 0.000135 ***
jitter(var1) 6.982 1.586 4.402 1.07e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 145.993 on 111 degrees of freedom
Residual deviance: 51.045 on 110 degrees of freedom
AIC: 55.045
Number of Fisher Scoring iterations: 7
添加抖动会使残留偏差从47.29
增加到51.0
因此模型不是更好,只是标准误差较小。
对于为什么“完美”的var1
会导致这些巨大的标准错误,我没有定论的答案,但是显然,这是这里问题的一个非常明显的部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.