2016-07-03 6 views
0

Ich bekomme eine Fehlermeldung von einigen meiner calc.relimp() Anrufe auf lm Objekte und bin mir nicht sicher, wie Sie das beheben oder es besser zu beheben. Ich habe einen Datensatz mit Prädiktoren, der zwei kategorische Variablen und fünf kontinuierliche Variablen enthält. Ich habe ein paar Antwortvariablen und für jeden davon habe ich einen anderen Satz von Prädiktoren in der lm, manchmal enthalten sie quadriert oder interaktive Begriffe.Kovarianz Matrix Berechnung Fehler in R, über calc.relimp()

Ich habe keine fehlenden Daten oder NA in meiner data.frame jedoch bestimmte Modelle erscheinen auch in der lm() Funktion laufen, aber dann diesen Fehler geben, wenn die lm in calc.relimp() läuft:

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

Diese Fehler tritt nur auf, wenn ein bestimmter kategorischer Prädiktor Treatment (2 Ebenen, Zeichen) Teil des Modells ist, aber seine Einbeziehung führt nicht immer zu diesem Fehler.

Ich glaube, der Fehler zeigt an, dass die calc.relimp() Funktion diesen Fehler beim Berechnen einer Kovarianzmatrix empfängt, aber ich bin nicht sicher, welche Werte in dieser Matrix verwendet werden oder wie ich das Problem besser beheben kann. Ich habe bereits überprüft, dass ich keine NA oder fehlende Daten habe.

Ich habe den Datensatz und Modell und calc.relimp() Aufruf unten enthalten, die den Fehler in einem der Fälle verursachen. Jede Hilfe wird sehr geschätzt!

Datenrahmen:

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)) 

Modell und die relative Bedeutung Aufruf:

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

Antwort

0

fand ich eine Lösung: Ich änderte den kategorischen Charakter Faktor, der ein Prädiktor ein im lm ist 0/1 Dummy-Variable. Jetzt funktionieren die Kovarianzmatrix-Berechnung und die calc.relimp() Aufrufe. Ich probiere ein bisschen mehr, indem ich die Kovarianzmatrixfunktion direkt cov(cbind(y,x)) aufruft, wobei y ein Spaltenvektor von Antwortwerten und x eine entsprechende Matrix von Regressoren ist.

Während dies mein aktuelles Problem behebt, ist es mir unklar, warum dies notwendig ist. Ich lasse auch viele lm() und calc.relimp() mit diesem Datensatz mit dem gleichen kategorischen Faktor, der als ein Zeichen bleibt, und sie funktionieren gut, ohne den kategorischen Faktor in eine Dummy-Variable vorher zu konvertieren. Diese lm haben unterschiedliche Antwortvariablen, aber ich bin mir nicht sicher, warum das wichtig wäre.