Как выполнить преобразование бокса-кокса в sas


Преобразование Бокса-Кокса — это широко используемый метод преобразования набора данных с ненормальным распределением в набор с более нормальным распределением .

Основная идея этого метода состоит в том, чтобы найти такое значение λ, чтобы преобразованные данные были как можно ближе к нормальному распределению, используя следующую формулу:

  • y(λ) = (y λ – 1) / λ, если y ≠ 0
  • y(λ) = log(y), если y = 0

Мы можем определить оптимальное значение для использования λ в SAS, используя процедуру PROC TRANSREG .

В следующем примере показано, как использовать эту процедуру на практике.

Пример: преобразование Бокса-Кокса в SAS

Предположим, у нас есть следующий набор данных в SAS:

 /*create dataset*/
data my_data;
    input xy;
    datalines ;
7 1
7 1
8 1
3 2
2 2
4 2
4 2
6 2
6 2
7 3
5 3
3 3
3 6
5 7
8 8
;
run;

/*view dataset*/
proc print data =my_data;

Предположим, мы используем PROC REG , чтобы подогнать простую модель линейной регрессии к этому набору данных, используя x в качестве предикторной переменной и y в качестве переменной ответа.

 /*fit simple linear regression model*/
proc reg data =my_data;
    model y = x;
run ;

На выходных диагностических графиках мы можем отобразить график «Остаток против квантиля» (крайний левый график в среднем ряду), чтобы увидеть, распределены ли остатки в модели примерно нормально:

Если остатки лежат примерно вдоль правой диагональной линии графика, мы обычно предполагаем, что остатки распределены нормально.

Из графика мы видим, что остатки не очень сильно следуют прямой диагональной линии.

Это указывает на то, что переменная ответа в модели регрессии, вероятно, не имеет нормального распределения.

Поскольку переменная ответа не имеет нормального распределения, мы можем использовать PROC TRANSREG для определения значения λ, которое мы можем использовать для преобразования переменной ответа так, чтобы она распределялась более нормально:

 /*perform box-cox transformation*/
proc transreg data =my_data;
    model boxcox (y) = identity (x);
run ;

преобразование коробки-кокса в SAS

Выходные данные сообщают нам, что выбранное значение для использования для λ равно – 0,5 .

Таким образом, мы можем подогнать простую модель линейной регрессии, заменив исходную переменную ответа y переменной y = (y -0,5 – 1) / -0,5 .

Следующий код показывает, как это сделать:

 /*create new dataset that uses box-cox transformation to create new y*/
data new_data;
   set my_data;
   new_y = (y**(-0.5) - 1) / -0.5;
run ;

/*fit simple linear regression model using new response variable*/
proc reg data =new_data;
    model new_y = x;
run ;

В Остаточном против. На квантильном графике выходных данных этой модели мы видим, что остатки лежат гораздо ближе к прямой диагональной линии:

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

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:

Как использовать одномерную процедуру Proc для проверки нормальности в SAS
Как создать остаточный график в SAS
Как выполнить тест Левена в SAS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *