Ejemplo aplicado del MANOVA para unas características de inversiones financieras, el objetivo es determinar si existen diferencias entre los tipos de inversiones y las combinaciones de ellas, con un resultado en tiempo y ganancias.
Se simulan los datos por medio de funciones de distribución para así observar la aplicación del MANOVA en una investigación de finanzas para generar mayor margen de rentabilidad.
set.seed(65456)
num_inversores <- 30
perfil_riesgo <- c("conservador","agresivo")
tipo_inversion <- c("acciones","bonos","fondos mutuos")
duracion_inversion <- rnorm(num_inversores,20,10)
rendimiento_inversion <- rnorm(num_inversores,mean = 0.05, sd = 0.1)
perfil_riesgo <- sample(perfil_riesgo, num_inversores, replace = TRUE)
tipo_inversion <- sample(tipo_inversion, num_inversores, replace = TRUE)
datos <- data.frame(perfil_riesgo, tipo_inversion,duracion_inversion, rendimiento_inversion)
Se debe tener en cuenta que al ser una simulacion de los datos puede variar el proceso dado a que su asignacion es aletoria.
Covariables o Variables X
Tipo_inversion : Es la modalidad por la cual se quiere invertir, se tienen este factor con 3 niveles los cuales son:
Acciones: inversión en la compra de una parte de la empresa
Bonos: Valores mobiliarios emitidos por gobiernos o empresas para obtener financiamiento,como una forma de préstamos que genera intereses según la rentabilidad de la empresa
Fondos mutuos: un fondo que agrupa el capital de varios inversores para invertirlo en una cartera diversificada de activos como algunos indicadores ejemplo S&P500 entre otros.
Perfil_riesgo: puede representarse por los inversores que toman la decisión de escoger cuál será la probabilidad de riesgo al momento de invertir, se tiene este factor con 2 niveles:
conservador: Formas de inversión pasiva generalmente son inversiones de poco riesgo
agresivo:Son formas de inversión que mayor variabilidad pueden tener por lo tanto puede existir mayor probabilidad de pérdida o ganancia
Variables dependientes Y
duracion_inversion: El tiempo en meses de la inversión
rendimiento_inversion: Es el porcentaje efectivo de ganancia que obtuvieron
#Definiendo las variables dependientes e independientes
rendimiento_inversion <- datos$rendimiento_inversion
datos$perfil_riesgo <- as.factor(datos$perfil_riesgo)
datos$tipo_inversion <- as.factor(datos$tipo_inversion)
datos$duracion_inversion <- as.integer(datos$duracion_inversion)
Se asignan los nombres de las variables para luego ser integradas en el modelo MANOVA.
#Boxplot
ggplot(data = datos, aes(x = tipo_inversion, y = rendimiento_inversion)) +
geom_boxplot(fill = c("#00CDCD","#76EEC6","#76EE00")) +theme_classic()+
labs(title = "Diagrama de caja y bigotes", x = "Grupo", y = "Valores")
#diagrama de barras
ggplot(data = datos, aes(x = rendimiento_inversion, y = duracion_inversion)) +
geom_point() +
labs(title = "Gráfico de Dispersión", x = "rendimiento_inversion", y = "duracion_inversion")
¿Tiene el tipo de inversión un efecto significativo sobre las variables de respuesta duracion de la inversion y rendimiento de la inversión?
Variables de respuesta: duracion de la inversión en meses y rendimiento de la inversión en porcentaje (%)
• Unidad experimental: Cartera de inversiones de las personas.
• Unidad observacional: individuo de algun tipo de caracteristicas y tipo de inversion.
• Factores principales: Tipo de inversión y el perfil del inversor
• Niveles: tres tipos de inversión, dos rasgos del inversor
• Tratamientos: 6 tratamientos
Diseño y el modelo para analizar estos datos.
El diseño es de dos factores y dos variables de respuesta en un MANOVA y se especifica de la siguiente manera:
\[y_{ij}= \mu +\tau_i +\epsilon_{ij} \]
\[i= 1,2,3,4\ \ \ \ j=1,2,3 \]
\(y_{ij}\): El tiempo en meses de la inversión en el i-esimo tratamiento.
\(y_{ij}\): Es el porcentaje efectivo de ganancia que obtuvieron en el i-esimo tratamiento.
\(\mu\) : Porcentaje efectivo promedio.
\(\tau_i\): efecto debido al i-esimo tratamiento.
\(\epsilon_{ij}\): efecto causado por el error experimental.
Se desea probar si el perfil de riesgo y el tipo de inversión tienen un efecto sobre la rentabilidad de los individuos.
\[H_0: \tau_1=\tau_2=\tau_3= 0\] \[H_1: \tau_i\neq 0\]
\(H_0\): no hay un efecto significativo de los tratamientos sobre la rentabilidad de las personas
\(H_1\): Algún tratamiento presenta un efecto significativo de los tratamientos sobre la rentabilidad de las personas
#Modelo para un solo factor (tipo de inversion)
modelmanovafactor1 <- manova(cbind(rendimiento_inversion,duracion_inversion) ~ tipo_inversion)
#Modelo para 2 factores (tipo de inversion y perfil de riesgo) sin iteraccion
modelomanova <- manova(cbind(rendimiento_inversion,duracion_inversion) ~ perfil_riesgo + tipo_inversion)
#Modelo para 2 factores (tipo de inversion y perfil de riesgo) con iteraccion
modelomanova2 <- manova(cbind(rendimiento_inversion,duracion_inversion) ~ perfil_riesgo * tipo_inversion)
Se debe tener en cuenta la correcta verificacion de los supuestos estadisticos sobre estos modelos o sus pruebas alternativas no parametricas.
#Mostrando resumen de resultados
summary(modelmanovafactor1) #Por defecto es “Pillai”
## Df Pillai approx F num Df den Df Pr(>F)
## tipo_inversion 2 0.31139 2.4895 4 54 0.05392 .
## Residuals 27
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelomanova)
## Df Pillai approx F num Df den Df Pr(>F)
## perfil_riesgo 1 0.07542 1.0196 2 25 0.3753
## tipo_inversion 2 0.41845 3.4396 4 52 0.0144 *
## Residuals 26
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelomanova2)
## Df Pillai approx F num Df den Df Pr(>F)
## perfil_riesgo 1 0.07765 0.9682 2 23 0.39472
## tipo_inversion 2 0.42697 3.2572 4 48 0.01923 *
## perfil_riesgo:tipo_inversion 2 0.04215 0.2583 4 48 0.90315
## Residuals 24
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Si se desea otro estadistico
#summary(modelmanovafactor1,test = "Wilks") #Wilks'Lambda
#summary(modelmanovafactor1,test = "Hotelling-Lawley”") #Hotelling-Lawley”
Wilks’Lambda: mide la variación entre los diferentes grupos en relación con la variación total.
Pillai’sTrace: mide la variación entre los grupos en relación con la variación total y la variación dentro de los grupos.
Hotelling’sTrace: mide la distancia media entre los puntos medios de los grupos en el espacio de variables multivariadas.
Roy’sLargest Root: es una medida de la variación entre los grupos que es similar a la varianza explicada en un ANOVA.
mvShapiro.Test(cbind(datos$duracion_inversion,datos$rendimiento_inversion))
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: cbind(datos$duracion_inversion, datos$rendimiento_inversion)
## MVW = 0.97033, p-value = 0.6268
mvn(cbind(datos$duracion_inversion,datos$rendimiento_inversion),desc = T,
mvnTest = "hz",multivariatePlot = "qq")
## $multivariateNormality
## Test HZ p value MVN
## 1 Henze-Zirkler 0.2190522 0.954464 YES
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Anderson-Darling Column1 0.2421 0.7487 YES
## 2 Anderson-Darling Column2 0.2944 0.5755 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th
## 1 30 18.36666667 9.66502166 17.50000000 0.0000000 34.0000000 11.25000000
## 2 30 0.02207765 0.09901145 0.03968087 -0.1852027 0.1980636 -0.05893652
## 75th Skew Kurtosis
## 1 25.00000000 -0.1152053 -1.0790885
## 2 0.08526408 -0.2063545 -0.9308986
Con un valor P mayor al nivel de significancia no se rechaza la hipótesis nula de que las variables tienen una distribución normal multivariada también se observa en el grafico 3D de densidad, con el QQPLOT se observa que se distribuye normal multivariado
den3d <- kde2d(datos$duracion_inversion, datos$rendimiento_inversion)
plot_ly(x=den3d$x, y=den3d$y, z=den3d$z) %>% add_surface()
Para una mejor apreciacion el grafico de densidad multivariado muestra como se distrubyen las variables dependientes continuas.
boxM(cbind(datos$duracion_inversion,datos$rendimiento_inversion) ~ datos$tipo_inversion,data = datos)
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: Y
## Chi-Sq (approx.) = 3.0207, df = 6, p-value = 0.8062
Se realiza con la prueba BoxM que es una prueba estadística utilizada para determinar si las varianzas de las variables dependientes son homogéneas entre las diferentes condiciones o grupos en un ANOVA multivariable (MANOVA). Es una prueba no paramétrica que se basa en la comparación de la suma de cuadrados medios (SSM) y la suma total de cuadrados (SST). Similar a la univariada Levenes
Por lo que no se rechaza la hipótesis de homogeneidad de varianza y matriz de covarianza, lo cual es de buen indicador para el estudio.
La prueba de Mauchly es una prueba estadística utilizada para determinar si el supuesto de independencia se cumple en un ANOVA multivariable (MANOVA
mauchly.test(modelmanovafactor1)
##
## Mauchly's test of sphericity
##
## data: SSD matrix from manova(cbind(rendimiento_inversion, duracion_inversion) ~ tipo_inversion)
## W = 0.00029777, p-value < 2.2e-16
se asumen que no pueden invertir en mas de un tipo al mismo tiempo para así garantizar el supuesto de indecencia
plot(cbind(datos$duracion_inversion,datos$rendimiento_inversion))
cor(datos$duracion_inversion,datos$rendimiento_inversion)
## [1] 0.1438625
En resumen, el MANOVA es una técnica estadística valiosa para analizar la relación entre dos o más variables independientes y dos o más variables dependientes. Sin embargo, es importante tener en cuenta las limitaciones y consideraciones del procedimiento para garantizar la precisión y validez de los resultados. El gran numero de aplicaciones que tienen en el campo le da a los profesionales otra herramienta para apoyarse en la toma de decisiones.-