2016-07-03 1 views
0

Je reçois un message d'erreur de certains de mes calc.relimp() appels sur lm objets et je ne suis pas sûr de savoir comment résoudre ce problème ou de mieux le résoudre. J'ai un ensemble de données avec prédicteurs qui comprend deux variables catégoriques et cinq variables continues. J'ai quelques variables de réponse et pour chacun d'eux, je suis en cours d'exécution d'un ensemble différent de facteurs prédictifs dans le lm, parfois ils comprennent au carré ou des termes interactifs.Erreur de calcul de matrice de covariance dans R, via calc.relimp()

Je ne dispose pas de données manquantes ou NA dans mon data.frame, mais certains modèles semblent bien fonctionner dans la fonction lm() mais donnent cette erreur lors de l'exécution du lm dans calc.relimp():

Error in cov.wt(y, wt = wt) : 'x' must contain finite values only 

Cette erreur se produit uniquement lorsqu'un prédicteur catégoriel particulier Treatment (2 niveaux, caractère) fait partie du modèle, mais son inclusion ne conduit pas toujours à cette erreur. Je crois que l'erreur indique que la fonction calc.relimp() reçoit cette erreur lors du calcul d'une matrice de covariance, mais je ne suis pas sûr quelles valeurs sont utilisées dans cette matrice ou comment je peux mieux résoudre le problème. J'ai déjà vérifié que je n'ai aucun NA ou des données manquantes.

J'ai inclus l'ensemble de données et le modèle et calc.relimp() appel ci-dessous qui causent l'erreur dans l'un des cas. Toute aide est très appréciée!

dataframe:

