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 ;

trasformazione box-cox in SAS

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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *