Hoe u een box-cox-transformatie uitvoert in sas


Een box-cox-transformatie is een veelgebruikte methode voor het transformeren van een niet-normaal verdeelde dataset naar een meernormaal verdeelde set.

Het basisidee achter deze methode is om een waarde voor λ te vinden zodat de getransformeerde gegevens zo dicht mogelijk bij de normale verdeling liggen, met behulp van de volgende formule:

  • y(λ) = (y λ – 1) / λ als y ≠ 0
  • y(λ) = log(y) als y = 0

We kunnen de optimale waarde voor λ in SAS identificeren met behulp van de PROC TRANSREG- procedure.

Het volgende voorbeeld laat zien hoe u deze procedure in de praktijk kunt gebruiken.

Voorbeeld: Box-Cox-transformatie in SAS

Laten we aannemen dat we de volgende gegevensset in SAS hebben:

 /*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;

Stel dat we PROC REG gebruiken om een eenvoudig lineair regressiemodel aan deze dataset te koppelen, waarbij x als voorspellende variabele en y als responsvariabele worden gebruikt.

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

In de diagnostische outputplots kunnen we de Residual versus Quantile-plot (meest linkse plot in de middelste rij) weergeven om te zien of de residuen ongeveer normaal verdeeld zijn in het model:

Als de residuen ongeveer langs de rechter diagonale lijn van de grafiek liggen, nemen we doorgaans aan dat de residuen normaal verdeeld zijn.

Uit de grafiek kunnen we zien dat de residuen de rechte diagonale lijn niet erg volgen.

Dit geeft aan dat de responsvariabele in het regressiemodel waarschijnlijk niet normaal verdeeld is.

Omdat de responsvariabele niet normaal verdeeld is, kunnen we PROC TRANSREG gebruiken om een waarde voor λ te identificeren die we kunnen gebruiken om de responsvariabele te transformeren zodat deze normaler verdeeld is:

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

box-cox-transformatie naar SAS

De uitvoer vertelt ons dat de geselecteerde waarde voor λ – 0,5 is.

We kunnen dus een eenvoudig lineair regressiemodel opstellen door de oorspronkelijke responsvariabele y te vervangen door de variabele y = (y -0,5 – 1) / -0,5 .

De volgende code laat zien hoe u dit doet:

 /*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 ;

In de Residuele vs. Kwantielplot van de output van dit model kunnen we zien dat de residuen veel dichter langs de rechte diagonale lijn liggen:

Dit geeft aan dat de residuen van het box-cox-getransformeerde model veel normaler verdeeld zijn, wat voldoet aan een van de belangrijkste aannames van lineaire regressie .

Aanvullende bronnen

In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende taken in SAS kunt uitvoeren:

Proc Univariate gebruiken voor normaliteitstesten in SAS
Hoe u een restplot in SAS maakt
Hoe de Levene-test in SAS uit te voeren

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert