逻辑回归 - 解决变量交互的多个模型
Logistic Regression - Multiple Models to Address Variable Interaction
我正在尝试开发一个模型,以使用逻辑回归预测结构火灾导致死亡的可能性。这是一个大约 1/100 的事件。
我面临的问题是在预测变量时似乎没有考虑变量之间的相互作用。
例如。考虑到整个数据集,冬季月份的火灾更加致命。然而,以电器为根本原因的火灾则没有这种趋势。下面是烹饪火灾与电器火灾的示例(我相信这些是每 1000 起火灾造成的死亡人数)。 x 轴是第 1 个月到第 12 个月。
当试图预测因电器引起的死亡概率时,我得到的数值在夏季下降而在冬季上升,尽管这种趋势显然不是上述电器火灾的情况。
我的问题是:
- 创建条件模型是否是一个很好的解决方案? IE。
对每个原因的数据进行子集化,并为每个原因创建一个单独的模型
子集。我担心的是这可能过于复杂而且我
确定它在某处违反了某些规则。
- 有没有比创建这些条件模型更好的解决方案?
- 会在这个逻辑之间创建一个集成模型(简单平均)
回归模型和随机森林模型是有效的解决方案吗?我的
随机森林模型的缺陷在于它们预测了太多情况
值为 100% 或 0%。
- 能否重写公式,使这些变量相互作用
被考虑在内?即
Fatality ~ month * Cause
- 奖励:关于解决此问题的任何其他建议。
我的训练数据如下:
> str(train_val)
'data.frame': 154178 obs. of 13 variables:
$ month : Factor w/ 12 levels "1","2","3","4",..: 4 7 7 8 8 11 7 10 6 3 ...
$ weekday : Factor w/ 7 levels "Friday","Monday",..: 3 7 2 5 4 3 6 1 5 3 ...
$ RT : num 420 480 300 360 600 420 120 240 420 120 ...
$ CAUSE_CODE: Factor w/ 16 levels "1","2","3","4",..: 6 5 1 7 13 15 16 13 9 15 ...
$ FIRST_IGN : Factor w/ 11 levels "00","10","12",..: 11 3 10 10 8 10 11 5 5 3 ...
$ AREA_ORIG : Factor w/ 11 levels "14","21","24",..: 10 10 10 4 3 1 5 10 6 6 ...
$ HEAT_SOURC: Factor w/ 11 levels "00","10","11",..: 11 2 11 2 2 11 11 11 10 11 ...
$ INC_TYPE : Factor w/ 7 levels "110","111","112",..: 2 2 2 2 2 2 2 2 2 2 ...
$ HUM_FAC_1 : Factor w/ 9 levels "0","1","2","3",..: 9 9 3 9 9 3 9 9 2 9 ...
$ ALARMS_YN : Factor w/ 3 levels "N","O","Y": 3 3 3 3 3 3 1 1 3 3 ...
$ losscat : Factor w/ 4 levels "Minor_Loss","Med_Loss",..: 1 3 1 2 1 1 4 2 2 1 ...
$ daycat : Factor w/ 5 levels "Aft-Noon","Evening",..: 1 5 1 5 2 4 2 4 5 5 ...
$ Fatality : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
模型公式及结果如下:
> summary(log.mod)
Call:
glm(formula = Fatality ~ ., family = binomial(link = logit),
data = train_val)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.6507 -0.1691 -0.0886 -0.0487 4.0763
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.060e+01 4.532e+03 -0.007 0.994612
month2 -4.069e-02 9.474e-02 -0.430 0.667545
month3 -1.077e-01 9.638e-02 -1.117 0.263997
month4 -3.045e-01 1.056e-01 -2.883 0.003945 **
month5 -4.459e-01 1.126e-01 -3.962 7.45e-05 ***
month6 -5.637e-01 1.191e-01 -4.734 2.20e-06 ***
month7 -5.853e-01 1.173e-01 -4.989 6.06e-07 ***
month8 -4.610e-01 1.160e-01 -3.976 7.02e-05 ***
month9 -5.055e-01 1.195e-01 -4.230 2.33e-05 ***
month10 -2.619e-01 1.073e-01 -2.440 0.014676 *
month11 -1.167e-01 9.830e-02 -1.187 0.235065
month12 -2.634e-01 1.021e-01 -2.579 0.009902 **
weekdayMonday -1.440e-01 9.117e-02 -1.580 0.114177
weekdaySaturday -4.038e-04 8.616e-02 -0.005 0.996261
weekdaySunday -5.934e-02 8.778e-02 -0.676 0.499077
weekdayThursday 1.360e-02 8.754e-02 0.155 0.876560
weekdayTuesday -6.722e-02 8.948e-02 -0.751 0.452512
weekdayWednesday -3.070e-02 8.843e-02 -0.347 0.728421
RT 1.994e-05 2.222e-05 0.898 0.369388
CAUSE_CODE2 -4.331e-01 3.336e-01 -1.298 0.194277
CAUSE_CODE3 7.813e-01 2.773e-01 2.817 0.004844 **
CAUSE_CODE4 -8.593e-02 1.808e-01 -0.475 0.634692
CAUSE_CODE5 5.543e-02 1.927e-01 0.288 0.773622
CAUSE_CODE6 5.294e-02 1.777e-01 0.298 0.765724
CAUSE_CODE7 -3.656e-01 2.201e-01 -1.661 0.096714 .
CAUSE_CODE8 -3.122e-01 1.874e-01 -1.666 0.095691 .
CAUSE_CODE9 9.558e-02 2.044e-01 0.468 0.639972
CAUSE_CODE10 1.818e-01 2.634e-01 0.690 0.490167
CAUSE_CODE11 -1.198e+00 3.951e-01 -3.031 0.002436 **
CAUSE_CODE12 -1.632e+00 4.607e-01 -3.542 0.000397 ***
CAUSE_CODE13 2.235e-01 1.162e-01 1.923 0.054482 .
CAUSE_CODE14 -4.895e-01 2.653e-01 -1.845 0.064979 .
CAUSE_CODE15 -2.877e-01 1.362e-01 -2.113 0.034595 *
CAUSE_CODE16 7.487e-01 1.373e-01 5.451 5.01e-08 ***
FIRST_IGN10 -6.033e-01 3.100e-01 -1.946 0.051673 .
FIRST_IGN12 -1.639e+00 4.875e-01 -3.362 0.000774 ***
FIRST_IGN15 -6.184e-01 2.788e-01 -2.218 0.026529 *
FIRST_IGN17 -5.808e-01 2.431e-01 -2.389 0.016911 *
FIRST_IGN18 -1.280e+01 1.068e+02 -0.120 0.904587
FIRST_IGN21 7.630e-01 2.049e-01 3.724 0.000196 ***
FIRST_IGN76 -5.524e-01 2.513e-01 -2.198 0.027916 *
FIRST_IGN81 -2.210e-01 2.618e-01 -0.844 0.398660
FIRST_IGNOther 7.508e-02 1.881e-01 0.399 0.689780
FIRST_IGNUU 2.367e-01 1.887e-01 1.254 0.209663
AREA_ORIG21 -5.657e-01 8.059e-02 -7.019 2.24e-12 ***
AREA_ORIG24 -7.024e-01 9.924e-02 -7.078 1.46e-12 ***
AREA_ORIG26 -1.923e+00 2.536e-01 -7.584 3.36e-14 ***
AREA_ORIG47 -2.114e+00 1.996e-01 -10.593 < 2e-16 ***
AREA_ORIG72 -1.795e+00 2.292e-01 -7.831 4.83e-15 ***
AREA_ORIG74 -2.271e+00 2.604e-01 -8.722 < 2e-16 ***
AREA_ORIG75 -1.454e+00 2.562e-01 -5.674 1.39e-08 ***
AREA_ORIG76 -2.450e+00 4.177e-01 -5.866 4.46e-09 ***
AREA_ORIGOther -9.926e-01 7.631e-02 -13.008 < 2e-16 ***
AREA_ORIGUU -1.067e+00 8.522e-02 -12.526 < 2e-16 ***
HEAT_SOURC10 -4.244e-01 1.972e-01 -2.152 0.031368 *
HEAT_SOURC11 -3.284e-01 2.533e-01 -1.296 0.194851
HEAT_SOURC12 -1.106e-01 1.834e-01 -0.603 0.546424
HEAT_SOURC13 -2.146e-01 2.053e-01 -1.045 0.295942
HEAT_SOURC40 -5.954e-01 2.675e-01 -2.226 0.026036 *
HEAT_SOURC43 -3.533e-01 2.753e-01 -1.283 0.199414
HEAT_SOURC60 4.204e-02 2.375e-01 0.177 0.859472
HEAT_SOURC61 -2.616e-02 3.182e-01 -0.082 0.934494
HEAT_SOURCOther -2.552e-01 1.827e-01 -1.397 0.162513
HEAT_SOURCUU -4.886e-02 1.550e-01 -0.315 0.752669
INC_TYPE111 1.325e+01 1.007e+03 0.013 0.989507
INC_TYPE112 1.268e+01 1.007e+03 0.013 0.989956
INC_TYPE120 1.333e+01 1.007e+03 0.013 0.989436
INC_TYPE121 1.305e+01 1.007e+03 0.013 0.989662
INC_TYPE122 1.331e+01 1.007e+03 0.013 0.989459
INC_TYPE123 -9.385e-01 1.375e+03 -0.001 0.999456
HUM_FAC_11 1.343e+01 4.419e+03 0.003 0.997575
HUM_FAC_12 1.338e+01 4.419e+03 0.003 0.997585
HUM_FAC_13 1.181e+01 4.419e+03 0.003 0.997867
HUM_FAC_14 1.365e+01 4.419e+03 0.003 0.997536
HUM_FAC_15 1.528e+01 4.419e+03 0.003 0.997241
HUM_FAC_16 1.271e+01 4.419e+03 0.003 0.997706
HUM_FAC_17 1.292e+01 4.419e+03 0.003 0.997667
HUM_FAC_1N 1.224e+01 4.419e+03 0.003 0.997790
ALARMS_YNO -1.552e-01 7.111e-02 -2.182 0.029104 *
ALARMS_YNY 3.230e-03 6.400e-02 0.050 0.959746
losscatMed_Loss 1.281e+00 1.012e-01 12.660 < 2e-16 ***
losscatMajor_Loss 1.910e+00 1.032e-01 18.500 < 2e-16 ***
losscatTotal_Loss 2.197e+00 1.003e-01 21.904 < 2e-16 ***
daycatEvening 2.340e-01 9.753e-02 2.400 0.016406 *
daycatMid-Day 3.360e-01 1.104e-01 3.044 0.002334 **
daycatMorning 7.029e-01 8.020e-02 8.764 < 2e-16 ***
daycatNight 6.102e-01 7.431e-02 8.211 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 20315 on 154177 degrees of freedom
Residual deviance: 16919 on 154091 degrees of freedom
AIC: 17093
Number of Fisher Scoring iterations: 17
我会非常小心你如何使用逻辑回归。将 "the kitchen sink" 投入模型通常会产生一些异常结果。我会首先考虑重要的不同变量,并且只使用那些提供一些相关信息的变量。拟合回归模型并不是将所有变量都放入并寻找坚持的东西,而是考虑哪些变量是重要的并使用一些 step-wise 方法来找到重要的协变量。这本身可以解决您提到的有关系数方向的问题。
对于因子变量,您始终可以对其进行重新编码,以便只处理重要因子。例如,您可以 month4-month9, other
而不是 month1-month12
。如果所有月份都不重要,则没有必要为每个月设置单独的系数。
就交互而言,是的,您当然可以指定与 month:cause
的交互。谨慎使用交互,您应该只在有意义的情况下添加交互。
我不建议使用条件模型,因为这会大大降低您的自由度。添加交互可以实现与条件模型相同的效果,但在单个模型中。
如果你知道你的模型是有效的,我真的只会使用集成模型。平均 2 个较差的模型不会提供更好的结果。
希望对您有所帮助!
我正在尝试开发一个模型,以使用逻辑回归预测结构火灾导致死亡的可能性。这是一个大约 1/100 的事件。
我面临的问题是在预测变量时似乎没有考虑变量之间的相互作用。
例如。考虑到整个数据集,冬季月份的火灾更加致命。然而,以电器为根本原因的火灾则没有这种趋势。下面是烹饪火灾与电器火灾的示例(我相信这些是每 1000 起火灾造成的死亡人数)。 x 轴是第 1 个月到第 12 个月。
当试图预测因电器引起的死亡概率时,我得到的数值在夏季下降而在冬季上升,尽管这种趋势显然不是上述电器火灾的情况。
我的问题是:
- 创建条件模型是否是一个很好的解决方案? IE。 对每个原因的数据进行子集化,并为每个原因创建一个单独的模型 子集。我担心的是这可能过于复杂而且我 确定它在某处违反了某些规则。
- 有没有比创建这些条件模型更好的解决方案?
- 会在这个逻辑之间创建一个集成模型(简单平均) 回归模型和随机森林模型是有效的解决方案吗?我的 随机森林模型的缺陷在于它们预测了太多情况 值为 100% 或 0%。
- 能否重写公式,使这些变量相互作用
被考虑在内?即
Fatality ~ month * Cause
- 奖励:关于解决此问题的任何其他建议。
我的训练数据如下:
> str(train_val)
'data.frame': 154178 obs. of 13 variables:
$ month : Factor w/ 12 levels "1","2","3","4",..: 4 7 7 8 8 11 7 10 6 3 ...
$ weekday : Factor w/ 7 levels "Friday","Monday",..: 3 7 2 5 4 3 6 1 5 3 ...
$ RT : num 420 480 300 360 600 420 120 240 420 120 ...
$ CAUSE_CODE: Factor w/ 16 levels "1","2","3","4",..: 6 5 1 7 13 15 16 13 9 15 ...
$ FIRST_IGN : Factor w/ 11 levels "00","10","12",..: 11 3 10 10 8 10 11 5 5 3 ...
$ AREA_ORIG : Factor w/ 11 levels "14","21","24",..: 10 10 10 4 3 1 5 10 6 6 ...
$ HEAT_SOURC: Factor w/ 11 levels "00","10","11",..: 11 2 11 2 2 11 11 11 10 11 ...
$ INC_TYPE : Factor w/ 7 levels "110","111","112",..: 2 2 2 2 2 2 2 2 2 2 ...
$ HUM_FAC_1 : Factor w/ 9 levels "0","1","2","3",..: 9 9 3 9 9 3 9 9 2 9 ...
$ ALARMS_YN : Factor w/ 3 levels "N","O","Y": 3 3 3 3 3 3 1 1 3 3 ...
$ losscat : Factor w/ 4 levels "Minor_Loss","Med_Loss",..: 1 3 1 2 1 1 4 2 2 1 ...
$ daycat : Factor w/ 5 levels "Aft-Noon","Evening",..: 1 5 1 5 2 4 2 4 5 5 ...
$ Fatality : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
模型公式及结果如下:
> summary(log.mod)
Call:
glm(formula = Fatality ~ ., family = binomial(link = logit),
data = train_val)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.6507 -0.1691 -0.0886 -0.0487 4.0763
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.060e+01 4.532e+03 -0.007 0.994612
month2 -4.069e-02 9.474e-02 -0.430 0.667545
month3 -1.077e-01 9.638e-02 -1.117 0.263997
month4 -3.045e-01 1.056e-01 -2.883 0.003945 **
month5 -4.459e-01 1.126e-01 -3.962 7.45e-05 ***
month6 -5.637e-01 1.191e-01 -4.734 2.20e-06 ***
month7 -5.853e-01 1.173e-01 -4.989 6.06e-07 ***
month8 -4.610e-01 1.160e-01 -3.976 7.02e-05 ***
month9 -5.055e-01 1.195e-01 -4.230 2.33e-05 ***
month10 -2.619e-01 1.073e-01 -2.440 0.014676 *
month11 -1.167e-01 9.830e-02 -1.187 0.235065
month12 -2.634e-01 1.021e-01 -2.579 0.009902 **
weekdayMonday -1.440e-01 9.117e-02 -1.580 0.114177
weekdaySaturday -4.038e-04 8.616e-02 -0.005 0.996261
weekdaySunday -5.934e-02 8.778e-02 -0.676 0.499077
weekdayThursday 1.360e-02 8.754e-02 0.155 0.876560
weekdayTuesday -6.722e-02 8.948e-02 -0.751 0.452512
weekdayWednesday -3.070e-02 8.843e-02 -0.347 0.728421
RT 1.994e-05 2.222e-05 0.898 0.369388
CAUSE_CODE2 -4.331e-01 3.336e-01 -1.298 0.194277
CAUSE_CODE3 7.813e-01 2.773e-01 2.817 0.004844 **
CAUSE_CODE4 -8.593e-02 1.808e-01 -0.475 0.634692
CAUSE_CODE5 5.543e-02 1.927e-01 0.288 0.773622
CAUSE_CODE6 5.294e-02 1.777e-01 0.298 0.765724
CAUSE_CODE7 -3.656e-01 2.201e-01 -1.661 0.096714 .
CAUSE_CODE8 -3.122e-01 1.874e-01 -1.666 0.095691 .
CAUSE_CODE9 9.558e-02 2.044e-01 0.468 0.639972
CAUSE_CODE10 1.818e-01 2.634e-01 0.690 0.490167
CAUSE_CODE11 -1.198e+00 3.951e-01 -3.031 0.002436 **
CAUSE_CODE12 -1.632e+00 4.607e-01 -3.542 0.000397 ***
CAUSE_CODE13 2.235e-01 1.162e-01 1.923 0.054482 .
CAUSE_CODE14 -4.895e-01 2.653e-01 -1.845 0.064979 .
CAUSE_CODE15 -2.877e-01 1.362e-01 -2.113 0.034595 *
CAUSE_CODE16 7.487e-01 1.373e-01 5.451 5.01e-08 ***
FIRST_IGN10 -6.033e-01 3.100e-01 -1.946 0.051673 .
FIRST_IGN12 -1.639e+00 4.875e-01 -3.362 0.000774 ***
FIRST_IGN15 -6.184e-01 2.788e-01 -2.218 0.026529 *
FIRST_IGN17 -5.808e-01 2.431e-01 -2.389 0.016911 *
FIRST_IGN18 -1.280e+01 1.068e+02 -0.120 0.904587
FIRST_IGN21 7.630e-01 2.049e-01 3.724 0.000196 ***
FIRST_IGN76 -5.524e-01 2.513e-01 -2.198 0.027916 *
FIRST_IGN81 -2.210e-01 2.618e-01 -0.844 0.398660
FIRST_IGNOther 7.508e-02 1.881e-01 0.399 0.689780
FIRST_IGNUU 2.367e-01 1.887e-01 1.254 0.209663
AREA_ORIG21 -5.657e-01 8.059e-02 -7.019 2.24e-12 ***
AREA_ORIG24 -7.024e-01 9.924e-02 -7.078 1.46e-12 ***
AREA_ORIG26 -1.923e+00 2.536e-01 -7.584 3.36e-14 ***
AREA_ORIG47 -2.114e+00 1.996e-01 -10.593 < 2e-16 ***
AREA_ORIG72 -1.795e+00 2.292e-01 -7.831 4.83e-15 ***
AREA_ORIG74 -2.271e+00 2.604e-01 -8.722 < 2e-16 ***
AREA_ORIG75 -1.454e+00 2.562e-01 -5.674 1.39e-08 ***
AREA_ORIG76 -2.450e+00 4.177e-01 -5.866 4.46e-09 ***
AREA_ORIGOther -9.926e-01 7.631e-02 -13.008 < 2e-16 ***
AREA_ORIGUU -1.067e+00 8.522e-02 -12.526 < 2e-16 ***
HEAT_SOURC10 -4.244e-01 1.972e-01 -2.152 0.031368 *
HEAT_SOURC11 -3.284e-01 2.533e-01 -1.296 0.194851
HEAT_SOURC12 -1.106e-01 1.834e-01 -0.603 0.546424
HEAT_SOURC13 -2.146e-01 2.053e-01 -1.045 0.295942
HEAT_SOURC40 -5.954e-01 2.675e-01 -2.226 0.026036 *
HEAT_SOURC43 -3.533e-01 2.753e-01 -1.283 0.199414
HEAT_SOURC60 4.204e-02 2.375e-01 0.177 0.859472
HEAT_SOURC61 -2.616e-02 3.182e-01 -0.082 0.934494
HEAT_SOURCOther -2.552e-01 1.827e-01 -1.397 0.162513
HEAT_SOURCUU -4.886e-02 1.550e-01 -0.315 0.752669
INC_TYPE111 1.325e+01 1.007e+03 0.013 0.989507
INC_TYPE112 1.268e+01 1.007e+03 0.013 0.989956
INC_TYPE120 1.333e+01 1.007e+03 0.013 0.989436
INC_TYPE121 1.305e+01 1.007e+03 0.013 0.989662
INC_TYPE122 1.331e+01 1.007e+03 0.013 0.989459
INC_TYPE123 -9.385e-01 1.375e+03 -0.001 0.999456
HUM_FAC_11 1.343e+01 4.419e+03 0.003 0.997575
HUM_FAC_12 1.338e+01 4.419e+03 0.003 0.997585
HUM_FAC_13 1.181e+01 4.419e+03 0.003 0.997867
HUM_FAC_14 1.365e+01 4.419e+03 0.003 0.997536
HUM_FAC_15 1.528e+01 4.419e+03 0.003 0.997241
HUM_FAC_16 1.271e+01 4.419e+03 0.003 0.997706
HUM_FAC_17 1.292e+01 4.419e+03 0.003 0.997667
HUM_FAC_1N 1.224e+01 4.419e+03 0.003 0.997790
ALARMS_YNO -1.552e-01 7.111e-02 -2.182 0.029104 *
ALARMS_YNY 3.230e-03 6.400e-02 0.050 0.959746
losscatMed_Loss 1.281e+00 1.012e-01 12.660 < 2e-16 ***
losscatMajor_Loss 1.910e+00 1.032e-01 18.500 < 2e-16 ***
losscatTotal_Loss 2.197e+00 1.003e-01 21.904 < 2e-16 ***
daycatEvening 2.340e-01 9.753e-02 2.400 0.016406 *
daycatMid-Day 3.360e-01 1.104e-01 3.044 0.002334 **
daycatMorning 7.029e-01 8.020e-02 8.764 < 2e-16 ***
daycatNight 6.102e-01 7.431e-02 8.211 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 20315 on 154177 degrees of freedom
Residual deviance: 16919 on 154091 degrees of freedom
AIC: 17093
Number of Fisher Scoring iterations: 17
我会非常小心你如何使用逻辑回归。将 "the kitchen sink" 投入模型通常会产生一些异常结果。我会首先考虑重要的不同变量,并且只使用那些提供一些相关信息的变量。拟合回归模型并不是将所有变量都放入并寻找坚持的东西,而是考虑哪些变量是重要的并使用一些 step-wise 方法来找到重要的协变量。这本身可以解决您提到的有关系数方向的问题。
对于因子变量,您始终可以对其进行重新编码,以便只处理重要因子。例如,您可以 month4-month9, other
而不是 month1-month12
。如果所有月份都不重要,则没有必要为每个月设置单独的系数。
就交互而言,是的,您当然可以指定与 month:cause
的交互。谨慎使用交互,您应该只在有意义的情况下添加交互。
我不建议使用条件模型,因为这会大大降低您的自由度。添加交互可以实现与条件模型相同的效果,但在单个模型中。
如果你知道你的模型是有效的,我真的只会使用集成模型。平均 2 个较差的模型不会提供更好的结果。
希望对您有所帮助!