exp_df<-structure(list(response = c(-7.59854557534419, -6.11372322139816, 
-5.26231304004255, -5.72145463155338, -6.36862211476643, -7.61900265561851, 
-7.13058686497619, -8.96170609504813, -6.48673799056386, -7.58453773635567, 
-7.09550547527033, -7.52680975468282, -8.86371619889984, -7.15280231344095, 
-9.90531908445649, -6.45437296041698, -7.49902186125677, -6.78590841237406, 
-7.68349533437632, -8.1696817768836, -10.6868849216951, -8.28785299034027, 
-5.0933635546202, -6.56749746635158, -5.5276877520019, -5.68522798427618, 
-8.0704844321303, -6.081176708526, -6.50662406338498, -7.54892094332027, 
-9.62372913076138, -2.35278086991753, -3.26091576932667, -3.34094262346613, 
-5.58578457844078, -3.9732208814056, -3.60094958539171, -6.21489091641707, 
-3.87303561313608, -4.43970202965744, -8.50176936097569, -5.98062942793468, 
-4.89816563068379, -4.2396572077735, -4.08205998285175, -4.89644338119708, 
-6.1461653509185, -6.03116565171581, -6.4195726682198, -5.4338431378733, 
-5.25805046427446, -6.66342099838612, -3.63392750579693, -2.98206365328999, 
-3.16710535360004, -3.30545943440104, -3.43455326583898, -3.88162711949682, 
-4.91310540493929, -4.52380144247737, -4.45238421982284, -3.59236170371706 
), Treatment = c("C", "C", "C", "C", "C", "C", "C", "C", "C", 
"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
"C", "C", "C", "C", "C", "C", "C", "C", "C", "N", "N", "N", "N", 
"N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", 
"N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", 
"N"), AP = c(0.958910006922412, 1.38724149886511, 0.915165514128266, 
1.49660273085048, 0.623535562167281, 0.854105492936431, 0.709247427735812, 
0.738182587031943, 0.701728843036816, 0.715171161135021, 0.754586771829749, 
1.409864741623, 0.950389659841629, 1.51630684551058, 0.992966501396659, 
0.890959485171062, 0.666544049474755, 0.79409717063337, 0.749968048396645, 
0.75573366235722, 0.778130855050235, 0.742650153754373, 0.860254485174763, 
1.51175993687244, 1.05695004517418, 1.10903938319774, 0.958058048210046, 
0.938427364850423, 0.972052198723841, 0.93337392160933, 0.926959935957174, 
-1.10819297078147, -1.29741848120788, -0.809216664307748, -0.619991153881339, 
-0.777679079236677, -1.01105720876258, -1.52448909371956, -1.55634205464134, 
-1.55192679273139, -1.5314273624352, -1.53710412774799, -1.41983224733315, 
-0.718927708431874, -0.91471109918642, -0.882080534060665, -1.22404885657861, 
-1.12354671599127, -1.65477231623861, -1.68772918701563, -1.66195104056628, 
-1.68316090789802, -0.302479735698982, -0.442629469594843, -0.904562992515607, 
-0.650051075760721, -0.736383311840574, -1.11254519761707, -1.10637860932565, 
-1.13076466302353, -1.11759058803732, -1.13468885557262), WC = c(-1.11305930626715, 
-1.87377094505647, -1.03536960698654, -2.067995193258, -0.517438278449125, 
-0.926927735074016, -0.669661532977074, -0.721050031980395, -0.656308615913218, 
-0.68018201308799, -0.750183669210624, -1.87377094505647, -1.03536960698654, 
-2.067995193258, -1.11305930626715, -0.926927735074016, -0.517438278449125, 
-0.750183669210624, -0.669661532977074, -0.68018201308799, -0.721050031980395, 
-0.656308615913218, -0.517438278449125, -1.87377094505647, -0.926927735074016, 
-1.03536960698654, -0.721050031980395, -0.68018201308799, -0.750183669210624, 
-0.669661532977074, -0.656308615913218, 0.910109945832115, 1.15289025608403, 
0.526517055634094, 0.283736745382183, 0.486053670592109, 0.7854827199028, 
1.44422662838632, 1.48509464727872, 1.47942977337285, 1.45312857309556, 
1.46041198240311, 1.15289025608403, 0.283736745382183, 0.526517055634094, 
0.486053670592109, 0.910109945832115, 0.7854827199028, 1.44422662838632, 
1.48509464727872, 1.45312857309556, 1.47942977337285, 0.283736745382183, 
0.486053670592109, 1.15289025608403, 0.7854827199028, 0.910109945832115, 
1.45312857309556, 1.44422662838632, 1.47942977337285, 1.46041198240311, 
1.48509464727872), TMP = c(-0.80106357660266, -1.68703515117027, 
0.787293670102007, 0.0952956537299076, 0.965950736485032, 1.14248787378464, 
-0.470545353882089, -0.668673973823901, -0.588752627689013, 0.145145797581795, 
-1.15864270056773, -1.33851872672067, 1.34822704019927, 0.288633231521372, 
-0.638252984175761, 1.31420217075319, 1.36661742941165, -1.133457937, 
-0.404149159054249, 0.252753423682086, -0.316341675345151, -0.453925105370426, 
2.50629157868947, -0.809384300760865, 1.61184028549868, 2.04907576312762, 
0.290382173943721, 1.0197439501416, -0.838109346226441, -0.289672961075216, 
-0.279666893145624, -1.98721718117201, -1.84915676749726, 0.0914797797007637, 
0.965950736485032, 1.09669739459303, 0.686809007177131, -0.620339579376033, 
-1.16551127244647, 0.117671510066826, -0.47512440180125, -0.554409768295302, 
-1.84915676749726, 1.10586608931612, 0.14871787869028, 1.14248787378464, 
-1.68703515117027, 1.02514977060172, -0.513495127165762, -1.05332459842702, 
-0.289672961075216, 0.451942008165602, 1.7240375584029, 1.31420217075319, 
-0.80106357660266, 1.70564716919052, -0.988730343498175, 0.0697823005789453, 
0.613459443541268, 1.28532872945296, 0.375391350591117, -0.634341713823762 
)), .Names = c("response", "Treatment", "AP", "WC", "TMP"), class = "data.frame", row.names = c(NA, 
-62L)) 

Modèle et appel importance relative:

library(relaimpo) 
mu2<-lm(response~Treatment+AP+WC+I(TMP^2), data=exp_df) 
mu2RI<-calc.relimp(mu2, type = "lmg") 

Répondre

0

J'ai trouvé une solution: j'ai changé le facteur de caractère catégorique qui est un facteur prédictif dans le lm à un 0/1 variable fictive. Maintenant, le calcul de la matrice de covariance et les appels calc.relimp() fonctionnent. Je troubleshot un peu plus en appelant la fonction de matrice de covariance directement cov(cbind(y,x)), où y est un vecteur colonne de valeurs de réponse et x une matrice correspondante de régresseurs.

Bien que cela résout mon problème actuel, on ne sait pas bien pourquoi cela est nécessaire. Je lance aussi beaucoup lm() et calc.relimp() avec cet ensemble de données avec le même facteur catégorique restant comme un caractère et ils fonctionnent très bien sans convertir le facteur catégorique à une variable factice avant. Ceux lm ont des variables de réponse différentes, mais je ne sais pas pourquoi cela aurait de l'importance.