2016-09-14 1 views
0

Ich habe eine dynamische Zeichenfolge, um eine model.matrix zu erstellen. Wert der Zeichenfolge lautet wie folgt:Model.matrix Kontrastfehler

total_matrix_str 
[1] "model.matrix(~ date + MDSE_ITEM_I + COLR_N + SLS_TYPE_GRP_C + dayofwk + 
MDSE_ITEM_REF_I + WK_END_D + GREG_D + SIZE_N + MDSE_STYL_N + COLR_FMLY_N + LATTD_I 
+ LNGTD_I + weekend + dsp + assort_size + colr_per + pctTillDate + weeknr + MEANTEMPM 
+ MEANVISM + MEANWINDSPDM + MAXHUMIDITY + MINHUMIDITY + MEANDEWPTM + MEANPRESSUREM 
+ FOG + RAIN + THUNDER ,data = total , 
contrasts.arg =list(MDSE_ITEM_I=contrasts(total$MDSE_ITEM_I,contrasts = F) , 
CO_LOC_I=contrasts(total$CO_LOC_I,contrasts = F) , 
COLR_N=contrasts(total$COLR_N,contrasts = F) , 
dayofwk=contrasts(total$dayofwk,contrasts = F) , 
SIZE_N=contrasts(total$SIZE_N,contrasts = F) , 
MDSE_STYL_N=contrasts(total$MDSE_STYL_N,contrasts = F) , 
COLR_FMLY_N=contrasts(total$COLR_FMLY_N,contrasts = F) , 
assort_size=contrasts(total$assort_size,contrasts = F) , 
weeknr=contrasts(total$weeknr,contrasts = F)))" 

Hier sind verschiedene Wert zählt der kategorischen Variablen:

> length(unique(total$MDSE_ITEM_I)) 
[1] 30 
> length(unique(total$CO_LOC_I)) 
[1] 5 
> length(unique(total$COLR_N)) 
[1] 6 
> length(unique(total$dayofwk)) 
[1] 7 
> length(unique(total$SIZE_N)) 
[1] 9 
> length(unique(total$MDSE_STYL_N)) 
[1] 6 
> length(unique(total$COLR_FMLY_N)) 
[1] 4 
> length(unique(total$assort_size)) 
[1] 7 
> length(unique(total$weeknr)) 
[1] 7 

noch dieser Befehl führt zu Fehler wie folgt:

total_matrix <- eval(parse(text = total_matrix_str)) 
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
    contrasts can be applied only to factors with 2 or more levels 

Irgendwelche Hinweise, warum Ich könnte diesen Fehler bekommen? Wie kann man einen Fehler dynamisch beheben, indem man ein solches Szenario automatisch erkennt?

+0

Überprüfen Sie für 'NA' Werte in Ihren Daten ... –

+1

Überprüfen Sie auch, um sicherzustellen, dass eine der Variablen, die Sie _think_ kein Faktor ist, tatsächlich ein Faktor ist (es gibt viele Variablen in dieser Formel, die ' Das schien zu überprüfen). – joran

+0

@joran Überprüft fehlendes kategorisches von Kontrasten haben nur ein oder zwei Ebenen also sollte nicht gehen. Eine Abweichung ist jedoch die Variable "SLS_TYPE_GRP_C", die einen eindeutigen STRING-Wert aufweist. Kann es Ärger verursachen? – abhiieor

Antwort

0

Dieses Problem tritt wegen einzelner eindeutiger Wert einer Zeichenfolgevariable auf. In Gregors Worten "Alle nicht ganzzahligen/numerischen Variablen haben Kontraste, entweder die Standardkontraste oder die von Ihnen angegebenen. Ihre contrasts.arg überschreibt die Standardkontraste für bestimmte Variablen, die Sie angeben - alle anderen kategorischen Variablen erhalten Standardkontraste." Im Wesentlichen werden daher alle Faktor- und String-Variablen zwangsläufig Kontraste erhalten, die fehlschlagen, wenn eine Faktor- oder String-Variable nur einen eindeutigen Wert hat (selbst wenn Kontraste nicht explizit definiert sind).

Verwandte Themen