Erreur «le mineur majeur de l'ordre 1 n'est pas défini définitivement» en utilisant 2l.norm chez la souris

11

J'ai un problème avec la 2l.normméthode d'imputation multiniveau dans mice.

Malheureusement, je ne peux pas publier d'exemple reproductible en raison de la taille de mes données - lorsque je réduis la taille, le problème disparaît.

Pour une variable particulière, micegénère les erreurs et avertissements suivants:

Error in chol.default(inv.sigma2[class] * X.SS[[class]] + inv.psi) : 
  the leading minor of order 1 is not positive definite
In addition: Warning messages:
1: In rgamma(n.class, n.g/2 + 1/(2 * theta), scale = 2 * theta/(ss *  :
  NAs produced
2: In rgamma(1, n.class/(2 * theta) + 1, scale = 2 * theta * H/n.class) :
  NAs produced
3: In rgamma(1, n.class/2 - 1, scale = 2/(n.class * (sigma2.0/H - log(sigma2.0) +  :
  NAs produced

Si j'utilise les 2l.pan, normou les pmmméthodes, le problème ne se produit pas.

La variable a la distribution suivante: entrez la description de l'image ici

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   50.0   117.0   136.0   136.7   155.0   249.0    3124 

De plus, les tailles de classe ont la distribution suivante:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   3.00   50.00   80.00   88.52  111.00  350.00 
Robert Long
la source

Réponses:

10

J'ai eu un problème similaire dans MICE, voir mon auto-discussion ici . Le problème se produit car vous avez sur-ajusté votre modèle (trop de paramètres, de variables), certaines variables sont très colinéaires ou vous avez des cas qui manquent à toutes les variables.

Dans mon cas, le modèle était sur-équipé. Une façon de résoudre ce problème consiste à ajuster la matrice de prédicteur de MICE. Vous pouvez donner imp$predimpest votre midsobjet, pour regarder la matrice du prédicteur. Vous pouvez utiliser

new.pred <- quickpred(data)

mice(..., pred=new.pred)

pour générer automatiquement une matrice de prédicteur basée sur les corrélations bivariées des variables dans les données (par exemple Pearson, Spearman), où .10 est le seuil par défaut. Cela peut résoudre votre problème. Plus généralement, construisez vos modèles judicieusement et n'incluez pas seulement toutes les variables que vous pouvez avoir.

tomka
la source