El Test de Levene se aplica para la igualdad de varianzas. Es un análisis de la varianza de las desviaciones de los valores muestrales respecto a una medida de tenedencia central. Parte de la hipótesis nula de igualdad de varianzas. Para realizar este test en SAS emplearemos el PROC GLM en combinación con la opción HOVtest. En la línea habitual vemos un ejemplo:
data datos;
input presion @@;
if _n_<=5 then grupo=1;
else if _n_<=10 then grupo=2;
else if _n_<=15 then grupo=3;
else if _n_<=20 then grupo=4;
else grupo=5;
cards;
180 172 163 158 147 173 158 170
146 152 175 167 158 160 143 182
160 162 171 155 181 175 170 155 160
;
run;
Proc GLM Data=datos ;
Class grupo;
Model presion = grupo;
Means grupo/HOVTest;
ODS select HOVFTest;
Quit;
Vemos que se trata de un código sencillo donde modelizamos con GLM la variable dependiente con la variable grupo y en MEANS indicamos con HOVtest que deseamos que se realice el test de Levene, con ODS seleccionamos sólo esa salida. Este código podemos parametrizarlo y crear una macro que nos permita replicar el código:
%Macro Levene(datos,grupo,variable);
Proc GLM Data=&datos ;
Class &grupo;
Model &variable=&grupo;
Means &grupo/HOVTest;
ODS select HOVFTest;
Quit;
%Mend Levene;
%levene(datos,grupo,presion);
Espero que sea de vuestra utilidad. Saludos.
Hola Raúl,
Suelo leer ti blog, q me resulta de bastante utilidad.
Estoy intentando aprender el uso del el procedimiento de regresión logística en SAS. Tengo una duda sencilla:
He hecho una prueba con un datasets sencillo en el que la variable contrata marca si ha contratado un producto determinado de cosmética o no. Las variables de las que depende esta compra son sexo, edad y compras en los datos que introduzco se ve claremente que las mujeres jóvenes que han comprado un número de otros productos e cosmética (no el del estudio) alto (variable compras) son más proclives a comprar, pero no acabo de ver esta evidencia en el resumen que saca SAS. ¿En qué parámetros debo fijarme de la salida que da SAS?, ¿está correcta la llama a el procedimiento regresión logística?.
Incluyo abajo todos los datos.
Muchas gracias, un saludo,
/* Contrata dice si se ha contratado un producto.
Los datos muestran que los q han contratado el producto,son mujeres, jóvenes y que han comprado ya otros productos */
/* La variable contrata indica si se ha contratado o no */
data clientes;
edad=20;
sexo = ‘H’; /* hembra */
compras = 50;
contrata = 1;
output;
edad=21;
sexo = ‘H’;
compras = 60;
contrata = 1;
output;
edad=23;
sexo = ‘H’;
compras = 45;
contrata = 1;
output;
edad=59;
sexo = ‘V’; /* varon */
compras = 5;
contrata = 0;
output;
edad =64;
sexo = ‘V’;
compras = 10;
contrata = 0;
output;
edad =61;
sexo = ‘V’;
compras = 7;
contrata = 0;
output;
run;
proc logistic data=clientes outmodel=model1;
class sexo;
model contrata=edad sexo compras;
quit;
Salida del proc logistic:
The SAS System 22:20 Tuesday, February 14, 2012 9
The LOGISTIC Procedure
Model Information
Data Set WORK.CLIENTES
Response Variable contrata
Number of Response Levels 2
Model binary logit
Optimization Technique Fisher’s scoring
Number of Observations Read 6
Number of Observations Used 6
Response Profile
Ordered Total
Value contrata Frequency
1 0 3
2 1 3
Probability modeled is contrata=0.
Class Level Information
Design
Class Value Variables
sexo H 1
V -1
Model Convergence Status
Complete separation of data points detected.
WARNING: The maximum likelihood estimate does not exist.
WARNING: The LOGISTIC procedure continues in spite of the above warning. Results shown are based on the last maximum
likelihood iteration. Validity of the model fit is questionable.
Model Fit Statistics
Intercept
Intercept and
Criterion Only Covariates
AIC 10.318 8.001
SC 10.110 7.168
-2 Log L 8.318 0.001
Testing Global Null Hypothesis: BETA=0
Test Chi-Square DF Pr > ChiSq
Likelihood Ratio 8.3166 3 0.0399
Score 6.0000 3 0.1116
Wald 0.0512 3 0.9970
Hola Jorge,
Para ayudarte a comprender mejor los resultados de una logística puedes emplear la estimación de los parámetros. Para ello te recomiendo que tramifiques tus variables independientes.
La ecuación de tu modelo será a grandes rasgos Estimación = intercept + B1·sexo + B2·edad1 +B3·edad2 + B4·compra1 + B5·compra2 Cuando no tienes parámetros es porque multiplicas por 0. De este modo cuanto mayor sea tu parámetro en valor absoluto más influirá en tu estimación. Si es positivo influye positivamente y si es negativo más disminuye la probabilidad de que se cumpla el evento. Con tu ejemplo:
proc logistic data=clientes outmodel=model1;
class sexo;
model contrata = sexo;
quit;
Sólo modelizamos el sexo, para no liarnos a tramear el resto de variables. Entre las salidas obtenemos la estimación por máxima verosimilitud:
Analysis of Maximum Likelihood Estimates
Parameter DF Estimate Standard
Error Wald
Chi-Square Pr > ChiSq
Intercept 1 9.52E-18 40.6740 0.0000 1.0000
sexo H 1 -9.2027 40.6740 0.0512 0.8210
Es decir, si eres hombre tienes una menor probabilidad de contratar porque el parámetro es negativo. Espero que te ayude.
Sin quererlo te has adelantado a la siguiente entrega de esta entrada con el proc genmod.
Muchas gracias Raul!!
Seguiré investigando…
ya te preguntaré
Hola Raul,
Le ha dado otra vuelta a los datos.
Tipificando en niveles cada variables (dicotómicas).
data clientes;
edad=20;
sexo = ‘H’;
compras = 50;
tipo_edad = ‘J’; /* joven */
nivel_compras = ‘A’; /* alto */
contrata = 1;
output;
edad=21;
sexo = ‘H’;
compras = 60;
tipo_edad = ‘J’; /* joven */
nivel_compras = ‘A’; /* alto */
contrata = 1;
output;
edad=23;
sexo = ‘H’;
compras = 45;
tipo_edad = ‘J’; /* joven */
nivel_compras = ‘A’; /* alto */
contrata = 1;
output;
edad=59;
sexo = ‘V’;
compras = 5;
tipo_edad = ‘A’; /* adulto */
nivel_compras = ‘B’; /* bajo */
contrata = 0;
output;
edad =64;
sexo = ‘V’;
compras = 10;
tipo_edad = ‘A’; /* adulto */
nivel_compras = ‘B’; /* bajo */
contrata = 0;
output;
edad =61;
sexo = ‘V’;
compras = 7;
tipo_edad = ‘A’; /* adulto */
nivel_compras = ‘B’; /* bajo */
contrata = 0;
output;
run;
proc logistic data=clientes outmodel=model1;
class sexo tipo_edad nivel_compras;
model contrata=sexo tipo_edad nivel_compras;
quit;
No entiendo bien los resultados obtenidos en el caso nivel_compra = ‘A’, sale un parámetro con valor 0, cuando yo esperaba un parámetro positivo.
Analysis of Maximum Likelihood Estimates
Standard Wald
Parameter DF Estimate Error Chi-Square Pr > ChiSq
Intercept 1 8.84E-17 40.6740 0.0000 1.0000
sexo H 1 -9.2027 40.6740 0.0512 0.8210
tipo_edad A 0 0 . . .
nivel_compras A 0 0 . . .
Por otra parte, ¿por qué no muestra parámetros estaimados para el otros posible valor de la variable?.
Un saludo, gracias,
Jorge, parámetro 0 implica que es un nivel base. En el ejemplo del sexo:
Sexo=V parámetro 0 exp(0)=1
Sexo=H parámetro -9.2 exp(-9.2)=0.0001
luego si sexo=H se incrementa tu probabilidad de compra. El ejemplo es muy burdo y por eso el resultado no se puede extrapolar, pero es como debes interpretar el parámetro.
Estimado Raul,
estoy con un problemita con el SAS. Hice un ensayo con animales en donde medi el consumo de alimento durante 30 dias. Estoy armando el modelo en el SAS como medidas repetidas en el tiempo pero quiero usar como covariable el peso de los animales. La pregunta es al peso lo debo incluir en class o directamente lo escribo en el modelo o en ambos??.
Muchas gracias,
Hola Raul,
tengo una pregunta sobre el SAS, estoy haciendo mi tesis en tecnología de alimentos y el estudio que hice fue mejorar el yogurt. Entonces hice análisis sensoriaal y fisicoquímicos en los dias 1, 15 y 30 con un diseño completamente al azar con 5 tratamientos. Mi pregunta es ¿cómo debo introducir el input al sas?
¿Te refieres al conjunto de datos de entrada?
En el caso que te refieras a como crear el proc GLM te recomiento esta web:
http://www.ats.ucla.edu/stat/sas/library/SASExpDes_os.htm
Un montón de ejemplos y de diseños. Saludos.