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