Каков правильный порядок для Somers' D при использовании PROC FREQ?

Я хочу произвести Somers' D, используя Proc Freq, используя следующий код:

DATA HAVE;
    DO I = 1 TO 1000;
        Y = RANUNI(0);
        X = RANUNI(1) * 10;
        OUTPUT;
    END;
RUN;
PROC FREQ 
    DATA=have           
    NOPRINT;
          TABLES y * x / MEASURES;
          OUTPUT OUT=somersd
          (KEEP = _SMDCR_
          RENAME = (_SMDCR_ = somers_d))
          MEASURES;
RUN;    /*This is somers' D for Somers’ D(C|R)*/

Я прочитал из документации, что приведенный выше код проверяет соответствие Y в качестве столбца и X в качестве строки, но я хотел убедиться, что это так:

Теперь, какой правильный способ проверки на соответствие это

y * x

или же

x * y

Любая помощь будет оценена

0 ответов

Из tablesдокументация:

Запрос состоит из одного имени переменной или нескольких имен переменных, разделенных звездочками. Чтобы запросить одностороннюю таблицу частот, используйте одну переменную. Чтобы запросить таблицу двусторонней кросс-таблицы, используйте звездочку между двумя переменными. Чтобы запросить многостороннюю таблицу (n-стороннюю таблицу, где n>2), разделите желаемые переменные звездочками. Уникальные значения этих переменных образуют строки, столбцы и слои таблицы.

Это не очень понятно, но по сути первая переменная соответствует переменной индекса строки, а вторая - значению индекса столбца. Будьте осторожны - значения индекса строки - это значения, расположенные вдоль вертикальной оси, а значения индекса столбца - это значения, расположенные вдоль горизонтальной оси. Это часто приводит к непреднамеренному инвертированию строк и столбцов, поскольку значения индекса строки образуют столбец, а значения индекса столбца образуют строку!

В твоем случае,

PROC FREQ DATA=have;
  TABLES y * x / MEASURES;
RUN;

вычислит Somers' D(C|R), предполагая, что X - независимая переменная, а Y - зависимая переменная, что, я думаю, вам и нужно.

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