06.-REGRESSION

Copy, Paste and Adapts

multiple.regression.fnc(dat, dv='rt', variables=6:15)

multiple.regression.fnc(dat, dv='rt', variables=c(8,12,16), stepwise=F, graphic=T)

multiple.regression.fnc(dat, dv='rt', hierarchical=c(8,12,16))

multiple.regression.fnc(dat, dv='rt', variables=c(8,12,16), dominance=T, adjusted.for=8)

Objetive

Lleva a cabo análisis de regresión múltiple para una variable criterio en p variables predictoras de forma simultánea o mediante el procedimiento de paso a paso o jerárquica.

Simultaneous and stepwise Regression

El análisis de regresión se lleva a cabo mediante la función multiple.regression.fnc. Para ejemplificar su uso partiremos de la base de datos zprostate de la librería instalada en el toolbox bestglm.

head(zprostate)

lcavol lweight age lbph svi lcp

1 -1.6373556 -2.0062118 -1.8624260 -1.024706 -0.5229409 -0.8631712

2 -1.9889805 -0.7220088 -0.7878962 -1.024706 -0.5229409 -0.8631712

3 -1.5788189 -2.1887840 1.3611634 -1.024706 -0.5229409 -0.8631712

4 -2.1669171 -0.8079939 -0.7878962 -1.024706 -0.5229409 -0.8631712

5 -0.5078745 -0.4588340 -0.2506313 -1.024706 -0.5229409 -0.8631712

6 -2.0361285 -0.9339546 -1.8624260 -1.024706 -0.5229409 -0.8631712

gleason pgg45 lpsa train

1 -1.0421573 -0.8644665 -0.4307829 TRUE

2 -1.0421573 -0.8644665 -0.1625189 TRUE

3 0.3426271 -0.1553481 -0.1625189 TRUE

4 -1.0421573 -0.8644665 -0.1625189 TRUE

5 -1.0421573 -0.8644665 0.3715636 TRUE

6 -1.0421573 -0.8644665 0.7654678 TRUE

Vemos que disponemos de 9 variables cuantitativas y una de caracter lógico (train). Se trata de un estudio realizado a 97 hombres con cancer de próstata a los que se ha medido el antígeno prostático PSA así como otras variables de carácter clínico (?zprostate te informará sobre esta base de datos y sus variables). Deseamos encontrar la mejor combinación lineal de variables que predigan la variable lpsa (logaritmo natural de la psa).

Podemos en primer lugar valorar el cumplimiento de relación lineal para dichas variables mediante la función scatterplot.fnc.

scatterplot.fnc(zprostate, variables=1:9)

Si observamos la última fila vemos que las variables con una relación lineal mas clara son lcavol, lweigth y svi.

Seguidamente solicitaremos un modelo de regresión para la variable lpsa como criterio y el resto de las variables cuantitativas como predictoras.

regre1=multiple.regression.fnc(zprostate, variables=1:9,

dv='lpsa', graphic=T)

Por defecto la función realizará una estimación paso a paso con el argumento stepwise actuando como verdadero por defecto. Si deseas una estimación de todas las variables incluidas en el argumento variables, deberás incluir el argumento stepwise=F

Al finalizar la estimación del modelo lineal obtendrás cuatro gráficas desde las cuales valorar el cumplimiento de los supuestos relativos a los residuales o errores del modelo . Así mismo podemos ver los casos que contribuyen al incremento del error en el modelo estimado. En este sentido podemos ver que los casos 39, 95 y 96 presentan los mayores valores de residual.

Por defecto la estimación de un modelo de regresión múltiple generá la siguiente lista de resultados:

  1. Determinación de la transformación de potencia necesaria para promover la normalidad de la variable criterio.

  2. Determinación de la transformación de potencia necesaria para promover varianza constante en la variable criterio.

  3. Matriz de correlación de pearson de las variables predictoras y criterio.

  4. Resultado de la estimación paso a paso del modelo.

  5. Test de autocorrelación de los errores de Durbin-Watson.

  6. Coeficientes no estandarizados y estandarizados del modelo.

  7. Diagnóstico de colinealidad por tolerancia y factor de inflación de varianza (VIF).

  8. ïndices de correlación parcial y semiparcial de las variables predictoras seleccionadas en el modelo.

  9. Indice de determinación puntual y ajustado.

  10. Anova de la varianza explicada por el modelo estimado.

res.regresion.multiple

Regresión and outliers

Tal y como hemos podido ver en el ejemplo anterior tenemos una serie de casos que contribuyen negativamente al ajuste del modelo. Por ese motivo vamos a re-estimarlo, eliminando los casos que en las gráficas de residuales anteriores hemos detectado como extremos.

regre2= multiple.regression.fnc(zprostate,

variables=1:8,

dv='lpsa',

stepwise=T,

graphic=T,

delete.outliers=c(38,39,81,95,96))

Hierarchical regression

El usuario puede solicitar un modelo de regresión jerárquica donde se define la entrada según el orden definido por el usuario en el nuevo argumento hierarchical. Esta metodología permitirá valorar el efecto que la primera variable predictora tiene sobre la criterio obviando cualquier covarianza con las restantes. De esta forma el usuario obtener una aproximación al Anova con suma de cuadrados tipo I, modificando el orden de entrada de las variables en el modelo de regresión.

multiple.regression.fnc(zprostate,

dv='lpsa',

delete.outliers=c(5,38,39,95,96),

hierarchical=c('lcavol','lweight','svi'))

res.regresion.jerarquica

Dominance Analysis

Si se desea estimar la importancia relativa de los regresores del modelo lineal estimado Groemping, U. 2006, utilizaremos el argumento dominance=T. Esto dará lugar a una descomposición de la varianza total explicada a partir de las variables incluídas en el modelo finalmente estimado. Si se incluyese el argumento adjusted.by se entiende que se desea descomponer dicha varianza descontando previamente lo que estas variables incluídas en ese argumento explican del índice de determinación.

multiple.regression.fnc(zprostate, variables=1:9,

dv='lpsa', dominance=T)

$Dominancia

Response variable: lpsa

Total response variance: 1.332476

Analysis based on 97 observations

3 Regressors:

lcavol lweight svi

Proportion of variance explained by model: 63.59%

Metrics are not normalized (rela=FALSE).

Relative importance metrics:

lmg pmvd car

lcavol 0.3554419 0.48296445 0.3724832

lweight 0.1108266 0.07280334 0.1090912

svi 0.1696814 0.08018211 0.1543756

lmg puede verse como el promedio ponderado de la varianza explicada por cada variable utilizando para ello tanto los efectos directos así como los ajustados para todas las variables del modelo.

pmvd a diferencia del estadístico anterior elimina la posibilidad de que una variable con peso igual a cero pueda presentar una varianza promediada positiva si esta presenta una correlación importante con las otras variables predictoras pero no con la criterio (supresión cooperativa).

Si incluímos el argumento adjusted.by con el nombre de las variables del modelo estimado sobre las que deseamos ajustar la varianza residual (varianza que queda por explicar una vez controlado el efecto de las variables incluídas en ajustada.por).

multiple.regression.fnc(zprostate, variables=1:9,

dv='lpsa', dominance=T,

adjusted.by=c('age','lweight'))

$Dominancia

Response variable: lpsa

Total response variance: 1.332476

Analysis based on 97 observations

3 Regressors:

Proportion of variance explained: 63.59%

One Regressor always included in model:

lweight

18.78 % of variance explained by this regressor

Relative importance of 2 regressors assessed:

lcavol svi

44.82 % of variance decomposed among these

Metrics are not normalized (rela=FALSE).

Relative importance metrics:

lmg pmvd

lcavol 0.3004382 0.37057959

svi 0.1477460 0.07760463

Podemos ver que la variable lweight (age no entró en el modelo estimado paso a paso) explica el 18.8% de la varianza de la criterio. Las restantes variables explican en 30 y 15% respectivamente según lmg y el 37 y 7 según pmvd una vez controlado su efecto por la variable lweight.

Up ->