Como realizar uma transformação box-cox no sas


Uma transformação box-cox é um método comumente usado para transformar um conjunto de dados distribuído não normalmente em um conjunto distribuído mais normalmente .

A ideia básica por trás deste método é encontrar um valor para λ tal que os dados transformados estejam o mais próximo possível da distribuição normal, usando a seguinte fórmula:

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

Podemos identificar o valor ideal a ser usado para λ no SAS usando o procedimento PROC TRANSREG .

O exemplo a seguir mostra como usar esse procedimento na prática.

Exemplo: Transformação Box-Cox em SAS

Vamos supor que temos o seguinte conjunto de dados no 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;

Suponha que usemos PROC REG para ajustar um modelo de regressão linear simples a esse conjunto de dados, usando x como variável preditora e y como variável resposta.

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

Nos gráficos de diagnóstico de saída, podemos exibir o gráfico Residual versus Quantil (gráfico mais à esquerda na linha do meio) para ver se os resíduos estão distribuídos aproximadamente normalmente no modelo:

Se os resíduos estiverem aproximadamente ao longo da linha diagonal direita do gráfico, geralmente assumimos que os resíduos são normalmente distribuídos.

No gráfico podemos ver que os resíduos não seguem muito a linha reta diagonal.

Isto indica que a variável resposta no modelo de regressão provavelmente não tem distribuição normal.

Como a variável resposta não tem distribuição normal, podemos usar PROC TRANSREG para identificar um valor para λ que podemos usar para transformar a variável resposta para que ela tenha distribuição mais normal:

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

transformação box-cox em SAS

A saída nos diz que o valor selecionado para usar para λ é – 0,5 .

Assim, podemos ajustar um modelo de regressão linear simples substituindo a variável de resposta original y pela variável y = (y -0,5 – 1) / -0,5 .

O código a seguir mostra como fazer isso:

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

No Resíduo vs. Gráfico quantílico da saída deste modelo, podemos ver que os resíduos ficam muito mais próximos ao longo da linha reta diagonal:

Isto indica que os resíduos do modelo transformado box-cox são distribuídos muito mais normalmente, o que satisfaz um dos principais pressupostos da regressão linear .

Recursos adicionais

Os tutoriais a seguir explicam como executar outras tarefas comuns no SAS:

Como usar Proc Univariate para testes de normalidade no SAS
Como criar um gráfico residual no SAS
Como realizar o teste Levene no SAS

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *