Regresion Lineal

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

CONSTRUCCION DE UN MODELO CON REGRESION LINEAL MULTIPLE

PARA ANALIZAR FACTORES QUE INFLUYAN EN LA ESTANCIA


HOSPITALARIA.

Angie Valentina Ramírez-Quintero


Avalentina.ramirez@udea.edu.co

Lina María Henao-Lopera


Lina.Henaol@udea.edu.co

David Mejía-Gómez
David.mejia4@udea.edo.co

Departamento de Ingeniería Industrial, Facultad de Ingeniería, Universidad de Antioquia. Cl.


67 #53-108. Medellín, Colombia.
Resumen: El tiempo de hospitalización de los usuarios es un problema común en los centros
médicos por lo que al existir demoras con la estancia de los pacientes se pueden retrasar
muchas actividades medicas que pueden poner en riesgo la salud de los enfermos en el
hospital, por esto, en este artículo se analiza una variable respuesta lengthoftstay y cuáles son
los factores más comunes que influyen sobre ella. En la metodología se utilizará la regresión
lineal para construir un modelo que sirva para explicar el tiempo de estancia hospitalario. Se
obtienen resultados a partir de la inferencia en la variable respuesta y se analizan mediante
conocimientos previos sobre la estadística inferencial y descriptiva, al final se logra concluir
que es mejor usar otro tipo de metodología para la construcción del modelo ya que la variable
que se esta analizando no sigue una distribución normal.
Palabras claves: modelo, variable, factor, boxplot, distribución, lineal, regresión,
lengthofstay.
Introducción: La duración de un paciente en hospitalización se puede convertir en un
problema cuando la estancia presenta demoras por lo que se pueden retrasar otros
procedimientos médicos como cirugías y diagnósticos, además puede presentarse un
aumento en los costos que dejan sin presupuesto otro tipo de actividades médicas; esta
estancia hospitalaria es de forma indirecta un indicador de calidad del servicio de salud,
teniendo en cuenta que cuando las estancias son muy prolongadas se reduce la posibilidad de
atención a otros usuarios en necesidad de servicios de salud. Existen algunas herramientas
que han sido utilizadas para mejorar esta problemática. A continuación, se lista algunas:
logística hospitalaria, metodologías cuantitativas en salud, procesos, dinámica de sistemas,
teoría de restricción, análisis envolvente de datos, pensamiento esvelto, y procesos de
Márkov. En este caso se analizará de manera profunda una base de datos tomada de la
plataforma kaggle en la cual la se denomina la variable respuesta (lengthofthestay) haciendo
énfasis en esto se construirá un modelo de regresión lineal múltiple para observar que
variables tienen mayor influencia en la estancia hospitalaria y se puedan tomar medidas para
el control de los tiempos de hospitalización, evitando demoras
Metodología: Utilizaremos el software de R con el cual se analizarán los datos y se construirá
el modelo de regresión lineal múltiple.
En primera instancia se hace un análisis de las variables en la base de datos de forma que se
puedan clasificar unas en tipo factor y otras de tipo numérico. Luego se proceden a hacer
grafico de dispersión y boxplots para notar como influye las variables regresoras en la
variable respuesta (lengthofstay) y a partir de esto se pudo determinar que variables eran de
poca relevancia para el modelo. Para ajustar el modelo se tendrá en cuenta la regresión lineal
múltiple y la función lm de R, se toman en cuenta todas las variables menos eid
(identificación de la admisión) y vdate (fecha de visita) pues ambas son identificadores para
clasificar la información. Luego se observan que variables son poco significativas. Para la
selección de las variables se usa el criterio del valor p en la que si el valor p es menor que el
nivel de significancia (0.05) se toma como variable importante y se deja para el modelo. Al
valorar la variable respuesta se puede notar que ella requiere una transformación que puede
ser de tipo logarítmica o de tipo elevación de potencia (0.37), pero para el modelo no se tiene
en cuenta así que se trabaja sobre la variable original. También se tuvo en cuenta el AIC, que
permite mostrar cual podría ser o no el modelo óptimo.

A continuación, se mostrará las pruebas utilizadas para la validación del modelo.


Normalidad de la variable respuesta y residuales del modelo:
1. Qqplot
2. Prueba Anderson-Darling
3. Prueba Jarque-Bera.

Puntos outliers/puntos de influencia: Para la detección de puntos de influencia se usan las


siguientes pruebas.
2
|𝐷𝐹𝐵𝐸𝑇𝐴(𝑖) | > = 0.007068
√𝑛

𝑝
|𝐷𝐹𝐹𝐼𝑇𝑆(𝑖) | > 2√ = 0.03998
𝑛

Si hay alguna observación que no cumpla con estos parámetros será detectado como punto
de influencia y por ende removido de la interpretación.

Multicolinealidad: Se dice que un par de variables presentan multicolinealidad si el VIF


(variance inflation factor) es mayor a cinco para ellas. Si sucede se opta por medidas
remediales como crear un indicador o en su defecto y en caso remoto, eliminar una o ambas
variables.

Varianza constante para residuales: Para verificar que los residuales tengan
homocedasticidad se hacen las siguientes pruebas:
1. La prueba de Breusch-Pagan
2. Gráfico de dispersión de valores ajustados vs residuales
3. Gráfico de cada una de las variables regresoras vs residuales.

Independencia para residuales: Para verificar que los residuales no tengan una
dependencia serial:
1. Gráfico de autocorrelación (ACF)
2. Gráfico de autocorrelación parcial (PACF)
3. Gráfico de orden vs residuales.
4. Prueba de Durbin-Watson
5. Prueba de Breusch-Godfrey

Para la detección de puntos outliers se usará la función en R “ols_plot_resid_lev(modelo1)”


para un gráfico ilustrativo que, de cuentas de todos estos puntos inusuales, también se
requerirá de: “summary (influence. measures(modelo1))” para usar las pruebas anteriormente
mencionadas (DFFITS y DFBETA) para determinar de forma certera estos puntos inusuales.

Formulación de hipótesis:
1. 𝐻0 =La variable genero(gender) no influye en la variable respuesta (lengthofstay).
2. 𝐻0 = la variable número readmisiones (rcount) influye en la variable respuesta
(lendthofstay)
3. 𝐻0 =la variable promedio hematocrito(hematocritic) influye en la variable respuesta.
4. 𝐻0 =la variable bmi (índice de masa corporal) influye en la variable respuesta

Análisis de resultado:
Para hacer el análisis exploratorio se denominaron que variables eran de tipo factor y tipo
numéricas para poder interpretar los resultados de forma más simple, luego del análisis
exploratorio las variables que eran tipo indicador fueron designadas como variables
cuantitativas.
• Variables tipo factor:

Ilustración 1: boxplot comparativo de las variables: vdate, gender, facid, rcount,


dialysisrenalendstage y asthma.
a. En las variables vdate vs. lengthofthestay, no se evidencian cambios
significativos para la variable respuesta por lo que podemos afirmar que la
fecha de visita es irrelevante para el tiempo de estancia, se puede observar que
los boxplots se traslapan, es decir que para la variable lengthofthestay tiene
un comportamiento demasiado similar durante las observaciones.
b. Para la variable gender podemos notar diferencias de acuerdo con el género.
Para el femenino es menor el tiempo de estancia que para masculino, es decir,
que el tiempo promedio de estancia del género masculino es mucho mayor,
para esté podemos notar unas colas pesadas, es decir, que hay datos que se
alejan de la mediana. En el género femenino notamos que el tiempo de
estancia están agrupados entre 3 y 9 aproximadamente la mayoría de sus
datos, y hay 7 datos que se salen de este orden.
c. Se denota similitud entre la categoría A y B de la variable facid, podemos
decir que para ellos dos el tiempo de estancia es estadísticamente el mismo.
Para la categoría C y D de la variable facid, se puede decir que los tiempos
son casi los mismos, pero, en promedio, la clase D tiene menos tiempo de
estancia hospitalaria. Para la categoría E, el tiempo de estancia es menor
comparado con las 4 anteriores presenta una forma más simétrica con respecto
a la figura de boxplot se observan unos candidatos a puntos atípicos igual que
las otras categorías.
d. La variable rcount se configuró para que quedara como una variable tipo
factor dado que algunos datos implican tener más de 5 readmisiones por lo
que al convertirla a tipo factor hace fácil de entender la variable. Hay
diferencias significativas de acuerdo con la cantidad de readmisiones, es decir,
a más número de readmisiones, mayor será el tiempo de estancia. La tendencia
para cada una de las categorías de reingreso y el grosor de sus datos está
concentrado a la izquierda de la distribución.
e. Se puede decir que en la variable dialyisisrenalendstage hay ciertas
diferencias de acuerdo con tener o no enfermedades renales en la estancia
afectando el tiempo de permanencia en el hospital. Se nota que cuando
dialyisisrenalendstage es igual a 1, el tiempo de estancia hospitalario, es
mayor.
f. El indicador de asthma es importante dado que, tener o no la enfermedad
durante la estancia, puede afectar el tiempo en el hospital, aunque la mediana
es igual tanto para 0 como para 1.

