繁体   English   中英

Model.matrix对比误差

[英]Model.matrix contrast error

我有一个动态字符串来创建model.matrix 字符串的值如下:

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

以下是分类变量的不同值计数:

> 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

仍然此命令导致错误,如下所示:

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

为什么我会收到此错误的任何线索? 如何通过自动检测这种情况动态地解决错误?

由于一个字符串变量的单个唯一值而导致出现此问题。 用Gregor的话来说:“所有非整数/数值变量都将具有对比,无论是默认对比还是您指定的对比。您的compares.arg会覆盖您指定的某些变量的默认对比-其他任何类别变量都将获得默认对比”。 因此,基本上所有因数和字符串变量都不可避免地会产生对比,如果任何因数或字符串变量只有一个唯一值(即使未明确定义对比),也会失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM