D'énormes coefficients de régression logistique - qu'est-ce que cela signifie et que faire?

9

J'obtiens d'énormes coefficients lors de la régression logistique, voir les coefficients avec krajULKV:

> summary(m5)

Call:
glm(formula = cbind(ml, ad) ~ rok + obdobi + kraj + resid_usili2 + 
    rok:obdobi + rok:kraj + obdobi:kraj + kraj:resid_usili2 + 
    rok:obdobi:kraj, family = "quasibinomial")

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.7796  -1.0958  -0.3101   1.0034   2.8370  

Coefficients:
                              Estimate     Std. Error t value Pr(>|t|)   
(Intercept)                 -486.72087      664.71911  -0.732  0.46424   
rok                            0.24232        0.33114   0.732  0.46452   
obdobinehn                  3400.43703     1354.14874   2.511  0.01223 * 
krajJHC                      786.22409      708.50291   1.110  0.26746   
krajJHM                      511.85538      823.03038   0.622  0.53417   
krajLBK                      -23.94180     2388.86316  -0.010  0.99201   
krajMSK                     1281.88767      955.09736   1.342  0.17992   
krajOLK                     -175.19425     1255.82946  -0.140  0.88909   
krajPAK                      349.76438     1071.03364   0.327  0.74408   
krajPLK                    -1335.73206     1534.09899  -0.871  0.38418   
krajSTC                      868.99157      692.30426   1.255  0.20976   
krajULKV                  245661.86828 17496742.31677   0.014  0.98880   
krajVYS                     3341.76686     1314.77140   2.542  0.01121 * 
krajZLK                     3950.75617     2922.25220   1.352  0.17676   
resid_usili2                  -1.44719        0.89315  -1.620  0.10555   
rok:obdobinehn                -1.69479        0.67462  -2.512  0.01219 * 
rok:krajJHC                   -0.39108        0.35295  -1.108  0.26817   
rok:krajJHM                   -0.25481        0.40997  -0.622  0.53443   
rok:krajLBK                    0.01621        1.19155   0.014  0.98915   
rok:krajMSK                   -0.63985        0.47592  -1.344  0.17917   
rok:krajOLK                    0.08714        0.62545   0.139  0.88923   
rok:krajPAK                   -0.17419        0.53344  -0.327  0.74410   
rok:krajPLK                    0.66539        0.76383   0.871  0.38394   
rok:krajSTC                   -0.43292        0.34490  -1.255  0.20976   
rok:krajULKV                -122.01076     8704.03367  -0.014  0.98882   
rok:krajVYS                   -1.66391        0.65468  -2.542  0.01122 * 
rok:krajZLK                   -1.96718        1.45474  -1.352  0.17667   
obdobinehn:krajJHC         -3623.86807     1385.86009  -2.615  0.00909 **
obdobinehn:krajJHM         -3220.08906     1458.83842  -2.207  0.02757 * 
obdobinehn:krajLBK         -1051.07131     3434.11845  -0.306  0.75963   
obdobinehn:krajMSK         -6415.65781     1978.30260  -3.243  0.00123 **
obdobinehn:krajOLK         -2427.66591     1777.51914  -1.366  0.17239   
obdobinehn:krajPAK         -3111.45312     1623.59145  -1.916  0.05566 . 
obdobinehn:krajPLK         -1800.26258     2065.74461  -0.871  0.38375   
obdobinehn:krajSTC         -4409.45624     1379.64196  -3.196  0.00145 **
obdobinehn:krajULKV      -187832.68360 16454272.74951  -0.011  0.99089   
obdobinehn:krajVYS         -5445.51446     1791.38012  -3.040  0.00244 **
obdobinehn:krajZLK         -6216.43343     3167.49836  -1.963  0.05003 . 
krajJHC:resid_usili2           1.60474        0.98554   1.628  0.10385   
krajJHM:resid_usili2           1.57822        1.04518   1.510  0.13143   
krajLBK:resid_usili2          11.53462       13.40012   0.861  0.38961   
krajMSK:resid_usili2          -1.33600        1.55241  -0.861  0.38971   
krajOLK:resid_usili2           0.07296        1.27034   0.057  0.95421   
krajPAK:resid_usili2           1.35880        1.23033   1.104  0.26974   
krajPLK:resid_usili2           1.90189        1.41163   1.347  0.17826   
krajSTC:resid_usili2           2.05237        0.95972   2.139  0.03277 * 
krajULKV:resid_usili2        599.79215    20568.86123   0.029  0.97674   
krajVYS:resid_usili2           3.03834        1.16464   2.609  0.00925 **
krajZLK:resid_usili2           1.18574        1.11024   1.068  0.28583   
rok:obdobinehn:krajJHC         1.80611        0.69042   2.616  0.00906 **
rok:obdobinehn:krajJHM         1.60475        0.72676   2.208  0.02751 * 
rok:obdobinehn:krajLBK         0.52268        1.71244   0.305  0.76027   
rok:obdobinehn:krajMSK         3.19712        0.98564   3.244  0.00123 **
rok:obdobinehn:krajOLK         1.21012        0.88541   1.367  0.17208   
rok:obdobinehn:krajPAK         1.55034        0.80886   1.917  0.05563 . 
rok:obdobinehn:krajPLK         0.89718        1.02893   0.872  0.38349   
rok:obdobinehn:krajSTC         2.19742        0.68732   3.197  0.00144 **
rok:obdobinehn:krajULKV       93.43130     8189.24994   0.011  0.99090   
rok:obdobinehn:krajVYS         2.71357        0.89236   3.041  0.00243 **
rok:obdobinehn:krajZLK         3.09624        1.57711   1.963  0.04996 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for quasibinomial family taken to be 1.258421)

    Null deviance: 1518.0  on 878  degrees of freedom