Ilustración 2: boxplot comparativo de las variables: pneum, substancedependence,


psychologicaldisordemajor, depres, psychother, fibrosisandoher, malnutrition, hemo.
g. Para la variable pneum también se observa diferencias significativas, dado
que si se tiene o no neumonía se puede estar más o menos tiempo dentro de
las instalaciones, se evidencia que los boxplot se traslapan y hay diferencias
entre las medianas de la categoría 0 y 1 de la variable pneum
h. Para la variable substancedependence se encuentran diferencias de acuerdo
con el tener dependencia a sustancias o no. Estadísticamente se puede decir
que quienes no dependen de sustancias tienen un tiempo de estadía menor a
los que sí. De acuerdo con las diferencias en las medianas se puede reafirmar
lo mencionado anteriormente.
i. Si se tiene un trastorno psicológico mayor, el tiempo es significativamente
superior en comparación cuando no se presenta trastornos psicológicos de esta
clase, lo que afecta en forma directa y variante el tiempo de estancia
hospitalario.
j. El tener o no depresión durante la estancia afecta la estadía hospitalaria, se
puede decir que en las cajas de boxplot, el indicador 0 o 1 se distribuyen de
forma simétrica, aunque los bigotes para ambos tengan un sesgo a derecha.
Se sabe que el presentar depresión durante la estancia da un tiempo de estadía
mayor en comparación a si no se tiene.
k. Para la variable psychother se nota diferencia cuando se tiene o no otros
trastornos psicológicos, dado que, si se tiene, el tiempo de estancia aumentará.
Sin embargo, al sobreponer uno del otro notamos que se traslapan, por ende,
aunque haya diferencias en los tiempos de estancia, podemos decir que el
indicador 0 y 1 para la variable psychother tienen un comportamiento similar.
l. Para la variable fibrosisandother se evidencia diferencia cuando se tiene
fibrosis, dado que, el tiempo de estancia aumenta. Sin embargo, al sobreponer
uno del otro se observa que se traslapan, por ende, aunque haya diferencias en
los tiempos de estancia, se puede decir que el indicador 0 y 1 para la variable
fibrosisandother tienen un comportamiento similar.
m. Para la variable malnutrition se demuestra nuevamente diferencias en el
tiempo de estancia, pues sí presenta malnutrición tiene tiempos de estadías
más largos en comparación a si no presenta malnutrición. Se logra ver una
diferencia pequeña entre las medianas y para ambas se tiene un gran sesgo a
derecha para los bigotes del boxplot.
n. Para la variable hemo, si se presentan desordenes sanguíneos, el tiempo de
estancia hospitalaria va a ser mucho mayor a si no se presenta. Hay una
pequeña diferencia entre las medianas, para ambas hay un sesgo a la derecha.

• Variables cuantitativas

Para la variable respuesta lengthofstay (última columna) en la anterior matriz se


muestra todas las relaciones para cada una de las variables regresoras, se observa que
hay cuatro variables que tienen una correlación muy próxima a cero, es decir que no
existe relación entre ellas y la variable respuesta. para la demás podemos notar una
correlación débil, La mayor correlación de una de las variables regresoras con la
variable respuesta es bloodureanitro (promedio de nitrógeno ureico en la sangre) con
0,15 en la correlación. Se puede decir que entre las variables regresoras no parece
haber multicolinealidad, sin embargo, se tendrá muy en cuenta el comportamiento de
las variables respiration y hematocritic, pues son las que presenta mayor relación en
comparación con las demás.
Ilustración 3: matriz de correlación para las variables cuantitativas

• variable respuesta.
Se toma como variable respuesta lengthofstay (tiempo de estancia hospitalaria) a esta
variable se le realizan las respectivas pruebas de normalidad y los resultados arrojados por
las pruebas analíticas para un 𝛼=0,05 es rechazar la hipótesis de que la variable mencionada
tiene una distribución normal. En los gráficos para la variable notamos que ella tiene un sesgo
muy grande a la derecha

Ilustración 4: Comportamiento de la variable lengthofstay


