A continuación se comparten los ejercicios de evaluación para la materia de Estadistica 2. El exámen final consiste en tres ejercicios que abarcan los temas abordados durante la cursada. Los temas y ejercicios son los siguientes:
ANOVA - Ejercicio pasteles.
Regresion lineal multiple - Ejercicio Detroit.
Regresion logistica- Ejercicio Bajo peso al nacer.
Para llevar a cabo el examen se utilizarán las siguientes librerías.
library(olsrr) #Para modelos de regresion
library(haven) #Para cargar archivos con formatos foraneos
library(dplyr) #Para manipular datos
library(plyr) #Para manipular datos
library(ggpubr) #Para graficos
library(rstatix) #Para herramientas estadisticas
library(tidyverse) #Para organizar datos
library(gridExtra) #Para crear grids y tablas
library(ggplot2) #Para graficos
library(goftest) #Para test estadisticos como V de Cramer
library(tibble) #Para dataframes
library(nortest)
library(oddsratio) #Para calculo de oddsratio
library(survey) #Para trabajar con encuestas
library(epiR) #Para correr oddsratios
library(MASS) #Para herramientas estadisticas
library(InformationValue) #Para diagnosticos de probabilitdad
library(reshape2) #Para manipular los datos
library(lmtest) #Para testeo de supuestos de modelos lineales
library(DescTools) #Para testeo de Hosmer Lemeshow
library(corrplot) #Para visualizar la matriz de correlacion
ANOVA
El Departamento de nutrición de la Ciudad desea analizar los efectos del tipo de harina y del porcentaje de endulzamiento sobre los atributos físicos de un determinado tipo de torta, a la venta actualmente. Para ello, se diseñó un experimento utilizando dos tipos de harina (multipropósito y harina para tortas), y distintos porcentajes de endulzamiento, en cuatro niveles diferentes. Los siguientes datos corresponden a la información de la densidad específica de muestras de tortas preparadas con las distintas combinaciones posibles. Se prepararon 3 tortas con cada una de las combinaciones posibles
Los resultados obtenidos son los que se muestran en el archivo terapia.sav
Existen diferencias estadísticamente significativas debidas al tipo de harina utilizada?
#Creamos los vectores correspondientes a los datos obtenidos en la consigna.
#Vecttor harina para uso general
harinagen <- c(0.90, 0.87, 0.90, 0.86,0.89,0.91,0.93,0.88,0.87,0.79,0.82,0.80)
#Vector harina torta
harinator <- c(0.91,0.90,0.80,0.88,0.82,0.83,0.86,0.85,0.80,0.86,0.85,0.85)
#Vector concentracion de azucar
concazu<- c(rep(0,3), rep(50,3), rep(75,3), rep(100,3))
#Data frame con las variables
tortaframe <- data.frame(concazu,harinagen,harinator)
View(tortaframe)
#Creamos un data frame con los dos vectores que utilizaremos pare el primer ejercicio
#Vector densidad de cada harina
densidad <- c(harinagen,harinator)
#Vector tipo de harina
tipoharina <- c(rep("general",12), rep( "tortas",12))
#Data frame
tortaframe1<- data.frame(tipoharina,densidad)
View(tortaframe1)
Para poder efectuar el análisis de varianza debemos comprobar primero que nuestras variables cumplan los supuestos necesarios para realizar un test de ANOVA.
El test de ANOVA puede realizarse bajo tres supuestos:
Las respuestas para cada factor deben tener una distribucion normal.
Las distribuciones deben tener la misma variancia.
La muestras deben ser independientes.
Siguiendo los supuestos necesarios, debemos comprobar que la distribucion de nuestras observaciones sea normal y que tengan la misma variancia.
Para corroborar el primer supuesto podemos aplicar el test de Shapiro-Wilk, la cual plantea como hipotesis nula que una muestra proviene de una poblacion normalmente distribuida. Rechazaremos la hipotesis nula si el valor de P<0.05.
Debajo observamos como a partir del test de Shapiro aceptamos la hipótesis nula con un P valor mayor a 0.05, esto quiere decir que la muestras se distribuyen normalmente. Nuestra muestra cumple el supuesto de normalidad.
#Test de shapiro
tortaframe1 %>% group_by(factor(tipoharina)) %>%
shapiro_test(densidad)
## # A tibble: 2 x 4
## `factor(tipoharina)` variable statistic p
## <fct> <chr> <dbl> <dbl>
## 1 general densidad 0.924 0.319
## 2 tortas densidad 0.950 0.643
El segundo supuesto a corroborar es el de igualdad de las variancias o homoecedasticidas. Es entonces que debemos testear que la varianza de los errores se mantenga igual a lo largo de las muestras. Para ello usamos el test de Levene cuya hipotesis nula nos dice que las varianzas de los grupos son iguales entre si.
En nuestro caso observamos que se cumple la condicón de homoecedasticidad. Se acepta la hipótesis nula que nos dice que las varianzas son iguales debido a que P>0.05.
#Test de levene para homoecedasticidad de la densidad segun tipo de harina.
tortaframe1 %>% levene_test(densidad ~ as.factor(tipoharina))
## # A tibble: 1 x 4
## df1 df2 statistic p
## <int> <int> <dbl> <dbl>
## 1 1 22 0.528 0.475
#Forma grafica de corroborar la normalidad
ggqqplot(tortaframe1, "densidad", facet.by="tipoharina")
Una vez definida la normalidad de la distribución y la igualdad de las varianzas, realizamos el test de ANOVA.
El test de ANOVA o analisis de la varianza unidireccional nos permite comparar dos medias de grupos independientes utilizando la distribucion F de Snedecor. El principio de este metodo utiliza una variable dependiente y una independiente, en donde la hipotesis nula nos dice que las dos medias son iguales.
#Analisis de varianza de tipo de harina sobre densidad
anova1<- aov(densidad ~ as.factor(tipoharina), tortaframe1)
summary(anova1)
## Df Sum Sq Mean Sq F value Pr(>F)
## as.factor(tipoharina) 1 0.00184 0.001837 1.16 0.293
## Residuals 22 0.03486 0.001584
Con una Pr(>F) mayor a 0.05 aceptamos la hipótesis nula. Esto significa que debido a que F= 0.293, el tipo de harina utilizada no explicaría la diferencías en las densidades de las tortas.
Existen diferencias estadísticamente significativas debidas al nivel de endulzamiento utilizado?
En el caso que querramos determinar si la concentración de azucar afecta a la densidad debemos repetir el proceso. Primero modificaremos la matriz para luego comprobar la normalidad y homoecedasticidad de la muestras. Segundo procederemos a realizar el análisis de varianza.
#Usamos la funcion melt para cambiar el formato de la tabla y poder analizar los resultados
tablaendu<- melt(tortaframe, id.vars = "concazu" ) %>% as.data.frame()
colnames(tablaendu)[3] <- "densidad"
colnames(tablaendu)[2] <- "tipoharina"
tablaendu
## concazu tipoharina densidad
## 1 0 harinagen 0.90
## 2 0 harinagen 0.87
## 3 0 harinagen 0.90
## 4 50 harinagen 0.86
## 5 50 harinagen 0.89
## 6 50 harinagen 0.91
## 7 75 harinagen 0.93
## 8 75 harinagen 0.88
## 9 75 harinagen 0.87
## 10 100 harinagen 0.79
## 11 100 harinagen 0.82
## 12 100 harinagen 0.80
## 13 0 harinator 0.91
## 14 0 harinator 0.90
## 15 0 harinator 0.80
## 16 50 harinator 0.88
## 17 50 harinator 0.82
## 18 50 harinator 0.83
## 19 75 harinator 0.86
## 20 75 harinator 0.85
## 21 75 harinator 0.80
## 22 100 harinator 0.86
## 23 100 harinator 0.85
## 24 100 harinator 0.85
#Test de Shapiro para normalidad de las variables endulzantes y densidad
tablaendu %>% group_by(as.factor(concazu)) %>% shapiro_test(densidad)
## # A tibble: 4 x 4
## `as.factor(concazu)` variable statistic p
## <fct> <chr> <dbl> <dbl>
## 1 0 densidad 0.728 0.0122
## 2 50 densidad 0.951 0.748
## 3 75 densidad 0.964 0.851
## 4 100 densidad 0.889 0.310
#Visualizacion de normalidad
ggqqplot(tablaendu, "densidad", facet.by = "concazu" )
Observamos que se cumple la condicion de normalidad para casi todos los factores P>0.05. Sin embargo, el factor de 0 endulzante no cumple la condicion de normalidad (P=0.0122) . Es por ello que deberemos ser cuidadosos al momento de analizar los datos ya que no deberiamos aplicar pruebas parametricas en condiciones de no normalidad.
#Test de levene para homoecedasticidad de densidad segun endulzante.
tablaendu %>% levene_test(densidad ~ as.factor(concazu))
## # A tibble: 1 x 4
## df1 df2 statistic p
## <int> <int> <dbl> <dbl>
## 1 3 20 0.0530 0.983
A partir del Test de Levene observamos que nuestra P es igual a 0.983. Se acepta la hipótesis nula de normalidad de las varianzas.
Corroborados los supuestos, podemos correr nuestro analisis de ANOVA.
#Analisis de varianza
anovaconcazu<- aov(densidad ~ as.factor(concazu), tablaendu)
summary(anovaconcazu)
## Df Sum Sq Mean Sq F value Pr(>F)
## as.factor(concazu) 3 0.008713 0.002904 2.076 0.136
## Residuals 20 0.027983 0.001399
Al igual que con el tipo de harina, se acepta la hipotesis nula. No hay diferencias significativas en la densidad según concentración de azucar (F=0.136 > 0.05).
Existe interacción estadísticamente significativa entre los factores considerados?
Si quisieramos ver de qué manera interactúan la concentración de azucar y el tipo de harina deberíamos realizar un gráfico de interacción. En estos casos que introducimos dos variables independientes interactuando entre si estariamos hablando de un ANOVA de dos direcciones o bidireccional.
Si bien el principio y supuestos del ANOVA bidireccional es el mismo que el del ANOVA unidireccional, nos encontramos con dos variables de tipo factor o categoricas y una variable dependiente de tipo cuantitativa.
Es necesario entender el modo en que las variables independientes interactuan entre si. Cuando las variables interactuan nuestro ANOVA se calculara de manera distinta a cuando no interactuan entre ellas.
Mediante el grafico de interaccion podemos identificar el modo en que las variables interactuan. A continuacion se muestra el grafico de interaccion.
#Grafico de interaccion de medias
with(tablaendu, interaction.plot(concazu,tipoharina, densidad, fun = mean , main="Grafico de interaccion de medias", ylab = "Media de densidad", xlab="Concentracion de azucar"))
A partir del mismo vemos que existe una interacción entre el tipo de harina y la concentración de azucar. Lo cual nos da el indicio de como debera ser ejecutado nuestro analisis de ANOVA.
###ANOVA de dos factores con interaccion. Observando el grafico, estos son los factores que debemos mirar
anovados2 <- aov(densidad ~ as.factor(tipoharina)+as.factor(concazu), tablaendu)
summary(anovados2)
## Df Sum Sq Mean Sq F value Pr(>F)
## as.factor(tipoharina) 1 0.001838 0.001837 1.335 0.262
## as.factor(concazu) 3 0.008713 0.002904 2.110 0.133
## Residuals 19 0.026146 0.001376
Los coeficientes de F de Snedecor nos arrojan resultados por encima de 0.05. Entonces podemos decir que la relacion no es significativa. Aceptamos la hipotesis nula.
### ANOVA de dos factores sin interaccion
anovados<- aov(densidad ~ as.factor(tipoharina)+as.factor(concazu), tablaendu)
summary(anovados)
## Df Sum Sq Mean Sq F value Pr(>F)
## as.factor(tipoharina) 1 0.001838 0.001837 1.335 0.262
## as.factor(concazu) 3 0.008713 0.002904 2.110 0.133
## Residuals 19 0.026146 0.001376
En caso de que no hubiera interaccion el ANOVA de dos factores sin interaccion da un resultado similar, aunque no seria el test correcto para nuestro problema.
Realizar los gráficos de medias e interpretar
A continuacion se grafican los procedimientos expuestos en los puntos anteriores. Si bien las visualizaciones ayudan a entender tendencias de manera clara, a veces pueden llevarnos a conclusiones equivocadas. Por ello, se interpretara los graficos pero se concluira a partir de los Test de ANOVA hechos en los ejercicios anteriores.
#Graficos de media para densidad segun tipo de harina
ggplot(tortaframe1, aes(x=densidad, y=tipoharina, fill=densidad)) + geom_boxplot() +
ggtitle("Densidad segun tipo de harina")+
stat_summary(fun = "mean", geom = "point", shape=8, size= 2, color="red") +
theme_cleveland()
Se observa que la media de densidad para la harina general y la harina para torta es muy similar, lo cual confirma el resultado del test que dice que el tipo de harina no explicaria una diferencia en la densidad del producto.
#Grafcos de media para densidad segun nivel de endulzamiento
ggplot(tablaendu, aes(x=densidad, y=as.factor(concazu), fill=densidad)) + geom_boxplot() +
stat_summary(fun = "mean", geom = "point", shape=8, size= 2, color="red") +
theme_cleveland()
En el caso del impacto que tiene el nivel de endulzamiento sobre la densidad de las tortas, se observan leves tendencias hacia una media cercana a una densidad del 0.90 en aquellas endulzadas con 0, 50 y 75. Uno podria deducir que hay cierta influencia del endulzante sobre la densidad, pero sin embargo el test de ANOVA no mostraba diferencias significativas.
#Graficos de media para densidad segun nivel de endulzamiento y tipo de harina
ggplot(tablaendu, aes(x=densidad, y= interaction(as.factor(concazu), tipoharina), fill=densidad)) + geom_boxplot() +
ggtitle("Densidad segun nivel de endulzamiento y tipo de harina")+
stat_summary(fun = "mean", geom = "point", shape=8, size= 2, color="red") +
theme_cleveland()
Cuando observamos las medias de densidad segun el tipo de harina y endulzante, la combinacion de cualquier tipo de endulzante con la harina de tortas tiende a arrojar una densidad con menos dispersion. En cambio, la harina general es suceptible al endulzante produciendo asi densidades con mayor dispersion. Retomando el test de ANOVA y el grafico de interaccion, vemos que el efecto de la azucar 100 con la harina general arroja densidades mas bajas.
Tasa de homicidios en Detroit
En un estudio que investiga el papel de las armas de fuego en el aumento de la tasa de homicidios de Detroit, se recogieron datos para los años 1961-1973. La variable de respuesta (la tasa de homicidios) y las variables potencialmente predictoras del comportamiento de ésta, se describen a continuación (archivo p301.sav):
Se requiere construir una ecuación de regresión que relacione la Tasa de Homicidios (variable H), con el resto de las variables disponibles, y determinar si estas variables son útiles para predecir la Tasa de Homicidios.
#Cargamos la base
detroit<- read_sav("p301.sav")
Cuál es el nivel de asociación lineal de las variables predictoras con la variable H? Comentar.
Para entender cual es el nivel de asociacion lineal de las variables predictoras con la variable explicada debemos observar el coeficiente de correlación que índica la fuerza con que dos variables se asocian.
Este coeficiente se expresa entre 1 y -1, siendo que 1 es la máxima asociación y que -1 es la máxima asociación inversa. El valor 0 o cercanos a 0 expresa la ausencia de asociación.
Para dar cuenta de la asociación correremos una correlacion de cada una de las variables independientes con la variable dependiente.
#Creamos el modelo de regresion lineal para usarlos en la correlacion
modelodetroit<- lm( H ~ FTP + UNEMP + M + LIC + GR + CLEAR + W + NMAN + G + HE + W, data = detroit )
#Corremos la correlacion de las variables independientes con la dependiente
ols_correlations(modelodetroit)
## Correlations
## -------------------------------------------
## Variable Zero Order Partial Part
## -------------------------------------------
## FTP 0.964 0.392 0.014
## UNEMP 0.210 0.608 0.025
## M 0.546 0.205 0.007
## LIC 0.726 0.898 0.067
## GR 0.816 0.178 0.006
## CLEAR -0.968 -0.803 -0.044
## W -0.947 -0.486 -0.018
## NMAN 0.956 -0.154 -0.005
## G 0.958 -0.664 -0.029
## HE 0.913 0.725 0.034
## -------------------------------------------
A partir del resultado de las correlacion de las variables independientes con la dependiente podemos decir que:
Hay una fuerte correlacion positiva en las variables FTP (Cantidad de policias full time cada 100.00 habitantes) con un R 0.964 , NMAN( Cantidad de trabajadores fuera de la industria manufacturera) con un R de 0.956, G (Cantidad de trabajadores del gobierno) con un R de 0.958 y HE (Ingreso promedio por hora) con un R de 0.913.
Hay una fuerte correlacion negativas en las variables CLEAR (Porcentaje de homicidios resueltos con arresto del responsable) con un R de -0.968 y W (Cantidad de hombres blancos en la poblacion) con un R de -0.947.
Las variables UNEMP (Porcentaje de desempleados) con un R de 0.210, M (Cantidad de trabajadores en la industria manufacturera en miles) con un R de 0.546, LIC (Cantidad de licencias de portacion de armas cada 100.000 habitantes) con un R de 0.726 y GR (Cantidad de armas de fuego registradas cada 100.000 habitantes) con un R de 0.816, presentan una baja o incluso casi nula correlacion.
#Visualizacion matriz de correlacion
matrizcorreladetroit<- cor(detroit) #correlacion de todas las variables
corrplot(matrizcorreladetroit, method = "color" ) #grafico
Realizar una regresión lineal múltiple, seleccionando los mejores predictores entre las variables independientes disponibles, utilizando un método de selección automática. Describir el proceso de selección automática utilizado. (Sug. Considerar como probabilidad de entrada 0.10 y de salida del modelo 0.15.)
El mayor inconveniente de trabajar con grandes set de variables que podrian actuar como independientes es definir cuales son las que mejor se ajustan para nuestro modelo. Los metodos de seleccion automatica tienen como fin reducir el subset de predictores a solo aquellos que mejor predicen la variable dependiente. Los metodos que se pueden utilizar son:
Forward
Backward
Stepwise
Para seleccionar los mejores predictores entre las variables independientes de nuestro set se utilizara el metodo de stepwise. Este metodo secuencial de seleccion es una combinacion entre los metodos de seleccion forward y backwards.
El metodo forward incorpora variables independientes a medida que estas ingresan en la secuencia. El primer paso del modelo consiste en seleccionar la variable independiente que presente el valor mas alto en la suma de cuadrados de la regresion. Una vez incorporada esta primera variable, el metodo continua incorporando las variables que mas aportan a explicar la dependiente.
El metodo backward procede con una logica similar pero eliminando las variables que arrojen el valor mas pequeno de SSR en el modelo. Este metodo elimina variables del modelo hasta dejar solo las variables significativas.
Finalmente, el metodo stepwise combina los elementos anteriores pero incorporando a la vez criterios tales como el R2 ajustado, el Cp de Mallows, los indicadores de Akaike y criterios Bayesianos. Lo cual no solo automatiza el proceso sino que nos da herramientas para tomar la decision de cual sera el mejor de los modelos segun nuestros criterio.
Un bueno modelo sera aquel que:
Su R2 ajustado explique lo mas posible la variacion de la variable/s indepente/s sobre la dependiente.
El Cp de Mallows sea lo menor o lo mas cercano a la cantidad de parametros que tiene el modelo.
El indicador de Akaike sea el mas bajo.
El indicador de BIC sea el mas bajo de los posibles modelo (al igual que Akaike).
Teniendo en cuenta los metodos y criterios de seleccion podemos correr el analisis de stepwise para nuestro set de variables y asi obtener los modelos que mejor se ajusten.
#Los mejores modelos posibles
bestdetroit<- ols_step_best_subset(modelodetroit, pent=0.10, prem=0.15 )
#Observamos el resultado del stepwise
bestdetroit
## Best Subsets Regression
## ---------------------------------------------------
## Model Index Predictors
## ---------------------------------------------------
## 1 CLEAR
## 2 LIC CLEAR
## 3 LIC CLEAR HE
## 4 FTP LIC CLEAR HE
## 5 FTP UNEMP LIC CLEAR HE
## 6 UNEMP LIC CLEAR W G HE
## 7 FTP UNEMP LIC CLEAR W G HE
## 8 FTP UNEMP LIC GR CLEAR W G HE
## 9 FTP UNEMP M LIC GR CLEAR W G HE
## 10 FTP UNEMP M LIC GR CLEAR W NMAN G HE
## ---------------------------------------------------
##
## Subsets Regression Summary
## ---------------------------------------------------------------------------------------------------------------------------------
## Adj. Pred
## Model R-Square R-Square R-Square C(p) AIC SBIC SBC MSEP FPE HSP APC
## ---------------------------------------------------------------------------------------------------------------------------------
## 1 0.9379 0.9323 0.9225 107.7086 78.4277 36.4016 80.1226 236.9508 20.9815 1.8184 0.0847
## 2 0.9895 0.9874 0.9831 12.7387 57.3254 18.1515 59.5852 44.5278 4.1636 0.3759 0.0168
## 3 0.9934 0.9912 0.9802 7.3715 53.2520 16.7608 56.0767 31.3968 3.0808 0.2945 0.0124
## 4 0.9959 0.9938 0.9875 4.7777 49.2182 18.1386 52.6079 22.5583 2.3071 0.2380 0.0093
## 5 0.9975 0.9956 0.9813 3.7934 44.9261 22.7160 48.8808 16.2200 1.7153 0.1956 0.0069
## 6 0.9985 0.9971 0.9854 3.7495 39.7003 27.2038 44.2199 11.1645 1.2083 0.1571 0.0049
## 7 0.9988 0.9972 0.9863 5.1685 38.6146 31.7429 43.6991 11.0069 1.2007 0.1858 0.0048
## 8 0.9989 0.9967 0.9745 7.0883 40.1245 42.6806 45.7740 14.1329 1.5142 0.2983 0.0061
## 9 0.9989 0.9956 -3.8595 9.0486 41.8747 54.7430 48.0892 20.7958 2.0706 0.5852 0.0084
## 10 0.9989 0.9936 -4.2198 11.0000 43.5628 67.1704 50.3422 40.6055 3.1641 1.7139 0.0128
## ---------------------------------------------------------------------------------------------------------------------------------
## AIC: Akaike Information Criteria
## SBIC: Sawa's Bayesian Information Criteria
## SBC: Schwarz Bayesian Criteria
## MSEP: Estimated error of prediction, assuming multivariate normality
## FPE: Final Prediction Error
## HSP: Hocking's Sp
## APC: Amemiya Prediction Criteria
A partir del metodo de stepwise obtenemos 10 modelos que incluyen las variables independientes con las que estamos trabajando. Estos modelos contemplan una probabilidad de entrada de 0.10 y una probabilidad de salida del modelo de 0.15. Es asi como observamos que:
El modelo 1 con un predictor (CLEAR) explica el 94% de la variacion de la variable independiente sobre la dependiente. A pesar de su alto valor explicativo, la posibilidad de sesgos es bastante alta y se observa en los altos valores del indicador de AIC.
El modelo 2 con dos predictores (CLEAR y LIC) explica casi el 99% de la variacion de las variables independientes sobre la dependiente. Este modelo presenta mejores indicadores en AIC y Cp de Mallows.
El resto de los modelos con 3 variables o mas explican el 99% o mas de la variacion de las variables independientes sobre la dependiente. A pesar de su alto valor explicativo y sus mejores indicadores de Cp de Mallows y AIC, este modelo incorpora varios parametros pero sin ser significativos contra el modelo 2 en terminos de coeficiente de determinacion.
Entonces, para seleccionar el mejor modelo para nuestro analisis no vasta con observar el R2 (coeficiente de determinacion), sino que debemos tener en cuenta todos los indicadores.
Tomando en consideracion que, a partir de la incorporacion de un tercer parametro, el R2 ajustado de nuestro modelo no mejora sustancialmente podemos prescindir de observar los estimadores de AIC y Cp de Mallows. Asi la decision que deberiamos tomar es la de quedarnos con el modelo 2 que incluye las variables CLEAR y LIC.
Qué información da el coeficiente de determinación?
Tomando en consideracion las variables disponibles en nuestro data set, la variable que mas explica la tasa de homicidios cada 100.000 habitantes es el porcentaje de homicidios resueltos con arresto de los responsables en donde el 94% de la variabilidad de la variable dependiente es explicada solo por esta variable.
Al introducir la variable “Cantidad de licencias de portacion de armas cada 100.000 habitantes” podemos mejorar las explicacion en un 5%. Sin embargo, el resto de las variables otorgan muy poco explicacion al modelo predictivo. Entonces, lo que el coeficiente de determinacion nos dice es cuanto varia “Y” en funcion de las “Xs” que introduzcamos en nuestro modelo. Este coeficiente lo podemos identificar como R2 y es la proporcion de la varianza de la variable dependiente sobre las dependientes. Siendo R2 un estimador sesgado, el R2 adjusted corrige los errores que produce la incorporacion de multiples variables explicativas.
Tomando esto en cuenta, a continuacion creamos un nuevo modelo con las variables que mejor explican la variacion de “Y” segun “X”.
#Creamos el nuevo modelo de regresion a partir de los resultados del stepwise
modelodetroitimproved<- lm( H ~ CLEAR + LIC, data = detroit )
modelodetroitimproved
##
## Call:
## lm(formula = H ~ CLEAR + LIC, data = detroit)
##
## Coefficients:
## (Intercept) CLEAR LIC
## 103.65554 -1.05747 0.01414
Cuáles son los supuestos necesarios para definir la prueba inferencial de los estimadores de los parámeros?
Los supuestos necesarios para definir la prueba inferencial son los de:
Linealidad.
Variancia constante u homoecedasticidad.
Distribucion normal de los errores/residuos.
Independencia de los residuos.
Lo que esperariamos es que al graficar los puntos de la variable independiente con respecto a la dependiente los mismos presenten un comportamiento lineal ya sea positivo o negativo. A su vez,uno esperaria que los residuos tengan una variancia constante mientras que se distribuyen normalmente. Finalmente, buscaremos corroborar que los residuos constituyan una variable aleatoria o en otras palabras, que sean independientes.
Para corroborar estos supuestos disponemos de herramientras graficas como matematicas.
#Testeo de normalidad
ols_plot_resid_qq(modelodetroitimproved)
A partir del grafico de los quantiles teoricos vs los quantiles de la muestra podemos trazar una linea recta y agrupar a las observaciones en torno a ella. En nuestro caso diriamos que se cumple el supuesto de normalidad. En caso de querer corroborarlo con un modelo matematico utilizariamos la siguiente funcion.
#Test de Shapiro-Wilk para normalidad
shapiro.test(residuals(modelodetroitimproved))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelodetroitimproved)
## W = 0.90239, p-value = 0.1442
La hipotesis nula del test de Shapiro-Wilk dice que la distribucion de los residuos es normal. Al ser el P valor mayor a 0.05, no rechazamos la hipotesis nula. Entonces diriamos que la distribucion de los valores de los residuos de nuestro modelo es normal.
#Testeo de homoecedasticidad visual
plot(fitted(modelodetroitimproved), residuals(modelodetroitimproved), xlab = "Fitted", ylab="Residuals") + abline(h = 0) + plot(fitted(modelodetroitimproved), abs(residuals(modelodetroitimproved)), xlab = "Fitted", ylab = "|Residuals|")
## integer(0)
#Testeo de homoecedasticidad
#Calculo
ols_test_breusch_pagan(modelodetroitimproved)
##
## Breusch Pagan Test for Heteroskedasticity
## -----------------------------------------
## Ho: the variance is constant
## Ha: the variance is not constant
##
## Data
## -----------------------------
## Response : H
## Variables: fitted values of H
##
## Test Summary
## ----------------------------
## DF = 1
## Chi2 = 0.6554146
## Prob > Chi2 = 0.4181835
El test de Breusch-Pagan es utilizado para dar cuenta de la heteroecedasticidad de un modelo de regresion lineal. En nuestro modelo este test arroja un Chi cuadrado de 0.65, lo cual permite aceptar la hipotesis nula y decir que hay homoecedasticidad.
El resto de los supuestos son corroborados en los puntos 6 y 7.
Analizar la bondad del ajuste del modelo obtenido, comentando los indicadores y/o test que considera.
Para evaluar la bondad del ajuste del modelo debemos tomar en consideracion los componentes de la ecuacion lineal. En otras palabras esto significa observar la variancia de los betas de la ecuacion y las variancias de los errores.
La primera medida de bondad de ajuste que podemos tomar es el R2 el cual mide que proporcion de la variacion de la variable dependiente es explicada por la independiente. La segunda medida de bondad de ajuste seria el error standard de la regresion.
“It is useful to have some measure of how well the model fits the data. One common choice is R2 , the so-called coefficient of determination or percentage of variance explained(…)An alternative measure of fit is This quantity is directly related to the standard errors of estimates of ! and predictions. The advantage is that is measured in the units of the response and so may be directly interpreted in the context of the particular dataset. This may also be a disadvantage in that one must understand whether the practical significance of this measure whereas R2 , being unitless, is easy to understand.”(Faraway.J 2009)
Tomando en cuenta estos criterios, debajo observamos que las diferencias en el R2 y el error standard del modelo completo y el modelo mejorado no son signifcativas. Mientras el primer modelo tiene un R2=0.998 y un error standar = 1.309, el modelo mejorado tiene un R2=0.985 y un error estandard= 1.839. Si bien el R2 del modelo mejorado es algunos decimales menos y su error es apenas un poco mayor, dichas diferencias no son importantes.
Uno podria pensar entonces que tanto el primer modelo como el segundo podrian ser buenos. Sin embargo, debido al principio de simplicidad el modelo mejorado es superior al modelo original reduciendo la explicacion a solo dos parametros.
#Primer modelo
summary(modelodetroit)
##
## Call:
## lm(formula = H ~ FTP + UNEMP + M + LIC + GR + CLEAR + W + NMAN +
## G + HE + W, data = detroit)
##
## Residuals:
## 1 2 3 4 5 6 7 8
## -0.12195 0.08714 0.55769 -1.29578 1.04816 -0.22445 0.13999 0.12126
## 9 10 11 12 13
## -0.42310 -0.14609 0.15417 0.01634 0.08662
## attr(,"label")
## [1] "H"
## attr(,"format.spss")
## [1] "F9.2"
## attr(,"display_width")
## [1] 9
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.044e+02 1.405e+02 0.743 0.535
## FTP 3.115e-02 5.166e-02 0.603 0.608
## UNEMP 1.137e+00 1.051e+00 1.082 0.392
## M 1.666e-02 5.632e-02 0.296 0.795
## LIC 1.619e-02 5.610e-03 2.886 0.102
## GR 1.093e-03 4.262e-03 0.256 0.822
## CLEAR -3.643e-01 1.910e-01 -1.908 0.197
## W -1.361e-04 1.733e-04 -0.785 0.514
## NMAN -2.531e-02 1.149e-01 -0.220 0.846
## G -1.300e-01 1.035e-01 -1.257 0.336
## HE 4.730e+00 3.176e+00 1.489 0.275
##
## Residual standard error: 1.309 on 2 degrees of freedom
## Multiple R-squared: 0.9989, Adjusted R-squared: 0.9936
## F-statistic: 187.8 on 10 and 2 DF, p-value: 0.005308
#Modelo mejorado
summary(modelodetroitimproved)
##
## Call:
## lm(formula = H ~ CLEAR + LIC, data = detroit)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3802 -0.6176 0.6449 1.3765 1.8907
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 103.655542 4.820176 21.505 1.05e-09 ***
## CLEAR -1.057474 0.050413 -20.976 1.35e-09 ***
## LIC 0.014136 0.002017 7.009 3.68e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.839 on 10 degrees of freedom
## Multiple R-squared: 0.9895, Adjusted R-squared: 0.9874
## F-statistic: 471.2 on 2 and 10 DF, p-value: 1.276e-10
Realizar un análisis de los residuos del modelo para evaluar el cumplimiento de los supuestos. Para esto, realizar gráficos de los residuos con el valor predicho.
Los valores atipicos de un modelo de regresion pueden ser observados tanto en las variables independientes como en la dependiente. Estos valores atipicos se conocen como outliers de los residuos en las variables dependiente y como puntos de influencia en la variable independientes. El problema con estos residuos reside en que su influencia sobre las medias puede cambiar los resultados de los estimadores de un modelo. Es por ello que es importante poder identificarlos y someterlos a pruebas que den cuenta de dicha influencia.
#Grafico para residuos studentizados
ols_plot_resid_stud_fit(modelodetroitimproved)
En el grafico superior podemos observar como uno de los casos se encuentra por fuera de los dos devios standard con respecto a la media. Entonces, el caso 2 que estaria perturbando nuestro modelo.
Analizar la colinealidad de las variables predictoras presentes en la ecuación.
Si comparamos nuestro primer modelo vs. el modelo mejorado podemos observar con claridad las diferencias en la colinealidad. El problema de multicolinealidad se plantea de manera tal que las variables predictoras se correlacionan fuertemente entre ellas a punto tal que son casi perfectas y por ende, explican lo mismo.
Siguiendo con nuestro primer modelo y nuestro modelo mejorado observamos que:
#Testeo de multicolinealidad primer modelo
ols_vif_tol(modelodetroit)
## Variables Tolerance VIF
## 1 FTP 0.024424080 40.94320
## 2 UNEMP 0.023224490 43.05800
## 3 M 0.018141316 55.12279
## 4 LIC 0.045316150 22.06719
## 5 GR 0.081268646 12.30487
## 6 CLEAR 0.024436084 40.92309
## 7 W 0.001171905 853.31131
## 8 NMAN 0.001205293 829.67373
## 9 G 0.009728401 102.79181
## 10 HE 0.015155411 65.98304
#Testeo de multicolinealidad modelo mejorado
ols_vif_tol(modelodetroitimproved)
## Variables Tolerance VIF
## 1 CLEAR 0.6921615 1.44475
## 2 LIC 0.6921615 1.44475
Tanto en el modelo original como en el modelo mejorado, no hay multicolineadidad entre las variables predictoras. Debido a que los valores de la tolerancia son menores a 10 y/o el VIF es mayor a 0,10 podemos decir que las variables introducidas en los modelos no se correlacionan entre si.
Analizar la presencia de observaciones atípicas y/o influyentes. Comentar y resolver según el caso
Cuando se trata de analizar la presencia de observaciones atipicas o casos influyentes un indicador posible a utilizar es la distancia de Cook. Este indicador provee informacion tanto en X como en Y, lo cual significa que nos da aquellos individuos que demuestran alguna anomalia en la variable dependiente tanto como en la independiente.
En cambio, los Dffits se utilizan para identificar solo los puntos de influencia. Los Dfbetas comparan el estimador del parametro incluyendo el caso y excluyendo el caso influyente. El dffits hacen lo mismo que el dfbetas pero con el predictor. El caso que se saca es el mas extremo.
#Grafico de Cook para saber en que casos hay un outlier en la variable tanto dependiente como independiente
ols_plot_cooksd_bar(modelodetroitimproved)
Al igual que lo observamos en el grafico de residuos, se detecta que el caso 2 se halla por fuera del umbral aceptable de Cook=0.308. El valor del caso 2 incluso duplica y casi triplica el tamano de los valores de las observaciones 8,11 y 12. Esto puede corroborarse mediante el calculo de Cook para los puntos de influencia. Debajo se observa que la distancia de Cook para el caso 2 es de 0.34.
#Calculo de los puntos de influencia. Mayor el numero, mayor la probabilidad de ser un punto de influencia
cooks.distance(modelodetroitimproved)
## 1 2 3 4 5 6
## 0.042696165 0.349942740 0.105916409 0.009214249 0.034400845 0.058659257
## 7 8 9 10 11 12
## 0.063022059 0.126814751 0.005132083 0.007362778 0.157195255 0.140192490
## 13
## 0.076944289
## attr(,"label")
## [1] "H"
## attr(,"format.spss")
## [1] "F9.2"
## attr(,"display_width")
## [1] 9
A partir del analisis de Cook podemos observar que el caso dos es un outlier tanto para las variables independientes como la dependiente. Sin embargo el comportamiento de este caso puede ser distinto segun el parametro que incluyamos en el modelo. En caso de que necesitemos analizar la influencia de los casos sobre las variables predictoras y predichas por separado, debemos analizar los Dffits y los Dfbetas.
#Visualizacion de los dfitts. Es la influencia de un caso sobre la variable dependiente
ols_plot_dffits(modelodetroitimproved)
Si observamos mas detenidamente los casos atipicos sobre la variable dependientes, vemos que el Dffit muestra al caso 2 por encima del umbral. Esto nos da la idea de que si bien es un outlier dentro del modelo, el caso podria no comportarse de la misma manera con respecto a las variables independientes. Es por ello que resulta pertinente analizar los outliers sobre las variables independientes.
#Visualizacion de los dfbetas. Es la influencia de un caso sobre la variable independiente
ols_plot_dfbetas(modelodetroitimproved)
Este caso presenta un comportamiento similar en la variable predictora LIC (“Cantidad de licencias de portacion de armas cada 100.000 habitantes”) mientras que en el resto se halla por dentro de los umbrales aceptables tanto en esa variable predictora como en el resto. Por lo tanto, resultaria pertinente excluir el caso 2 del modelo para ajustarlo y ver asi si existen o no diferencias.
#Excluimos caso dos de la base
detroitclean<- detroit[-2,]
#Corremos nuevamente el modelo mejorado ahora con el ajuste excluyendo el caso 2
modelodetroitimproved2<- lm(H ~ CLEAR + LIC, data = detroitclean)
summary(modelodetroitimproved2)
##
## Call:
## lm(formula = H ~ CLEAR + LIC, data = detroitclean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.7013 -0.6165 0.5313 0.8390 1.5608
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 105.116272 3.905333 26.916 6.53e-10 ***
## CLEAR -1.061932 0.040445 -26.256 8.14e-10 ***
## LIC 0.012698 0.001711 7.421 4.01e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.474 on 9 degrees of freedom
## Multiple R-squared: 0.9933, Adjusted R-squared: 0.9919
## F-statistic: 671.1 on 2 and 9 DF, p-value: 1.607e-10
En comparacion con el modelo mejorado con el caso 2, el modelo actual presenta una leve mejoria con respecto al R2 y el error residual. Estos ajustes podrian continuarse pero uno correria el riesgo de sobreajustar el modelo transformandolo en util solo para predicciones en nuestra muestra pero no en la poblacion.
El bajo peso al nacer, definido como por un peso al nacer inferior a 2500 gr., ha sido una preocupación de los médicos durante años debido a que tanto las tasas de mortalidad como la de nacimientos defectuosos son muy altas para los niños con bajo peso al nacer. El comportamiento de la mujer durante el embarazo (incluyendo la dieta, los hábitos tabáquicos y los cuidados prenatales) pueden alterar las chances de un parto de un niño con bajo peso.
Los datos que se presentan en este ejercicio corresponden a 189 nacimientos de los cuales 59 han resultado en niños con bajo peso. El objetivo de este ejercicio es determinar cuáles de las variables presentes en la base de datos que se adjunta son factores de riesgo de bajo peso al nacer.
La base de datos que se presenta (archivo LOWBWT.sav) contiene las siguientes variables:
ID: Código de identificación
LOW: Bajo peso al nacer. (0 = ≥2500 g; 1 = <2500 g) (variable dependiente)
AGE: Edad de la madre
LWT: Peso de la madre el momento de la última menstruación (en libras)
RACE: Raza (1 = White; 2 = Black; 3 = Other)
SMOKE: Fumó durante el embarazo (0 = No 1 = Yes)
PTL: Antecedentes de embarazos prematuros (0 = None; 1 = One; 2 = Two, etc).
HT: Antecedentes de hipertensión arterial (0 = No; 1 = Yes)
UI: Irritabilidad uterine (0 = No; 1 = Yes)
FTV: Cantidad de consultas obstétricas durante el primer trimestre (0 = None; 1 = One; 2 = Two, etc.)
BWT: Peso al nacer del bebé en gramos
Se requiere construir una ecuación de regresión logística que relacione la variable dicotómica que indica si se trata de un nacimiento con bajo peso al nacer con el resto de las variables que corresponda, y determinar si estas variables son útiles para predecir la variable dependiente.
#Levantamos la base
bajopeso<- read_sav("LOWBWT.sav")
Calcular el riesgo relativo y los odds ratio de la variable dependiente con todas las variables dicotómicas. Analizar los resultados.
El riesgo relativo (RR) y el oddsratio corresponden a medidas que han sido utilizadas tradicionalmente en epidemiología pero luego ampliadas a otras ciencias incluyendo las ciencias sociales. El concepto de riesgo relativo refiere a la probabilidad de que un grupo en particular pueda sufrir algún riesgo en contraposición de otro grupo.
En nuestro caso y a partir de la información proveniente de nuestro set de datos calcularemos el riesgo relativo (RR) de tener un hijo con bajo peso al nacer según estén presentes o no los distintos factores de riesgo considerados. Para ello vamos a tener en cuenta que el RR de tener un hijo con bajo peso al nacer para el factor T se define como:
RR = (P (BAJOPESO |T+ )/ P (BAJOPESO |T−))
donde BAJOPESO significa que el sujeto padece la enfermedad, T+ significa que el posible factor de riesgo está presente y T− que está ausente.
A continuación calculamos los riesgos relativos para todas las variables dependientes:
# Creamos las tablas de doble entrada para cada una de las variables dicotomicas y asi luego calcular los riesgos relativos y odds ratio.
#CREAMOS TABLAS CON FRENCUENCIAS PARA LAS VARIABLES BAJO PESO X FUMO DURENTE EL EMBARAZO
towaylowandsmoke<- table(bajopeso$SMOKE, bajopeso$LOW )
towaylowandsmoke
##
## Peso aceptable Bajo peso
## No fumo 86 29
## Fumo 44 30
#TABLA PORCENTUALIZADA
towaylowandsmoke2<- prop.table(towaylowandsmoke,2)
towaylowandsmoke2
##
## Peso aceptable Bajo peso
## No fumo 0.6615385 0.4915254
## Fumo 0.3384615 0.5084746
El 51% de los niños con bajo peso al nacer son de madres fumadoras, también 33% de los niños que nacieron con un peso aceptable son de madres fumadoras. Para calcular el riesgo relativo, debemos determinar cual es la probabilidad de tener hijos con bajo peso al nacer si la madre fuma y la probabilidad de tener hijos si la madre no fuma.
#riesgo relativo
#Invertimos las probabilidades para calcularlas por fila
towaylowandsmoke2<- prop.table(towaylowandsmoke,1)
towaylowandsmoke2
##
## Peso aceptable Bajo peso
## No fumo 0.7478261 0.2521739
## Fumo 0.5945946 0.4054054
#Calculamos la probabilidad de tener un hijo con bajo peso al nacer cuando la madre fuma sobre la probabilidad de tener un hijo con bajo peso al nacer cuando la madre no fuma.
rrbxf<- towaylowandsmoke2[2,2]/towaylowandsmoke2[1,2]
rrbxf
## [1] 1.607642
Entonces viendo el riesgo relativo podemos decir que el riesgo de tener un hijo con bajo peso al nacer es 1.61 mas alta cuando la madre es fumadora que entre las no fumadoras.
El oddsratio en cambio mide la asociacion entre dos eventos A y B, medida que el riesgo relativo no arroja ya que no da cuenta de asociacion. A modo de ejemplo, si volvemos a la relacion entre bajo peso al nacer y fumadoras, si consideramos que el suceso A es bajo peso, entones el contrario Ac es peso aceptable. Asimismo, si el suceso B es fumar, el Bc seria no fumar. Entonces, podriamos calcular el Oddsratio mediante.
OR (BAJOPESO, T) = (P(BAJOPESO | T+)/P(PESOACEPTABLE | T+))/(P(BAJOPESO | T−)/P(PESOACEPTABLE | T−))
#Calculo para el oddsratio
ORbxf<- (towaylowandsmoke2[2,2]/towaylowandsmoke2[2,1])/(towaylowandsmoke2[1,2]/towaylowandsmoke2[1,1])
ORbxf
## [1] 2.021944
Viendo el odds ratio podemos decir que hay asociacion entre las variables. El efecto de la variable SMOKE sobre el bajo peso al nacer influye de manera tal que se duplica (2.02) la probabilidad de tener un hijo con bajo peso al nacer cuando la mujer fuma.
#CREAMOS LAS TABLAS PARA LAS FRECUENCIAS DE LAS VARIABLES bajo peso x hipertension
towaylowandht<- table(bajopeso$HT, bajopeso$LOW)
towaylowandht
##
## Peso aceptable Bajo peso
## No 125 52
## Yes 5 7
#TABLA PORCENTUALIZADA
towaylowandht2<- prop.table(towaylowandht,2)
towaylowandht2
##
## Peso aceptable Bajo peso
## No 0.96153846 0.88135593
## Yes 0.03846154 0.11864407
El 11% de los ninos con bajo peso al nacer son de madres hipertensas, tambien un 3% de los ninos con peso aceptable al nacer son de madres hipertensas.
#Riesgo relativo
towaylowandht2<- prop.table(towaylowandht,1)
rrbxht<- towaylowandht2[2,2]/towaylowandht2[1,2]
rrbxht
## [1] 1.985577
El riesgo relativo de tener un hijo con bajo peso al nacer cuando la madre tiene hipertension es 1.98 mas alta que cuando la madre no tiene hipertension.
#Odds ratio
ORbxht<- (towaylowandht2[2,2]/towaylowandht2[2,1])/(towaylowandht2[1,2]/towaylowandht2[1,1])
ORbxht
## [1] 3.365385
Hay una asociacion entre la hipertension y el bajo peso al nacer. De modo tal que la presencia de hipertension triplica (3.37) la probabilidad de presencia de bajo peso en el nino al nacer.
#BAJO PESO X IRRITBALIDAD UTERINA
towaylowandui<- table(bajopeso$UI, bajopeso$LOW )
towaylowandui
##
## Peso aceptable Bajo peso
## No 116 45
## Yes 14 14
#Tabla porcentualizada
towaylowandui2 <- prop.table(towaylowandui,2)
towaylowandui2
##
## Peso aceptable Bajo peso
## No 0.8923077 0.7627119
## Yes 0.1076923 0.2372881
El 24% de los ninos con bajo peso al nacer son de madres que sufren irritabilidad urinaria, tambien 11% de los ninos con peso aceptable al nacer son de madres que no sufren irritabilidad urinaria.
#Riesgo relativo
towaylowandui2 <- prop.table(towaylowandui,1)
rrbxui<- towaylowandui2[2,2]/towaylowandui2[1,2]
rrbxui
## [1] 1.788889
El riesgo de tener hijos con bajo peso al nacer es casi dos veces (1.8) mayor para las madres con problemas de irritabilidad urinaria.
#Odds ratio
ORbxui<- (towaylowandui2[2,2]/towaylowandui2[2,1])/(towaylowandui2[1,2]/towaylowandui2[1,1])
ORbxui
## [1] 2.577778
Existe entonces una asociacion entre la variable irritabilidad urinaria y el bajo peso al nacer. Viendo el odds ratio podemos decir que el efecto de la variable UI sobre el peso del bebe influye de manera tal que se duplica (2.58) cuando la madre tiene irritabilidad urinaria.
Cuál es la definición de odds ratio? Qué información suministra y de qué manera puede calcularse utilizando la regresión logística?
El odds ratio es una medida de asociacion que es ampliamente usada en epidemiologia y tiene por objeto determinar la probabilidad de ocurrencia de un fenomeno presente en la variables independientes. Esto quiere decir la probabilidad de que x=1 o x=0.
Este principio es utilizado en los modelos de regresion logistica ya que permite determinar la probabilidad de ocurrencia de la variable “Y” en tanto “X”. Lo que nos dice el Odds ratio es en cuanto la variable independiente influye sobre la variable dependiente.
A partir de la noción de Odd podemos pensar la forma de mostrar una relación algebraica que nos permita indicar la probabilidad de respuesta -afirmativa- que tiene un entrevistado escogido al azar. En su lógica el Odds ratio se expresa de la siguiente manera:
Podemos entonces definir el logit, simplemente como el logaritmo del Odd:
El modelo de regresion logistica parte del mismo razonamiento y se expresa como el logaritmo natural de la probabilidad de ocurrencia de un fenomeno sobre la probabilidad de ocurrencia menos uno. Entonces, la información que suministra el odds es sobre la fuerza de la probabilidad ocurrencia o no de un evento en el cálculo de la regresión logística.
A continuación se calculan a modo de ejemplo las variables del punto anterior pero mediante el método de regresión logística simple:
Calcule los odds ratio de cada una de las variables predictoras con la variable dependiente? Comentar.
En nuestro set de variable nos encontramos que algunas de las predictoras no son dictomicas, esto implica un tratamiento sobre las mismas para poder calcular los oddsratio. Esta medida de asociacion se puede calcular solo a partir de la ocurrencia o no de los fenomenos. Por lo tanto, es necesario transformar las variables de numericas, ordinales y nominales con mas de dos alternativas, en variables dicotomicas.
En el caso de nuestro ejemplo, las variables que se dicotomizaran son:
EDAD RAZA CANTIDAD DE EMBARAZOS PREMATUROS CONSULTAS MEDICAS
Para dicotomizar estas variables observaremos la distribucion de las mismas para observar tendencias. Asimismo, otras variables como las categoricas, se dicotomizaran a partir de una aproximacion teorica.
#Observamos la distribucion para dicotomizar las variables cuantitativas. Corregir y crear variables dummy como simulacion
#Histograma edad
hist.scott(bajopeso$AGE)
#Histograma raza
bajopeso$RACE2<- as.numeric(bajopeso$RACE)
hist(bajopeso$RACE2)
#Histograma embarazon prematuros previos
hist(bajopeso$PTL)
#Histograma conusltas medicas
hist(bajopeso$FTV)
#Histograma peso al nacer
hist(bajopeso$BWT)
A partir de la distribucion de frecuencias, las variables se dicotomizaran de la siguiente manera.
EDAD: Mayor de 25 anos y Menor de 25 anos RAZA: Blaco y otras razas. EMBARAZOS PREMATUROS: Sin embarazos prematuros y con embarazos prematuros. CONSULTAS MEDICAS: Sin consultas medicas y con consultas medias.
#Creamos nuevas variables dicotomizandos tentiendo en cuenta las distribuciones observadas en los histogramas
bajopeso2<- bajopeso %>% mutate(AGE2 = case_when(AGE < 25 ~ "Menor de 25",
AGE>=25 ~ "Mayor de 25"),
RACE2 = case_when(as.numeric(RACE) == 1 ~ "Blanco",
as.numeric(RACE) >= 2 ~ "Otra raza"),
PTL2= case_when(PTL ==0 ~ "Sin embarazo prematuro",
PTL >= 1 ~ "Con embarazo prematuro"),
FTV2= case_when(FTV == 0 ~ "Sin consultas",
FTV>= 1~ "Con consultas"))
#Creamos las tablas de doble entrada para la edad recodificadas y el bajo peso al nacer y corremos el analisis del oddsratio.
#Tabla de doble entradada
towaylowandage<- table(bajopeso2$AGE2, bajopeso2$LOW)
#Tabla con proporciones por fila
towaylowandage2<- prop.table(towaylowandage,1)
#Calculo para el oddsratio
ORbxa<- (towaylowandage2[1,2]/towaylowandage2[1,1])/(towaylowandage2[2,2]/towaylowandage2[2,1])
ORbxa
## [1] 0.76
Para las variables edad de la madre y el bajo peso al nacer no hay asociacion. El oddsratio que arroja es menor a 1 (0.76), entonces se puede decir que no hay asociacion entre las variables.
#Creamos las tablas de doble entrada para la raza recodificadas y el bajo peso al nacer
towaylowandrace<- table(bajopeso2$RACE2, bajopeso2$LOW)
#Tabla con proporciones por fila
towaylowanrace2<- prop.table(towaylowandrace,1)
#Calculo para el oddsratio
ORbxr<- (towaylowanrace2[1,2]/towaylowanrace2[1,1])/(towaylowanrace2[2,2]/towaylowanrace2[2,1])
ORbxr
## [1] 0.4988584
Para las variables raza de la madre y el bajo peso al nacer no hay asociacion. El oddsratio que arroja es de 0.50.
#Creamos las tablas de doble entrada para embarazo prematuro recodificadas y el bajo peso al nacer
towaylowandprematuros<- table(bajopeso2$PTL2, bajopeso2$LOW)
#Tabla con proporciones por fila
towaylowandprematuros2<- prop.table(towaylowandprematuros,1)
#Calculo para el oddsratio
ORbxpr<- (towaylowandprematuros2[1,2]/towaylowandprematuros2[1,1])/(towaylowandprematuros2[2,2]/towaylowandprematuros2[2,1])
ORbxpr
## [1] 4.317073
Para las variables embarazo prematuros previos y hijos con bajo peso al nacer se observa una fuerte asociacion. Las madres que tuvieron un embarazo prematuro anterior tienen un 4.4 de probabilidades de tener un hijo con bajo peso.
#Creamos las tablas de doble entrada para consultas al medico recodificadas y el bajo peso al nacer
towaylowandmedical<- table(bajopeso2$FTV2, bajopeso2$LOW)
#Tabla con proporciones por fila
towaylowandmedical2<- prop.table(towaylowandmedical,1)
#Calculo para el oddsratio
ORbxcons<- (towaylowandmedical2[1,2]/towaylowandmedical2[1,1])/(towaylowandmedical2[2,2]/towaylowandmedical2[2,1])
ORbxcons
## [1] 0.6195286
Para las variables consultas previas al medico y el bajo peso al nacer no hay asociacion. El oddsratio que arroja es de 0.62.
Podriamos calcular el Odds ratio sin necesidad de recategorizar las variables en dicotomicas, para ello debemos utilizar UN MODELO DE REGRESION LOGISTICA. Se debe asignar el tipo de variable con la que queremos que el modelo tome nuestras variables y luego utilizar la funcion de glm para determinar la asociacion.
# Regresion logistica bajo peso al nacer segun edad.
lowxage<- glm(LOW ~ AGE, family = "binomial", data = bajopeso)
summary(lowxage)
##
## Call:
## glm(formula = LOW ~ AGE, family = "binomial", data = bajopeso)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.0402 -0.9018 -0.7754 1.4119 1.7800
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.38458 0.73212 0.525 0.599
## AGE -0.05115 0.03151 -1.623 0.105
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 234.67 on 188 degrees of freedom
## Residual deviance: 231.91 on 187 degrees of freedom
## AIC: 235.91
##
## Number of Fisher Scoring iterations: 4
#El incremento usado para AGE es distinto ya que solo usamos incremento ! para variables dicotomicas o cualitativas. El caso de edad usamos un incremento de 15 para que nos compare aquellos grupos de edad que difieran en 15 unidades.
gg<- or_glm(data = bajopeso, model = lowxage, incr = list(AGE=15))
gg
## predictor oddsratio ci_low (2.5) ci_high (97.5) increment
## 1 AGE 0.464 0.178 1.144 15
Utilizando la funcion de or_glm con un incremento de 15 para la edad observamos que no hay asociacion significativa entre la variable edad y peso debido a que el intervalo del confianza inferior (0.494) se encuentra por debajo de 1.
# Regresion logistica bajo peso al nacer segun embarazo prematuro previo
lowxptl<- glm(LOW ~ PTL, family = "binomial", data = bajopeso)
gg3<- or_glm(data = bajopeso2, model = lowxptl, incr = list(PTL=1))
gg3
## predictor oddsratio ci_low (2.5) ci_high (97.5) increment
## 1 PTL 2.23 1.218 4.284 1
Utilizando la funcion de or_glm con un incremento de 1 para los embarazos prematuros previos observamos que hay asociacion significativa entre la variable embarazos prematuros y bajo peso al nacer debido a que el intervalo del confianza inferior (1.218) se encuentra por encima de 1.
# Regresion logistica bajo peso al nacer segun raza
lowxrace<- glm(LOW ~ factor(RACE), family = "binomial", data = bajopeso)
gg2<- or_glm(data = bajopeso, model = lowxrace, incr = list(RACE=1))
gg2
## predictor oddsratio ci_low (2.5) ci_high (97.5) increment
## 1 factor(RACE)Black 2.328 0.926 5.775 Indicator variable
## 2 factor(RACE)Other 1.889 0.957 3.758 Indicator variable
Para el caso de la variable RACE, observamos que el intervalo de confianza del limite inferior se halla por debajo de 1 y por lo tanto, podemos decir que no hay una asociacion entre el bajo peso al nacer y la raza de la madre.
Realizar una regresión logística múltiple, seleccionando los mejores predictores entre las variables independientes disponibles, utilizando un método de selección automática. Describir el proceso de selección automática utilizado. (Sug. Considerar como probabilidad de entrada 0.10 y de salida del modelo 0.15.)
El modelo de regresion logistica multiple nos permitira determinar cual es el impacto de las variables independientes sobre la variable dependiente.
Cuando nuestro set de variables explicativas es tan amplio podemos encontrarnos con algunas dificultades para definir aquellas que seran ingresadas en el modelo. Muchas veces las variables independientes no impactan significativamente en nuestra variable explicada, como asi tambien puede que suceda que entre las variables explicativas se den fenomenos de multicolinealidad. Por ello, el modo de buscar el modelo mas optimo removiendo aquellas variables que no sumen a la explicacion y que presenten multicolinealidad es mediante el metodo de Akaike Information Critera (AIC).
El metodo de AIC funciona de manera similar al R2 ajustado siguiendo la logica de penalizar por agregar mas variables al modelo. Es una medida que funciona siempre y cuando en referencia a otras, ya que un AIC no nos dice nada por si mismo. Solamente podemos determinar cual es el modelo mas optimo de nuestro set de variables disponibles a partir de seleccionar aquel que tenga el valor de AIC mas bajo.
El metodo StepAIC permite tres tipos de tecnicas de seleccion, las cuales son:
Backward
Forward
Both
La explicacion de estas tecnicas de seleccion se halla en el punto 2 de regresion lineal multiple siendo que la lógica para la selección es similiar. Para nuestro objetivo, vamos a tomar la tecnica de seleccion “both” que combina el metodo de seleccion “backward” y “forward”.
#Primero corremos un modelo binomial sin predictores. Por eso se agrega ~1 en lugar de los predictores.
logistica <- glm(LOW~1, family = "binomial", data = bajopeso )
#Luego cargamos el modelo a evaluar. EL objeto creado en la linea anterior sera usado como modelo inicial asignando como modelo maximo el set de predictores y como minimo 1. Asimismo, la probabilidad de entrada de 0.10 y de salida 0.15.
modelostep<- stepAIC(logistica, scope= list( upper= ~ AGE + LWT + factor(RACE) + factor(SMOKE) + PTL + factor(HT) + factor(UI) + FTV, lower=~1), direction = c("both"), trace = T, pent=0.10, prem=0.15)
## Start: AIC=236.67
## LOW ~ 1
##
## Df Deviance AIC
## + PTL 1 227.89 231.89
## + LWT 1 228.69 232.69
## + factor(UI) 1 229.60 233.60
## + factor(SMOKE) 1 229.81 233.81
## + factor(HT) 1 230.65 234.65
## + factor(RACE) 2 229.66 235.66
## + AGE 1 231.91 235.91
## <none> 234.67 236.67
## + FTV 1 233.90 237.90
##
## Step: AIC=231.89
## LOW ~ PTL
##
## Df Deviance AIC
## + LWT 1 223.41 229.41
## + factor(HT) 1 223.58 229.58
## + AGE 1 224.27 230.27
## + factor(RACE) 2 222.53 230.53
## + factor(SMOKE) 1 224.78 230.78
## + factor(UI) 1 224.89 230.89
## <none> 227.89 231.89
## + FTV 1 227.30 233.30
## - PTL 1 234.67 236.67
##
## Step: AIC=229.41
## LOW ~ PTL + LWT
##
## Df Deviance AIC
## + factor(HT) 1 215.96 223.96
## + factor(RACE) 2 217.68 227.68
## + factor(SMOKE) 1 220.54 228.54
## + AGE 1 221.05 229.05
## + factor(UI) 1 221.23 229.23
## <none> 223.41 229.41
## + FTV 1 223.12 231.12
## - LWT 1 227.89 231.89
## - PTL 1 228.69 232.69
##
## Step: AIC=223.96
## LOW ~ PTL + LWT + factor(HT)
##
## Df Deviance AIC
## + factor(RACE) 2 210.85 222.85
## + factor(UI) 1 213.01 223.01
## + factor(SMOKE) 1 213.15 223.15
## <none> 215.96 223.96
## + AGE 1 214.01 224.01
## + FTV 1 215.84 225.84
## - PTL 1 221.14 227.14
## - factor(HT) 1 223.41 229.41
## - LWT 1 223.58 229.58
##
## Step: AIC=222.85
## LOW ~ PTL + LWT + factor(HT) + factor(RACE)
##
## Df Deviance AIC
## + factor(SMOKE) 1 204.90 218.90
## + factor(UI) 1 207.73 221.73
## <none> 210.85 222.85
## + AGE 1 209.81 223.81
## - factor(RACE) 2 215.96 223.96
## + FTV 1 210.82 224.82
## - PTL 1 216.29 226.29
## - factor(HT) 1 217.68 227.68
## - LWT 1 218.69 228.69
##
## Step: AIC=218.9
## LOW ~ PTL + LWT + factor(HT) + factor(RACE) + factor(SMOKE)
##
## Df Deviance AIC
## + factor(UI) 1 201.99 217.99
## <none> 204.90 218.90
## + AGE 1 204.11 220.11
## - PTL 1 208.25 220.25
## + FTV 1 204.88 220.88
## - factor(SMOKE) 1 210.85 222.85
## - factor(RACE) 2 213.15 223.15
## - factor(HT) 1 211.55 223.55
## - LWT 1 211.62 223.62
##
## Step: AIC=217.99
## LOW ~ PTL + LWT + factor(HT) + factor(RACE) + factor(SMOKE) +
## factor(UI)
##
## Df Deviance AIC
## <none> 201.99 217.99
## - PTL 1 204.22 218.22
## - factor(UI) 1 204.90 218.90
## + AGE 1 201.43 219.43
## + FTV 1 201.93 219.93
## - factor(SMOKE) 1 207.73 221.73
## - LWT 1 208.11 222.11
## - factor(RACE) 2 210.31 222.31
## - factor(HT) 1 209.46 223.46
A partir del analisis de stepAIC podemos observar que el modelo que arroja el valor de AIC mas bajo es
LOW ~ PTL + LWT + factor(HT) + factor(RACE) + factor(SMOKE) + factor(UI)
Es en este punto donde vale la pena aclarar que el metodo de regresion logistica utiliza el metodo de maxima verosimilitud para ajustar nuestro modelo a un modelo ideal. A diferencia del metodo de regresion lineal, el metodo de regresion logistica no puede asumir el metodo de los minimos cuadrados para trazar una linea perfecta de asociacion entre las variables. Por lo tanto, se transforma esta ultima en una funcion logaritmica como la que se muestra a continuacion:
Es a partir de este metodo que se introduce, junto al concepto de AIC, el concepto de “Deviance” como un valor que mide la bondad de ajuste de una regresion logistica. Se entiende como la distancia que tenemos al ajuste perfecto del modelo.
Se observa entonces que este modelo seleccionado no solo presenta el menor valor de AIC, sino que tambien las menores deviancias para cada variable explicativa.
Según el modelo obtenido, cuáles son los principales factores de riesgo del bajo peso y cuál es la magnitud de su efecto?
Para determinar cuales son los principales factores de riesgo de bajo peso al nacer y la magnitud de su efecto debemos tomar el modelo obtenido y observar su significancia sobre la variable dependiente.
#El modelo obtenido es el de menor aic (AIC=217.09)
modeloreglog2<- glm(LOW ~ PTL + LWT + factor(HT) + factor(RACE) + factor(SMOKE) +
factor(UI), family = "binomial", data = bajopeso)
summary(modeloreglog2)
##
## Call:
## glm(formula = LOW ~ PTL + LWT + factor(HT) + factor(RACE) + factor(SMOKE) +
## factor(UI), family = "binomial", data = bajopeso)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.9049 -0.8124 -0.5241 0.9483 2.1812
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.086550 0.951760 -0.091 0.92754
## PTL 0.503215 0.341231 1.475 0.14029
## LWT -0.015905 0.006855 -2.320 0.02033 *
## factor(HT)Yes 1.855042 0.695118 2.669 0.00762 **
## factor(RACE)Black 1.325719 0.522243 2.539 0.01113 *
## factor(RACE)Other 0.897078 0.433881 2.068 0.03868 *
## factor(SMOKE)Fumo 0.938727 0.398717 2.354 0.01855 *
## factor(UI)Yes 0.785698 0.456441 1.721 0.08519 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 234.67 on 188 degrees of freedom
## Residual deviance: 201.99 on 181 degrees of freedom
## AIC: 217.99
##
## Number of Fisher Scoring iterations: 4
Vemos entonces que en nuestro modelo solo las variable UI (irritabilidad urinaria) y PTL (embarazos prematuros previos) no son significativos. Si bien estas variables podrian ser retiradas del modelo para asi optimizarlo, observaremos a continuacion que el valor de AIC seria mayor.
#Modelo de prueba sin las variables significativas estadisticamente
modeloreglog3<- glm(LOW ~ LWT + factor(HT) + factor(RACE) + factor(SMOKE), family = "binomial", data = bajopeso)
summary(modeloreglog3)
##
## Call:
## glm(formula = LOW ~ LWT + factor(HT) + factor(RACE) + factor(SMOKE),
## family = "binomial", data = bajopeso)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.7751 -0.8747 -0.5712 0.9634 2.1131
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.352049 0.924438 0.381 0.70333
## LWT -0.017907 0.006799 -2.634 0.00844 **
## factor(HT)Yes 1.749163 0.690820 2.532 0.01134 *
## factor(RACE)Black 1.287662 0.521648 2.468 0.01357 *
## factor(RACE)Other 0.943645 0.423382 2.229 0.02583 *
## factor(SMOKE)Fumo 1.071566 0.387517 2.765 0.00569 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 234.67 on 188 degrees of freedom
## Residual deviance: 208.25 on 183 degrees of freedom
## AIC: 220.25
##
## Number of Fisher Scoring iterations: 4
A modo de conclusion uno podria decir que detras de las variables de nuestro modelo hay otras variables con las cuales no contamos que podrian explicar mejor el bajo peso al nacer del nino. Se podria decir incluso que en realidad la variable raza (RACE) esta funcionando como proxy a una variable que daria cuenta de las condiciones de vida de la madre. Una madre con problemas alimenticios producto de la marginalidad, no satisfaceria las necesidades nutricionales basicas para el desarrollo del nino en el utero.
En el caso de la magnitud, podemos abordar el problema mediante los oddsratio de cada una de las variables independientes con la variable dependiente. Para nuestro modelo, la maginitud del impacto de los factores de riesgo son los siguientes:
#Oddsratio para nuestro modelo de regresion logistica seleccionado, Para ello debemos introducir los incrementos correspondientes a las variables independientes.
bajopeso<- bajopeso %>% mutate(LOW2 = case_when(LOW == "Bajo peso" ~ 1, LOW == "Peso aceptable" ~ 0)) #recodificamos para asignar valores 1 y 0, presencia y ausencia del evento.
modeloreglog2<- glm(LOW2 ~ PTL + LWT + factor(HT) + factor(RACE) + factor(SMOKE) +
factor(UI), family = "binomial", data = bajopeso)
summary(modeloreglog2)
##
## Call:
## glm(formula = LOW2 ~ PTL + LWT + factor(HT) + factor(RACE) +
## factor(SMOKE) + factor(UI), family = "binomial", data = bajopeso)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.9049 -0.8124 -0.5241 0.9483 2.1812
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.086550 0.951760 -0.091 0.92754
## PTL 0.503215 0.341231 1.475 0.14029
## LWT -0.015905 0.006855 -2.320 0.02033 *
## factor(HT)Yes 1.855042 0.695118 2.669 0.00762 **
## factor(RACE)Black 1.325719 0.522243 2.539 0.01113 *
## factor(RACE)Other 0.897078 0.433881 2.068 0.03868 *
## factor(SMOKE)Fumo 0.938727 0.398717 2.354 0.01855 *
## factor(UI)Yes 0.785698 0.456441 1.721 0.08519 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 234.67 on 188 degrees of freedom
## Residual deviance: 201.99 on 181 degrees of freedom
## AIC: 217.99
##
## Number of Fisher Scoring iterations: 4
modeloreglog2oddsratio<- or_glm(data = bajopeso, model = modeloreglog2, incr = list(PTL=1, LWT=10, RACE=1, SMOKE=1, UI=1))
modeloreglog2oddsratio
## predictor oddsratio ci_low (2.5) ci_high (97.5) increment
## 1 PTL 1.654 0.855 3.305 1
## 2 LWT 0.853 0.739 0.969 10
## 3 factor(HT)Yes 6.392 1.694 27.265 Indicator variable
## 4 factor(RACE)Black 3.765 1.356 10.681 Indicator variable
## 5 factor(RACE)Other 2.452 1.062 5.877 Indicator variable
## 6 factor(SMOKE)Fumo 2.557 1.185 5.709 Indicator variable
## 7 factor(UI)Yes 2.194 0.888 5.388 Indicator variable
Siguiendo con lo expuesto arriba, diriamos que los factores de riesgo con mayor magnitud de impacto en la probabilidad de tener un nino con bajo peso al nacer son; la hipertension (6.4), el tabaquismo (2.6) y ser de raza negra (3.8).
Cuáles son los supuestos necesarios para definir la prueba inferencial de los estimadores de los parámetros?
La regresion logistica no parte de los mismos supuestos de los que parten la regresion lineal y los modelos lineales. Estos ultimos se basan en el metodo de los minimos cuadrados tales como la normalidad y la homoecedasticidad, mientras que la regresion logistica trabaja con todo tipo de relaciones, debido a que aplica una transformacion no linear logaritmica a los Oddsratio predichos. Por lo tanto, los supuestos que se aplican a estos modelos difieren levemente de los supuestos lineales.
Entre los principales supuestos necesarios para la regresion logistica necesitamos que:
*Debido a que la regresion logistica asume que P(Y=1) es la probabilidad de que un evento ocurra, es necesario que la variable explicada se encuentre codificada acorde al resultado deseado.
*El modelo debe ser ajustado correctamente, se debe evitar el overfitting u el underfitting. Solo las variables que optimicen el modelo deben ser incluidas.
*Se requiere que las observaciones sean independientes y que las variables independientes sean independientes entre si.
*De la mano del punto anterior, se requiere que las variables que presenten multicolinealidad sean removidas o, al menos, reducir la multicolinealidad lo mas posible.
*Si bien la linealidad en sentido de la regresion lineal no aplica la regresion logistica, se busca que la linealidad se asuma entre el logaritmo de los odds y las variables independientes. De otro modo, el test subestima la fuerza de la relacion rechazandola.
*Por ultimo, es necesario trabajar con muestras grandes. Debido a que el metodo de maxima verosimilitud es menos “poderoso” que el metodo de los minimos cuadrados, la regresion logistica requiere al menos un minimo de 10 observaciones en las variables independientes.
Analizar la bondad del ajuste del modelo obtenido, comentando los indicadores y/o test que considera.
La bondad del ajuste de un modelo de regresion logistica sirve para comprobar que tan bueno es el ajuste de los valores predichos por el modelo a los valores observados.
Para ello, buscaremos contrastar la hipotesis nula con respecto a la hipotesis alternativa. Nuestra hipotesis nula dice que “los valores predichos por el modelo se ajustan a los valores observados” y nuestro objetivo es no rechazarla.
Los principales modos de analizar la bondad del ajuste del modelo obtenido son mediantes distintos metodos, los cuales se pueden dividir en los siguientes grupos:
*Test basados en patrones de las covariables (Devianza D y Estadistico Chi cuadrado de Pearsons X2).
*Test basados en probabilidades estimadas (Estadistico de Hosmer-Lemeshow C9 y Estadistico de Hosmer-Lemeshow H9).
*Test Score (Test Score de Brown B, Estadistico Score de Stukel Sst y Estadistico de Tsiatis T).
*Test basados en residuos suavizados (Estadisticos de le Cessie y Van Houwelingen Tlc).
*Medidas tipo R2.
*Curva de ROC
A continuacion procedemos a analizar la bondad de ajuste con los metodos basados en patrones de la covariabilidad y mediante la curva de ROC.
Metodos basados en patrones de la covariabilidad
#Test de bondad de ajuste para la devianza.
sum(residuals(modeloreglog2, type = "deviance")^2)
## [1] 201.9856
1-pchisq(sum(residuals(modeloreglog2, type = "deviance")^2),181)
## [1] 0.1361586
Como detallamos antes, nuestro objetivo es no rechazar la hipotesis nula y por ende, nuestro test de bondad de ajuste para la devianza deberia ser mayor a 0.05. Siendo que P= 0.13 entonces diriamos que aceptamos la hipotesis nula. Nuesro modelo global se ajusta bien a los datos.
#Test de bondad de ajuste para X2
sum(residuals(modeloreglog2, type = "pearson")^2)
## [1] 183.8258
1-pchisq(sum(residuals(modeloreglog2, type = "pearson")^2),181)
## [1] 0.4274947
Al igual que con el test de bondad de ajuste de la deviance, observamos que el test de X2 arroja la misma conclusion. Siendo que X2 > 0.05, no rechazamos la hipotesis nula y diriamos tambien que nuestro modelo se ajusta bien.
Metodo curva de ROC.
#Calculo de probabilidades
predicmodel<- plogis(predict(modeloreglog2, bajopeso))
#calculo del punto de corte optimo
optCutOff_modelo <- optimalCutoff(bajopeso$LOW, predicmodel)
#Error de clasificacion
errorclasmodelo<- misClassError(bajopeso$LOW, predicmodel, threshold = optCutOff_modelo)
#Curva de ROC
plotROC(bajopeso$LOW2, predicmodel)
El metodo de la CURVA ROC (Receiving operating characteristics curve) nos dice que tan bien se ajusta nuestro modelo al momento de predecir la variable dependiente. Para ello trabaja agrupando las observaciones de nuestro modelo en dos vectores que permiten identificar la sensibilidad y la especificidad del mismo.
La sensibilidad representa el porcentaje de los verdaderos positivos de nuestra prueba, mientras que la especifidad da cuenta del porcentaje los falsos positivos.
#Calculo de sensibilidad del modelo
sensitivity(bajopeso$LOW2, predicmodel, threshold = optCutOff_modelo)
## [1] 1
En la primera se hallan las observaciones que se predijeron correctamente como positivas de todas las observaciones positivas.
#Calculo de especificidad del modelo
specificity(bajopeso$LOW, predicmodel, threshold = optCutOff_modelo)
## [1] 0.005291005
La segunda es la proporción de observaciones que se predicen incorrectamente como positivas de todas las observaciones negativas.
La curva ROC muestra el equilibrio entre estos dos vectores y funciona como clasificador de nuestro modelo, cuanto mas diagonal la curva menor precision tendra nuestro modelo. El area bajo la curva (AUC) nos dice que tan preciso sera nuestro estimador.
Si observamos los resultados podemos dar cuenta de que el modelo tiene una alta sensibilidad y una baja especificidad. Si bien puede predecir correctamente como positivas todas las positivas, predice incorrectamente positivas las observaciones negativas. Con un AUC de 74% podemos decir que el caracter del predictor del modelo es regular.
Indicar porcentaje de casos bien predichos por el modelo.
Para saber cual es el porcentaje de casos bien predichos por el modelo es necesario realizar una matriz de clasificacion que agrupe los casos de nuestra muestra de manera dicotomica ordenando los casos que nuestro modelo predice y los reales. De esta forma, un buen modelo seria aquel que tenga la mayor cantidad de verdaderos positivos y verdaderos negativos.
A continuacion realizamos una matriz de clasificacion con nuestro modelo. Como criterio de corte se toman los valores obtenidos en el punto anterior (optcutoff_modelo = 0.37) para confeccionar la matriz con nuestros datos.
#Matriz de clasificacion
cmatrix_modelo<- confusionMatrix(bajopeso$LOW2, predicmodel, threshold = optCutOff_modelo)
cmatrix_modelo
## 0 1
## 0 1 0
## 1 129 59
Una vez obtenida nuestra matriz podemos identificar los casos falsos positivos y verdaderos positivos, asi podremos saber cual es el porcentaje de casos bien predichos con una simple formula.
#Calculo para saber cuantos casos son bien predichos por el modelo
porc_predmodelo<- (cmatrix_modelo[1,1]+cmatrix_modelo[2,2])/ (cmatrix_modelo[1,1]+cmatrix_modelo[1,2]+ cmatrix_modelo[2,1]+cmatrix_modelo[2,2])
porc_predmodelo
## [1] 0.3174603
Nuestro modelo predice un 32% de los casos de manera correcta. Por lo tanto, la tasa de clasificación es baja y podría ser mejorada. Para ello, nuestro modelo necesitaría ser ajustado con variables que puedan predecir mejor el bajo peso del niño al nacer.
Hilbe Joseph “Practical Guide to Logistic Regression”
Anderson David y Burnham Kenneth “Multimodel Inference: Understanding AIC and BIC in Model Selection”
Bliese Paul " Multilevel modeling in R. A brief introduction to R, the multilevel package and the nlme package".
Cabo Tania Iglesias “Metodos de Bondad de Ajuste en Regresion Logıstica”
Faraway Julian “Linear models with R”
Hosmer David y Lemeshow Stanley “Applied logistic regression”.
Yang Hongwei “The Case for Being Automatic: Introducing the Automatic Linear Modeling (LINEAR) Procedure in SPSS Statistics”
Lopez Abelardo “Estudio de AIC y BIC en la seleccion de modelos de vida con datos censurados”
Reche Jose Luis “Regresión logística. Tratamiento computacional con R.”
Rioja Luis, Llorente Alejandro y Ramirez Beatriz “Regresión Logística: Fundamentos y aplicación a la investigación sociológica”
Santana Angelo “Analisis y tratamiento de datos:Aplicaciones con R”
Triola Mario “Estadística. Decimoprimera edición”
Walpole Ronald, Myers Raymond, Myers Sharon, Ye Keying .“Probabilidad y estadística para ingeniería y ciencias. Novena edición”