Как мне заставить работать канонический пример PROC CALIS LINEQS? - PullRequest
0 голосов
/ 15 января 2019

Я пробую пример PROC CALIS LINEQS, обрисованный в общих чертах здесь (работает, когда я использую примеры PATH и RAM), используя Набор данных Wheaton (я переименовал заголовки чтобы соответствовать коду ниже) с этим кодом:

proc calis nobs=932 data=Wheaton;
   lineqs 
      Anomie67     = 1.0    * f_Alien67 + E1,
      Powerless67  = 0.833  * f_Alien67 + E2,
      Anomie71     = 1.0    * f_Alien71 + E3,
      Powerless71  = 0.833  * f_Alien71 + E4,
      Education    = 1.0    * f_SES     + E5,
      SEI          = lambda * f_SES     + E6,
      f_Alien67    = gamma1 * f_SES     + D1,
      f_Alien71    = gamma2 * f_SES     + beta * Alien67 + D2;
   std
      E1           = theta1,
      E2           = theta2,
      E3           = theta1,
      E4           = theta2,
      E5           = theta3,
      E6           = theta4,
      D1           = psi1,
      D2           = psi2,
      f_SES        = phi;
   cov
      E1  E3       = theta5,
      E2  E4       = theta5;
run;

но я получаю эту ошибку:

«Переменная Предиктора Alien67 в уравнении с выходной переменной f_Alien71 не является ни манифестом, ни переменной F, E, ни D».

Что я делаю не так?

1 Ответ

0 голосов
/ 15 января 2019

хорошо, я обнаружил ошибку - мне пришлось обратиться к странице 450 SAS OnlineDoc ™: версия 8 , чтобы найти решение, которое в основном заключается в изменении этой строки кода:

f_Alien71    = gamma2 * f_SES     + beta * <strong>Alien67</strong> + D2;

до

f_Alien71    = gamma2 * f_SES     + beta * <strong>f_Alien67</strong> + D2;

Я получил подсказку, когда читал страницу 450, потому что V5 в книге, которая соответствует SEI в коде, использовала F3 (который был f_SES) в качестве ввода, а затем я заметил, что ввод для F2 в книге (который был f_Alien71 в коде) был F1 (который был f_Alien67 в коде), и я обнаружил, что произошло несоответствие.

enter image description here

...