Por lo anterior se decide hacer una transformación para la variable respuesta,
el software R recomienda hacer una transformación tipo potencia sobre ella,
y al hacer nuevamente las pruebas de normalidad, nos dicen que ella no sigue
una distribución normal. En realidad, es difícil que los datos tengan una
distribución normal o que tiendan a la normalidad, tanto que ni siquiera
forzando los datos esta distribución la pueden seguir. Por ende, se
determinará, si se trabaja con la variable transformada o con la variable sin
transformar, se tomarán en cuenta varios modelos candidatos y se optará por
eliminar aquellos que resulten pocos significativos. Se presenta un gráfico a
continuación donde se puede ver la variable respuesta sin transformar y las
dos posibles transformaciones una que corresponde al logaritmo natural de la
variable y la otra que corresponde elevando la variable a la potencia 0,37.

Ilustración 5:Histogramas de la variable respuesta sin transformar y de la variable


transformada
Se evidencia como al transformar la variable respuesta no se puede llegar a la normalidad
que se necesita, por ende, se procederá a continuar con la variable sin transformar, pues al
momento de hacer una comparativa con los datos del modelo de la variable sin transformar,
a los modelos con la variable transformada se obtiene un mejor 𝑅 2 .

Se procede a hacer la eliminación de puntos influénciales por medio de las pruebas para
2 𝑝
muestras grandes las cuales son |𝐷𝐹𝐵𝐸𝑇𝐴(𝑖) | > = 0.007068 y |𝐷𝐹𝐹𝐼𝑇𝑆(𝑖) | > 2√𝑛 =
√ 𝑛
0.03998 dado que la distancia de cook para todos los puntos es cero.

se eliminaron diez observaciones que se salían de los parámetros DFBETA y DFFITS


anteriormente mencionados, realizamos nuevamente el summary del modelo 1.

para ver cómo se afecta, para el primer sumary del modelo se tuvieron en cuenta todas las
variables excepto las variables Vdate y Eid al hacer esta corrida se evidencio que las
variables: sodium, glucosa, creatinine, bmi, pulse y secondarydiagnosisnonicd9 no son
significantes para nuestro modelo por lo que se tomó la decisión de eliminarlas del modelo y
conservar las variables que nos aportan más al modelo al ser más significantes.
Análisis de multicolinealidad: Analizando el VIF se puede decir que el modelo no presenta
1
problemas de multicolinealidad dado que la columna de salida 𝐺𝑉𝐼𝐹 2∗𝐷𝐹
no supera el límite de 5, es decir que no se requiere medidas remediales.

Columna1 GVIF DF GVIF^(1/(2*Df)) Tabla 1: VIF


Rcount 1.001192 5 1.000119
Gender 1.061751 1 1.030413
Dialysisrenalendstage 1.155862 1 1.075110
Asthma 1.461154 1 1.208782
Irondef 1.524013 1 1.234509
Pneum 1.315686 1 1.147033
Substancedependence 1.337839 1 1.156650
psychologicaldisordermajor 3.241199 1 1.800333
Depress 1.128602 1 1.062357
Psychother 1.449121 1 1.203794
Fibrosisandother 1.086198 1 1.042208
Malnutrition 1.258090 1 1.121646
Hemo 1.082855 1 1.040603
Neutrophils 1.077892 1 1.038216
Facid 10.592129 4 1.343161

Tabla 2: tabla ANOVA

MEAN
Columna1 DF SUM SQ SQ F VALUE PR(>F)
Rcount 5 251304 50261 37957.82 <2.2e-16
Gender 1 2353 2353 1776.80 <2.2e-16
Dialysisrenalendstage 1 12206 12206 9218.39 <2.2e-16
Asthma 1 3161 3161 2380.27 <2.2e-16
Irondef 1 12291 12291 9280.05 <2.2e-16
Pneum 1 3436 3436 2594.84 <2.2e-16
Substancedependence 1 6406 6406 4837.76 <2.2e-16
psychologicaldisordermajor 1 25543 25543 19290.78 <2.2e-16
Depress 1 855 855 646.09 <2.2e-16
Psychother 1 4754 4754 3590.59 <2.2e-16
Fibrosisandother 1 1164 1164 879.03 <2.2e-16
Malnutrition 1 1162 1161 877.19 <2.2e-16
Hemo 1 8099 8099 6116.63 <2.2e-16
Neutrophils 1 814 814 614.84 <2.2e-16
Facid 4 5685 1421 1073.41 <2.2e-16
Residuals 80034 105975 1

Al hacer un análisis con el AIC donde se hacía depuración de las variables una por una se
llegó a la conclusión de que el modelo más optimo es el que se designó al principio cuando
se eliminaron las variables poco significativas, por ende, se continuará con este modelo para
aplicar el ANOVA y hacer la verificación de los supuestos del modelo seleccionado.
̂
𝑙𝑒𝑛𝑔𝑡ℎ𝑜𝑓𝑠𝑡𝑎𝑦
̂ + 2.5591𝑟𝑐𝑜𝑢𝑛𝑡2
= 1.6246 + 0.9930 𝑟𝑐𝑜𝑢𝑛𝑡1 ̂ + 3.5556𝑟𝑐𝑜𝑢𝑛𝑡3 ̂
̂ + 5.5744𝑟𝑐𝑜𝑢𝑛𝑡5
+ 4.5638𝑟𝑐𝑜𝑢𝑛𝑡4 ̂ + 0.0873 𝑔𝑒𝑛𝑑𝑒𝑟𝑀 ̂
̂
+ 0.8047𝑑𝑖𝑎𝑙𝑦𝑠𝑖𝑠𝑟𝑒𝑛𝑎𝑙𝑒𝑛𝑑𝑠𝑡𝑎𝑔𝑒 ̂ + 0.3408𝑖𝑟𝑜𝑛𝑑𝑒𝑓
+ 0.3642𝑎𝑠𝑡ℎ𝑚𝑎 ̂
+ 0.4385𝑝𝑛𝑒𝑢𝑚 ̂
̂ + 0.6116𝑠𝑢𝑏𝑠𝑡𝑎𝑛𝑐𝑒𝑑𝑒𝑝𝑒𝑛𝑑𝑒𝑛𝑐𝑒
̂
+ 0.7745 𝑝𝑠𝑦𝑐ℎ𝑜𝑙𝑜𝑔𝑖𝑐𝑎𝑙𝑑𝑖𝑠𝑜𝑟𝑑𝑒𝑟𝑚𝑎𝑗𝑜𝑟 + 0.3813 𝑑𝑒𝑝𝑟𝑒𝑠𝑠 ̂
̂
+ 0.7152𝑝𝑠𝑦𝑐ℎ𝑜𝑡ℎ𝑒𝑟 ̂
+ 0.8129𝑓𝑖𝑏𝑟𝑜𝑠𝑖𝑠𝑎𝑛𝑑𝑜𝑡ℎ𝑒𝑟
̂
+ 0.3799𝑚𝑎𝑙𝑛𝑢𝑡𝑟𝑖𝑡𝑖𝑜𝑛 ̂ + 0.0224 𝑛𝑒𝑢𝑡𝑟𝑜𝑝ℎ𝑖𝑙𝑠
+ 1.2226ℎ𝑒𝑚𝑜 ̂
̂ + 1.1075𝑓𝑎𝑐𝑖𝑑𝐶
− 0.0052𝑓𝑎𝑐𝑖𝑑𝐵 ̂ + 0.9151𝑓𝑎𝑐𝑖𝑑𝐷 ̂ + 0.7872𝑓𝑎𝑐𝑖𝑑𝐸 ̂

En el Anova se observar que todas las variables son significativas y que 76,34% de la
variabilidad del tiempo de estancia hospitalario es explicado a través del modelo de regresión
seleccionado, y solo el 23,66% es explicado por los residuales, por lo que se puede concluir
que en general el modelo seleccionado explica el tiempo de estancia hospitalaria.

En la verificación de los supuestos del modelo, las pruebas analíticas nos indican que los
residuales no siguen una distribución normal y esto tiene sentido, pues desde el principio
sabíamos que la variable respuesta no seguía una distribución normal ni siquiera aplicando
transformaciones a esta. Por ende, se debe buscar otras medidas remediales u otras formas
de modelar las variables diferentes a la regresión lineal.

Ilustración 6:Normalidad de los residuales


Tampoco tiene una varianza constante, las pruebas analíticas lo reafirman y los puntos no
están aleatoriamente distribuidos alrededor del cero, incluso podemos ver que son varias
líneas decayendo y eso nos puede dar indicios de dependencia en la varianza.
Ilustración 7:heterocedastidad de la varianza

Las pruebas analíticas nos dicen que los residuales tienen una relación serial. Ninguno de los
supuestos es cumplido.

Ilustración 8: relación serial entre los residuales

Respuesta a las hipótesis científicas planteadas:


• 𝐻0 =La variable genero(gender) no influye en la variable respuesta (lengthofstay).
𝐻1 = la variable genero influye en la variable respuesta
Por medio del valor-p se determinó que la variable gender si influye en la variable respuesta
lengthofstay dado que es menor que el nivel de significancia 𝛼 = 0.05 por ende se dice que
la variable es significativa e importante para el modelo.

