Come eseguire una trasformazione box-cox in sas
Una trasformazione box-cox è un metodo comunemente utilizzato per trasformare un set di dati non distribuito normalmente in un set distribuito più normalmente .
L’idea alla base di questo metodo è trovare un valore per λ tale che i dati trasformati siano il più vicino possibile alla distribuzione normale, utilizzando la seguente formula:
- y(λ) = (y λ – 1) / λ se y ≠ 0
- y(λ) = log(y) se y = 0
Possiamo identificare il valore ottimale da utilizzare per λ in SAS utilizzando la procedura PROC TRANSREG .
L’esempio seguente mostra come utilizzare questa procedura nella pratica.
Esempio: trasformazione Box-Cox in SAS
Supponiamo di avere il seguente set di dati in 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;
Supponiamo di utilizzare PROC REG per adattare un semplice modello di regressione lineare a questo set di dati, utilizzando x come variabile predittrice e y come variabile di risposta.
/*fit simple linear regression model*/ proc reg data =my_data; model y = x; run ;
Nei grafici diagnostici di output, possiamo visualizzare il grafico Residuo/Quantile (grafico più a sinistra nella riga centrale) per vedere se i residui sono distribuiti approssimativamente normalmente nel modello:
Se i residui si trovano approssimativamente lungo la linea diagonale destra del grafico, generalmente assumiamo che i residui siano distribuiti normalmente.
Dal grafico possiamo vedere che i residui non seguono molto la retta diagonale.
Ciò indica che la variabile di risposta nel modello di regressione probabilmente non è distribuita normalmente.
Poiché la variabile di risposta non è distribuita normalmente, possiamo utilizzare PROC TRANSREG per identificare un valore per λ che possiamo utilizzare per trasformare la variabile di risposta in modo che sia distribuita in modo più normale:
/*perform box-cox transformation*/ proc transreg data =my_data; model boxcox (y) = identity (x); run ;
L’output ci dice che il valore selezionato da utilizzare per λ è – 0.5 .
Pertanto, possiamo adattare un semplice modello di regressione lineare sostituendo la variabile di risposta originale y con la variabile y = (y -0.5 – 1) / -0.5 .
Il codice seguente mostra come eseguire questa operazione:
/*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 ;
Nel Residuo vs. Nel grafico quantile dell’output di questo modello, possiamo vedere che i residui si trovano molto più vicini lungo la linea diagonale retta:
Ciò indica che i residui del modello trasformato di box-cox sono distribuiti molto più normalmente, il che soddisfa uno dei principali presupposti della regressione lineare .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in SAS:
Come utilizzare Proc univariato per i test di normalità in SAS
Come creare un grafico residuo in SAS
Come eseguire il test Levene in SAS