SAS中的Proc Genmod无效的预测变量参考值,没有有效的观察结果



我正在尝试在二进制预测变量(c1kdscc3c1kdscc4c1kdscc5)上建模二进制结果(p1ODD)。当我尝试执行PROC GENMOD时,我的日志表明我对c1kdscc3具有无效的参考值。它还告诉我,由于响应变量中的无效响应,尽管在我的代码中,但我已经定义了所有内容,因此没有有效的观察结果。

这是PROC GENMOD节之前出现的有问题的代码:

PROC FORMAT;
Value c1kdscc_binfmt 
0 = "[3,4,5] Often or more (Ref)" 
1 = "[1,2] Never/Seldom"; 
Value p1ODD_binfmt 
0 = "Negative (Ref)"
1 = "Positive";
RUN;

TITLE "Logistic Regression Using PROC GENMOD";
PROC GENMOD DATA=MY;
CLASS c1kdscc3 (REF= "Often or more (Ref)") / PARAM = ref;
MODEL p1ODD = c1kdscc3 / DIST= binomial LINK=log SCALE=1;
RUN; QUIT; 

有人会知道我是否应该修复如何将C1KDSCC3的参考值定义为C1KDSCC5,以及如何最好地重写我的响应变量以在Proc Genmod中工作?

Sample Data: 
    Age     p1ODD       c1kdscc3    clkdscc4    clkdscc5
    12      Positive    Very Often  Always      Always
    16      Positive    Seldom     Quite Often  Seldom
    14      Negative    Very Often  Always      Seldom
    17      Negative    Quite Often Seldom      Very Often
    13      Negative    Quite Often Quite Often Seldom
    17      Negative    Quite Often Quite Often Never

日志和错误消息:

172        /*Analysis using GENMOD*/
 173        
 174        
 175        TITLE "Logistic Regression Using Proc GENMOD";
 176        PROC GENMOD DATA=MY;
 177        CLASS c1kdscc3 (REF= "Often or more (Ref)") / PARAM = ref;
 178        MODEL p1ODD = c1kdscc3 / DIST= binomial LINK=log SCALE=1;
 179        RUN;

 ERROR: Invalid reference value for c1kdscc3.
 ERROR: No valid observations due to invalid or missing values in the response, explanatory, offset, frequency, or weight variable.
 NOTE: The SAS System stopped processing this step because of errors.

谢谢!

这是您的PROC格式格式值与引起问题的类语句中指定的值之间的不匹配。我可以通过以下代码复制问题和错误。

通过更改来解决:

CLASS c1kdscc3 (REF= "Often or more (Ref)") / PARAM = ref;

匹配您的格式:

0 = "[3,4,5] Often or more (Ref)" 

,最终代码应该看起来像:

CLASS c1kdscc3 (REF= "[3,4,5] Often or more (Ref)") / PARAM = ref;

代码要在需要时复制问题,请注意我必须这样做,因为我们无法在没有您的代码下运行您的代码:

proc format ;
value $ myBrand_fmt
'ice1' = 'Ice #1'
'ice2' = 'Ice #2'
'ice3' = 'Ice #3';
run;
data Icecream;
   input count brand$ taste$;
   datalines;
70  ice1 vg
71  ice1 g
151 ice1 m
30  ice1 b
46  ice1 vb
20  ice2 vg
36  ice2 g
130 ice2 m
74  ice2 b
70  ice2 vb
50  ice3 vg
55  ice3 g
140 ice3 m
52  ice3 b
50  ice3 vb
;
proc genmod data=Icecream rorder=data;
   freq count;
   class brand (ref='#1');
   format brand $mybrand_fmt.;
   model taste = brand / dist=multinomial
                         link=cumlogit
                         aggregate=brand
                         type1;
run;

您还遇到了您的数据似乎与您指定的格式不匹配的问题,因此我不确定该怎么说。

您已指定格式定义,但没有应用它们,并且您的数据似乎与您的格式定义不符。但这比单个答案或问题中可以回答更多的问题。您可能需要备份几个步骤,并了解如何首先正确设置数据,然后将您的格式运行,然后继续进行GenMod过程。