Residual deviance: 1228.6  on 819  degrees of freedom
  (465 observations deleted due to missingness)
AIC: NA

Number of Fisher Scoring iterations: 18

Qu'est-ce que ça veut dire?? Cela signifie-t-il une certaine multicolinéarité, comme @Scortchi mentionné dans cette discussion ? Ou cela signifie-t-il un sur-ajustement? Comment détecter le problème? Qu'est-ce que je devrais faire maintenant?

J'ai essayé de supprimer certaines variables. Cela aide un peu mais pas tellement:

> m6 <- update(m5, ~.- kraj:resid_usili2)
> m7 <- update(m6, ~.- resid_usili2)
> summary(m7)

Call:
glm(formula = cbind(ml, ad) ~ rok + obdobi + kraj + rok:obdobi + 
    rok:kraj + obdobi:kraj + rok:obdobi:kraj, family = "quasibinomial")

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.9098  -1.1931  -0.2274   1.0529   3.1283  

Coefficients:
                           Estimate  Std. Error t value Pr(>|t|)
(Intercept)              -118.95199   476.34698  -0.250    0.803
rok                         0.05971     0.23718   0.252    0.801
obdobinehn                412.69412   646.95083   0.638    0.524
krajJHC                   447.69791   498.45358   0.898    0.369
krajJHM                   -62.92516   525.85737  -0.120    0.905
krajLBK                   677.73239  1595.20024   0.425    0.671
krajMSK                   278.24639   621.32312   0.448    0.654
krajOLK                  -705.97832   782.53474  -0.902    0.367
krajPAK                   387.96543   608.98961   0.637    0.524
krajPLK                  -653.68419   782.20737  -0.836    0.403
krajSTC                  -114.34822   489.06318  -0.234    0.815
krajULKV                -2117.64674  1797.75836  -1.178    0.239
krajVYS                   884.74411   681.05324   1.299    0.194
krajZLK                  -997.77613   925.93280  -1.078    0.281
rok:obdobinehn             -0.20602     0.32211  -0.640    0.523
rok:krajJHC                -0.22303     0.24819  -0.899    0.369
rok:krajJHM                 0.03092     0.26180   0.118    0.906
rok:krajLBK                -0.33909     0.79438  -0.427    0.670
rok:krajMSK                -0.13889     0.30935  -0.449    0.654
rok:krajOLK                 0.35102     0.38943   0.901    0.368
rok:krajPAK                -0.19392     0.30323  -0.640    0.523
rok:krajPLK                 0.32463     0.38937   0.834    0.405
rok:krajSTC                 0.05677     0.24351   0.233    0.816
rok:krajULKV                1.05287     0.89453   1.177    0.239
rok:krajVYS                -0.44149     0.33911  -1.302    0.193
rok:krajZLK                 0.49612     0.46081   1.077    0.282
obdobinehn:krajJHC       -776.31258   672.68911  -1.154    0.249
obdobinehn:krajJHM       -267.78650   700.38741  -0.382    0.702
obdobinehn:krajLBK      -1246.67321  1760.37329  -0.708    0.479
obdobinehn:krajMSK       -383.77613   858.81391  -0.447    0.655
obdobinehn:krajOLK        -96.72334   947.75189  -0.102    0.919
obdobinehn:krajPAK       -540.25140   827.13134  -0.653    0.514
obdobinehn:krajPLK       -517.49161  1124.63474  -0.460    0.645
obdobinehn:krajSTC       -683.81160   672.66674  -1.017    0.310
obdobinehn:krajULKV      2344.32314  2073.98366   1.130    0.259
obdobinehn:krajVYS       -795.62043   917.80551  -0.867    0.386
obdobinehn:krajZLK        618.33075  1093.37768   0.566    0.572
rok:obdobinehn:krajJHC      0.38725     0.33493   1.156    0.248
rok:obdobinehn:krajJHM      0.13374     0.34870   0.384    0.701
rok:obdobinehn:krajLBK      0.62237     0.87662   0.710    0.478
rok:obdobinehn:krajMSK      0.19114     0.42758   0.447    0.655
rok:obdobinehn:krajOLK      0.04842     0.47171   0.103    0.918
rok:obdobinehn:krajPAK      0.26922     0.41184   0.654    0.513
rok:obdobinehn:krajPLK      0.25790     0.55986   0.461    0.645
rok:obdobinehn:krajSTC      0.34078     0.33492   1.017    0.309
rok:obdobinehn:krajULKV    -1.16571     1.03236  -1.129    0.259
rok:obdobinehn:krajVYS      0.39675     0.45704   0.868    0.386
rok:obdobinehn:krajZLK     -0.30732     0.54422  -0.565    0.572

(Dispersion parameter for quasibinomial family taken to be 1.313286)

    Null deviance: 2396.8  on 1343  degrees of freedom
Residual deviance: 2110.3  on 1296  degrees of freedom
AIC: NA

Number of Fisher Scoring iterations: 5

EDIT: Comme proposé par Scortchi , j'ai essayé d' utiliser VIF et j'obtiens également des valeurs énormes. Qu'est-ce que ça veut dire? Voir:

> require(HH)
> vif(cbind(ml, ad) ~ rok + obdobi + kraj + resid_usili2 + 
+         rok:obdobi + rok:kraj + obdobi:kraj + kraj:resid_usili2 + 
+         rok:obdobi:kraj)
                    rok              obdobinehn                 krajJHC                 krajJHM 
              50.281603         45075363.969712         15194580.406796         11362184.620230 
                krajLBK                 krajMSK                 krajOLK                 krajPAK 
         7567915.376763          5228018.864051         17105623.986998         10944471.683601
[... cut out ...]
Curieuse
la source
Eh bien, avez-vous examiné une matrice de corrélation des variables krjXXX pour voir si elles sont fortement corrélées?
zbicyclist
@zbicyclist, merci. krajn'est qu'une variable catégorielle de 12 niveaux (HKK (caché dans l'interception), JHC, JHM, LBK, MSK, ...), donc je suppose que la matrice de corrélation pour krajXXX n'a ​​pas de sens, ai-je raison? Que dois-je faire alors?
Curieux
Demande rapide: votre lien vers une discussion par Scortchi ci-dessus n'a pas de lien réel, pourriez-vous s'il vous plaît ajouter cela? Merci!
James Stanley
2
Tomas, je suppose que le niveau HKK est un niveau fréquent (c'est-à-dire que vous n'avez pas baissé un niveau avec seulement 1 ou 2 observations). Une erreur qui est parfois commise est de baisser le niveau le moins fréquent. Je pense que @James Stanley a la meilleure suggestion sur quoi faire ensuite.
zbicyclist
1
Pas de soucis, bon à savoir - je pense que le point de @ zbicyclist est que si vous choisissez une catégorie de référence qui a des résultats vraiment peu fréquents, alors tous les paramètres de ce facteur pourraient être affectés par la séparation quasi-complète (alors que le choix d'un niveau avec des résultats plus fréquents éviteront que cela ne soit un problème pour tous les paramètres). [FYI, que vous connaissez peut-être déjà - vous pouvez changer le niveau de référence si nécessaire: dans R, on utiliserait par exemple kraj <- relevel(kraj, ref = "JHC")si vous vouliez utiliser JHC comme niveau de référence à la place.]
James Stanley

Réponses:

14

Je dirais que les coefficients massifs, et les erreurs types massivement correspondantes, seraient presque certainement causés par une séparation quasi complète ou complète. Autrement dit, pour une combinaison de paramètres, soit tout le monde a eu le résultat, soit personne n'a le résultat, et donc le coefficient se dirige vers l'infini (ou l'infini négatif).

Cela a tendance à se produire surtout lorsque l'on spécifie beaucoup de termes d'interaction, car les chances d'avoir une combinaison de facteurs qui aboutit à des cellules "vides" (pas de résultats dans la cellule, ou tout le monde a des résultats) augmenteront.

Voir la page suivante pour plus de détails et des suggestions de stratégies: http://www.ats.ucla.edu/stat/mult_pkg/faq/general/complete_separation_logit_models.htm

Plus généralement, cela signifie que vous essayez probablement d'en faire «trop» avec votre modèle pour la taille de votre ensemble de données (en particulier le nombre de résultats observés).

EDIT: Quelques suggestions pragmatiques

Vous pouvez essayer (1) rapidement et simplement: supprimez les termes d'interaction de votre modèle, pour voir si cela aide (si cela a du sens du point de vue des questions de recherche est une question entièrement différente); ou (2) obtenir R pour vous faire un tableau de contingence bi-iiig pour (par exemple les lignes) les combinaisons décrites dans les interactions par (par exemple les colonnes) la variable de résultat. Vous pourrez peut-être voir des preuves de séparation ici.

James Stanley
la source
merci James. Est-ce que cela signifie en fait un sur-ajustement? Est-ce à dire que je ne devrais pas inclure les interactions dans le modèle?
Curieux
Je ne pense pas que ce soit techniquement "sur-ajusté", mais un cas de sur-étirement de votre modèle. Voir par exemple Wikipedia sur ce que l'on entend généralement par sur-ajustement (et je ne prétendrai pas être un expert de la définition): en.wikipedia.org/wiki/Overfitting - qu'un modèle sur-spécifié est un modèle où les paramètres estimés ne seraient probablement pas fonctionne bien en validation croisée, ou en d'autres termes, le modèle que vous avez spécifié décrira cet échantillon, mais ne fonctionnerait pas bien sur un autre échantillon de la même population.
James Stanley
merci James - mais c'est exactement ce que j'imagine sous le terme Overfitting .. BTW, j'ai utilisé VIF et j'ai obtenu des valeurs énormes aussi, veuillez voir ma question éditée. Est-ce que cela vous dit quelque chose de nouveau sur les problèmes de multicolinéarité / sur-ajustement?
Curieux
2
Je pense que c'est juste une question de terminologie / jargon - ce que vous décrivez est toujours un problème, et est dû à une sur-spécification, mais je ne pense pas que nous pourrions parler de "sur-ajustement" dans un sens formel. Je vais devoir partir et lire quelques bribes sur les distinctions pour être plus clair!
James Stanley
2
Je ne sais pas s'il existe un terme technique au-delà de la séparation quasi complète. Je dirais que "pour éviter une séparation quasi complète (en raison de la rareté des données dans les combinaisons des deux facteurs), nous n'avons pas testé les interactions". Évidemment, c'est à peu près tout le jargon, mais je pense que cela pourrait être la meilleure description?
James Stanley