Як виконати перетворення бокса-кокса в 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 ;

трансформація box-cox у 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 ;

У Residual vs. На квантильному графіку результату цієї моделі ми бачимо, що залишки лежать набагато ближче вздовж прямої діагональної лінії:

Це вказує на те, що залишки трансформованої моделі Бокса-Кокса розподілені набагато більш нормально, що задовольняє одне з основних припущень лінійної регресії .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в SAS:

Як використовувати Proc Univariate для перевірки нормальності в SAS
Як створити ділянку залишку в SAS
Як виконати тест Левена в SAS

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *