PROC GENMOD в SAS Недопустимое эталонное значение для переменной предиктора и нет действительных наблюдений

Я пытаюсь смоделировать двоичный результат (p1ODD) на двоичных переменных предиктора (c1kdscc3, c1kdscc4 и c1kdscc5). Когда я пытаюсь сделать 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.

Спасибо!

1 ответ

Это несоответствие между вашим отформатированным значением в PROC FORMAT и значением, которое вы указываете в операторе CLASS, и вызывает проблему. Я могу повторить проблему и ошибку с кодом ниже.

Исправьте это, изменив:

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.

Другие вопросы по тегам