• 𝐻0 = la variable número readmisiones (rcount) influye en la variable respuesta


(lendthofstay)
𝐻1 = la variable rcount no influye en la variable respuesta.

Por medio del valor-p se determinó que la variable rcount si influye en la variable respuesta
lengthofstay dado que es menor que el nivel de significancia 𝛼 = 0.05 por ende se dice que
la variable es significativa e importante para el modelo.

• 𝐻0 =la variable promedio hematocrito(hematocritic) influye en la variable respuesta.


𝐻1 = la variable hematocritic no influye en la variable respuesta.

Por medio del valor-p se determinó que la variable hematocritic no influye en la variable
respuesta lengthofstay dado que es mayor que el nivel de significancia 𝛼 = 0.05 por ende se
dice que la variable no es significativa e importante para el modelo.

• 𝐻0 =la variable bmi (índice de masa corporal) influye en la variable respuesta


𝐻1 = la variable bmi no influye en la variable respuesta
Por medio del valor-p se determinó que la variable bmi no influye en la variable respuesta
lengthofstay dado que es mayor que el nivel de significancia 𝛼 = 0.05 por ende se dice que
la variable no es significativa e importante para el modelo.

Conclusión: Con la construcción de un modelo de regresión lineal múltiple se logró


identificar los principales factores que influyen en la estancia hospitalaria además de
identificar que efectivamente hay un problema en cuanto a las demoras de un paciente en
hospitalización. Sin embargo, la regresión lineal funciona únicamente con variables
respuesta que sigan una distribución normal por lo que al investigar y tener como evidencia
que la variable lenghtofstay no siguen una distribución normal se opto por transformarla
con lo cual tampoco se obtuvo normalidad, debido a esto se hizo el respectivo estudio con
la variable sin transformar. Por esto tampoco se cumplen los supuestos del modelo y
aunque se logró hacer un análisis a profundidad construyendo así un modelo propuesto por
los autores en el cual se logra explicar en un 76% la variable respuesta, se recomienda usar
un método diferente a la regresión lineal para que el modelo final se ajuste y sea más
preciso para realizar predicciones y siga la tendencia de la variable respuesta.

Referencias:
Ceballos T, Velásquez P, Jaén J. (2014). “Duración de la estancia hospitalaria.”.
Metodologías para su intervención". Rev. Gerenc. Polít. Salud.; 13(27): 274-295.
http://dx.doi.org/10.11144/Javeriana.rgyps13-27.dehm
Aguirre H, García M y Garibaldi J. (1997). "Los factores asociados con la estancia
hospitalaria prolongada en una unidad de tercer nivel". Gac. méd. Méx; 133(2): 71-7.
Recuperado de: http://www.anmm.org.mx/bgmm/1864_2007/1997-133-2-71-77.pdf

Montgomery, Peck y Vining (2006). "introducción al análisis de regresión". Cecsa. Pag 302.
Script R:
#Llamo mi base de datos:
datos<-datos_los_train_2_1_ [-2]
attach(datos)

#Paquetes necesarios:
require(car)
require(olsrr)
require(psych)
require(nortest)
require(tseries)
require(lmtest)
require(RcmdrMisc)

#analisis exploratorio
#Variables Cualitativas:
#datos$vdate <- as.factor(vdate)
datos$gender <- as.factor(gender)
datos$facid <- as.factor(facid)
datos$rcount <- as.factor(rcount)
#datos$dialysisrenalendstage <- as.factor(dialysisrenalendstage)
#datos$asthma <- as.factor(asthma)
#datos$irondef <- as.factor(irondef)
#datos$pneum <- as.factor(pneum)
#datos$substancedependence <- as.factor(substancedependence)
#datos$psychologicaldisordermajor <- as.factor(psychologicaldisordermajor)
#datos$depress <- as.factor(depress)
#datos$psychother <- as.factor(psychother)
#datos$fibrosisandother <- as.factor(fibrosisandother)
#datos$malnutrition <- as.factor(malnutrition)
#datos$hemo <- as.factor(hemo)

#variables cuantitativas
datos$hematocrit <- as.numeric(hematocrit)
datos$neutrophils <- as.numeric(neutrophils)
datos$sodium <- as.numeric(sodium)
datos$glucose <- as.numeric(glucose)
datos$bloodureanitro <- as.numeric(bloodureanitro)
datos$creatinine <- as.numeric(creatinine)
datos$bmi <- as.numeric(bmi)
datos$pulse <- as.numeric(pulse)
datos$respiration <- as.numeric(respiration)
datos$secondarydiagnosisnonicd9 <- as.numeric(secondarydiagnosisnonicd9)
datos$lengthofstay <- as.numeric(lengthofstay)

datos$dialysisrenalendstage <- as.numeric(dialysisrenalendstage)


datos$asthma <- as.numeric(asthma)
datos$irondef <- as.numeric(irondef)
datos$pneum <- as.numeric(pneum)
datos$substancedependence <- as.numeric(substancedependence)
datos$psychologicaldisordermajor <- as.numeric(psychologicaldisordermajor)
datos$depress <- as.numeric(depress)
datos$psychother <- as.numeric(psychother)
datos$fibrosisandother <- as.numeric(fibrosisandother)
datos$malnutrition <- as.numeric(malnutrition)
datos$hemo <- as.numeric(hemo)

#boxplot var cualitativa


par(mfrow=c(2,4))
boxplot(lengthofstay ~ vdate)
boxplot(lengthofstay ~ gender)
boxplot(lengthofstay ~ facid)
boxplot(lengthofstay ~ rcount)
boxplot(lengthofstay ~ dialysisrenalendstage)
boxplot(lengthofstay ~ asthma)
boxplot(lengthofstay ~ pneum)
boxplot(lengthofstay ~ substancedependence)
boxplot(lengthofstay ~ psychologicaldisordermajor)
boxplot(lengthofstay ~ depress)
boxplot(lengthofstay ~ psychother)
boxplot(lengthofstay ~ fibrosisandother)
boxplot(lengthofstay ~ malnutrition)
boxplot(lengthofstay ~ hemo)

#matriz de dispersion
cuantitativas<- cbind(datos2[,c(15,16,17,18,19,20,21,22,23,24,26)])
cor(cuantitativas)
pairs.panels(cuantitativas,smooth = F,ellipses = F)

#resumen modelo mirar posibles variables significativas


modelo0 <- lm(lengthofstay ~ .-eid , data = datos)
summary(modelo0)

modelo1 <- lm(lengthofstay ~ . -eid -sodium -glucose -creatinine -bmi -pulse -respiration -
secondarydiagnosisnonicd9 -bloodureanitro -hematocrit, data = datos)
summary(modelo1)

#modelo variables transformadas


modelo2 <- lm(lengthofstayT1 ~ .-eid -lengthofstay -lengthofstayT -sodium -glucose -
creatinine -bmi -pulse -respiration -secondarydiagnosisnonicd9, data = datos)
summary(modelo2)

modelo3 <- lm(lengthofstayT ~ .-eid -lengthofstay -lengthofstayT1 -sodium -glucose -


creatinine -bmi -pulse -secondarydiagnosisnonicd9, data = datos)
summary(modelo3)
summary(influence.measures(modelo1))

#normalidad variable respuesta


#Graficos:
par(mfrow=c(1,3))
hist(lengthofstay, xlab = "Porcentaje",ylab="Frecuencia",col =
"lightcyan3",main="Histograma del \n tiempo de estancia hospitalaria")
boxplot(lengthofstay, ylab="Porcentaje", main="Boxplot del \n tiempo de estancia
hospitalaria",col="lightblue1")
points(mean(lengthofstay),col=2,pch=16)
qqPlot(lengthofstay,xlab="cuantiles teoricos",ylab = "cuantiles muestrales",main = "qqPlot
del tiempo de estancia")

#Pruebas analiticas
ad.test(lengthofstay)
shapiro.test(lengthofstay)
cvm.test(lengthofstay)
jarque.bera.test(lengthofstay)

#transformacion variables respuesta


summary(powerTransform(lengthofstay))
datos$lengthofstayT <- lengthofstay^0.37
datos$lengthofstayT1<- log(lengthofstay)

#normalidad de la variable transformada


#Graficos transformacionT1:
par(mfrow=c(1,3))
hist(lengthofstayT1, xlab = "Porcentaje",ylab="Frecuencia",col =
"lightcyan3",main="Histograma del \n tiempo de estancia hospitalaria Trans. LN")
boxplot(lengthofstayT1, ylab="Porcentaje", main="Boxplot del \n tiempo de estancia
hospitalaria",col="lightblue1")
points(mean(lengthofstayT1),col=2,pch=16)
qqPlot(lengthofstayT1,xlab="cuantiles teoricos",ylab = "cuantiles muestrales",main =
"qqPlot del tiempo de estancia trans. LN")
#pruebas analitica transformacion T1
ad.test(lengthofstayT1)
shapiro.test(lengthofstayT1)
cvm.test(lengthofstayT1)
jarque.bera.test(lengthofstayT1)

#Graficos transformacionT:
par(mfrow=c(1,3))
hist(lengthofstayT, xlab = "Porcentaje",ylab="Frecuencia",col =
"lightcyan3",main="Histograma del \n tiempo de estancia hospitalaria Trans.
potencia(0,37)")
boxplot(lengthofstayT, ylab="Porcentaje", main="Boxplot del \n tiempo de estancia
hospitalaria",col="lightblue1")
points(mean(lengthofstayT),col=2,pch=16)
qqPlot(lengthofstayT,xlab="cuantiles teoricos",ylab = "cuantiles muestrales",main =
"qqPlot del tiempo de estancia transformacion potencia")

#pruebas analitica transformacionT


ad.test(lengthofstayT)
shapiro.test(lengthofstayT)
cvm.test(lengthofstayT)
jarque.bera.test(lengthofstayT)

#graficos de puntos inluencia


require(olsrr)
ols_plot_resid_lev(modelo1)
ols_plot_resid_lev(modelo2)
ols_plot_resid_lev(modelo3)

#puntos influenciales
summary(influence.measures(modelo1))
summary(influence.measures(modelo2))
summary(influence.measures(modelo3))

#eliminar puntos atipicos


datos<- datos[-12]
datos<- datos[-57,]
datos<- datos[-65,]
datos<- datos[-74,]
datos<- datos[-126,]
datos<- datos[-131,]
datos<- datos[-150,]
datos<- datos[-246,]
datos<- datos[-249,]
datos<- datos[-263,]
datos<- datos[-272,]

attach(datos)

#analisis de multicolinealidad
vif(modelo1)
require(lmtest)
vif(modelo2)

#mirar modelo optimo


modeloAIC <- lm(lengthofstay ~ .-vdate -lengthofstayT -lengthofstayT1 , data = datos)
summary(modeloAIC)
require(RcmdrMisc)
stepwise(modeloAIC, direction = "forward", criterion = "AIC")

#anova
anova(modelo1)

#supuestos del modelo


#1.Normalidad de residuales del modelo:
#Pruebas graficas
par(mfrow=c(1,3))
hist(modelo1$residuals, col="seagreen2", main="Histograma de los
residuales",xlab="residuales",ylab="Frecuencia")
Boxplot(modelo1$residuals,col="skyblue",main="Boxplot de los residuales")
qqPlot(modelo1$residuals)
#Pruebas análiticas
ad.test(modelo1$residuals)
shapiro.test(modelo1$residuals)
cvm.test(modelo1$residuals)
jarque.bera.test(modelo1$residuals)

#2.Varianza constante:
#Pruebas graficas
par(mfrow=c(1,1))
plot(modelo1$fit,rstandard(modelo1), main="Valores Ajustados vs residuales
estandarizados", xlab="valores ajustados",ylab="residuales",ylim=c(-4,4))
abline(h=c(-3,0,3),col=2,lty=2)
#Pruebas análiticas:
bptest(modelo1)
ncvTest(modelo1)

#3. Independencia
#Pruebas graficas

par(mfrow=c(1,3))
plot(modelo1$residuals)
abline(h=0,col=2)
acf(modelo1$residuals,ylim=c(-0.1,0.1))
pacf(modelo1$residuals,ylim=c(-0.1,0.1))
#Pruebas análiticas:
dwtest(modelo1,alternative="two.sided")
bgtest(modelo1)

#llame libreria
library(Metrics)

#cargue de datos entrenamiento y de prediccion


datos_test=read.csv("datos_test_nooutput.csv")

#ajustar el modelo de regresion lineal


#poner modelo 1
require(dplyr)

#evaluar entrenamiento
modelo1 <- lm(lengthofstay ~ . -eid -sodium -glucose -creatinine -bmi -pulse -respiration -
secondarydiagnosisnonicd9, data = datos)
summary(modelo1)
actual<-datos$lengthofstay

predicho<-predict(modelo1) #pongo modelo 1

mape_entrenamiento<-mape(actual,predicho)
#calcular predicción en evalucion
predicho_test<-predict(modelo1,datos_test)
prueba3<-data.frame("eid"=datos_test$eid,"lengthofstay"=predicho_test)
write.csv(prueba3,"prueba2.csv",row.names = F)

También podría gustarte