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.