Jak wykonać transformację box-cox w sas-ie
Transformacja Boxa-Coxa jest powszechnie stosowaną metodą przekształcania zbioru danych o rozkładzie normalnym w zbiór o bardziej normalnym rozkładzie.
Podstawową ideą tej metody jest znalezienie takiej wartości λ, aby przekształcone dane były jak najbardziej zbliżone do rozkładu normalnego, korzystając ze wzoru:
- y(λ) = (y λ – 1) / λ jeśli y ≠ 0
- y(λ) = log(y), jeśli y = 0
Możemy określić optymalną wartość λ w SAS, korzystając z procedury PROC TRANSREG .
Poniższy przykład pokazuje, jak zastosować tę procedurę w praktyce.
Przykład: Transformacja Boxa-Coxa w SAS
Załóżmy, że mamy następujący zestaw danych w SAS-ie:
/*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;
Załóżmy, że używamy PROC REG, aby dopasować prosty model regresji liniowej do tego zbioru danych, używając x jako zmiennej predykcyjnej i y jako zmiennej odpowiedzi.
/*fit simple linear regression model*/ proc reg data =my_data; model y = x; run ;
Na wyjściowych wykresach diagnostycznych możemy wyświetlić wykres reszt w funkcji kwantyli (wykres po lewej stronie w środkowym rzędzie), aby sprawdzić, czy reszty mają w przybliżeniu rozkład normalny w modelu:
Jeśli reszty leżą w przybliżeniu wzdłuż prawej przekątnej wykresu, ogólnie zakładamy, że reszty mają rozkład normalny.
Z wykresu widać, że reszty nie układają się zbytnio po prostej ukośnej.
Oznacza to, że zmienna odpowiedzi w modelu regresji prawdopodobnie nie ma rozkładu normalnego.
Ponieważ zmienna odpowiedzi nie ma rozkładu normalnego, możemy użyć PROC TRANSREG do zidentyfikowania wartości λ, której możemy użyć do przekształcenia zmiennej odpowiedzi tak, aby miała bardziej normalny rozkład:
/*perform box-cox transformation*/ proc transreg data =my_data; model boxcox (y) = identity (x); run ;
Dane wyjściowe mówią nam, że wybrana wartość do zastosowania dla λ wynosi – 0,5 .
Zatem możemy dopasować prosty model regresji liniowej, zastępując pierwotną zmienną odpowiedzi y zmienną y = (y -0,5 – 1) / -0,5 .
Poniższy kod pokazuje, jak to zrobić:
/*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 ;
W meczu Pozostała vs. Na wykresie kwantylowym wyników tego modelu widać, że reszty leżą znacznie bliżej prostej ukośnej:
Wskazuje to, że reszty modelu przekształconego Box-Coxa mają znacznie bardziej normalny rozkład, co spełnia jedno z głównych założeń regresji liniowej .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w SAS-ie:
Jak używać Proc Univariate do testowania normalności w SAS-ie
Jak utworzyć wykres resztkowy w SAS-ie
Jak wykonać test Levene’a w SAS-ie