Логистическая регрессия - несколько моделей для решения проблемы взаимодействия переменных

Я пытаюсь разработать модель, чтобы предсказать вероятность структурного пожара, приводящего к летальному исходу, используя логистическую регрессию. Это около 1/100 события.

Проблема, с которой я сталкиваюсь, заключается в том, что взаимодействие между переменными не учитывается при прогнозировании переменных.

Например. Принимая во внимание весь набор данных, пожары более смертоносны в зимние месяцы. Тем не менее, пожары, где приборы были основной причиной, не имеют такой тенденции. Ниже приведен пример приготовления пищи и пожаров на приборах (я считаю, что это число погибших на 1000 пожаров). Ось X - месяцы с 1 по 12.

https://i.imgur.com/nTnnfg6.png?1

Пытаясь предсказать вероятность смертельного исхода, когда причиной были устройства, я получаю уменьшающиеся значения летом и увеличивающиеся значения зимой, несмотря на то, что эта тенденция явно не относится к пожарам устройств, как указано выше.

Мои вопросы:

  1. Будет ли создание условных моделей хорошим решением для этого? т.е. подмножество данных для каждой причины и создание отдельной модели для каждого подмножества. Меня беспокоит то, что это, вероятно, слишком сложно, и я уверен, что это где-то нарушает какое-то правило.
  2. Есть ли лучшее решение, чем создание этих условных моделей?
  3. Будет ли создание ансамблевой модели (простого среднего) между этой моделью логистической регрессии и моделью случайного леса правильным решением? Мои модели случайных лесов были ошибочными в том, что они предсказывали слишком много случаев, когда значения были 100% или 0%.
  4. Можно ли переписать формулу таким образом, чтобы эти переменные взаимодействия учитывались? т.е. Fatality ~ month * Cause
  5. Бонус: Любой другой совет по решению этой проблемы.

Мои данные о тренировках таковы:

> 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

1 ответ

Решение

Я был бы очень осторожен с тем, как вы используете логистическую регрессию. Вбрасывание "кухонной раковины" в модель обычно дает некоторые ненормальные результаты. Я хотел бы начать с размышлений о различных важных переменных и работать только с теми, которые предоставляют некоторую соответствующую информацию. Подгонка регрессионной модели заключается не в том, чтобы бросить все переменные и искать какие-то "палки", а в том, чтобы подумать о том, какие переменные важны, и использовать какой-то пошаговый метод для поиска важных ковариат. Это само по себе может решить ваши проблемы, о которых вы упоминали в отношении коэффициента направления.

Для факторных переменных вы всегда можете перекодировать их, чтобы вы работали только со значительными факторами. Например, вместо month1-month12Вы могли бы иметь, month4-month9, other, Наличие отдельных коэффициентов для каждого месяца не является необходимым, если все месяцы не являются значимыми.

С точки зрения взаимодействия, да, конечно, вы можете указать взаимодействия с month:cause, Используйте взаимодействия с осторожностью, вы должны добавлять взаимодействия, только если это имеет смысл.

Я бы не рекомендовал использовать условные модели, поскольку это значительно снизит ваши степени свободы. А добавление взаимодействий может дать тот же эффект, что и условные модели, но в одной модели.

Я действительно использовал бы ансамблевую модель, только если вы знаете, что ваши модели действительны. Усреднение 2 плохих моделей не даст лучших результатов.

Надеюсь, это поможет!

Другие вопросы по тегам