Los siguientes datos hacen referencia a algunos establecimientos hoteleros existentes en España (1991), y el nivel de ingresos (en millones de pesetas) de los mismos. El investigador pretende establecer si los hoteles de determinadas categorías están más asociados a ciertos niveles de ingresos que otros. Realice un informe donde ponga de manifiesto los resultados encontrados en la investigación
| ingresos | 1 | 2 | 3 | 4y5 | total |
|---|---|---|---|---|---|
| menos de 10 | 327 | 133 | 9 | 3 | 472 |
| de 10 a menos de 20 | 253 | 169 | 45 | 32 | 499 |
| de 20 a menos de 50 | 153 | 234 | 196 | 25 | 608 |
| de 50 a menos de 100 | 124 | 257 | 277 | 31 | 689 |
| de 100 a menos de 500 | 121 | 234 | 677 | 260 | 1292 |
| 500 y mas | 14 | 7 | 55 | 160 | 236 |
| total | 992 | 1034 | 1259 | 511 | 3796 |
identificar el número de ejes obtenidos por ACS y calcular el porcentaje de inercia explicado. Entonces, seleccione un número de ejes a analizar. Compare la suma de valores propios con el estadístico chi-cuadrado en una prueba de independencia. También realice los siguientes puntos teniendo en cuenta sus interpretaciones
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(FactoMineR)
library(ggplot2)
read.table("datos.csv",header=T,sep="\t",row.names=1)->Tc
K=as.matrix(Tc)
addmargins( K )
## X1 X2 X3 X4y5 Sum
## de 0 a 10 327 133 9 3 472
## de 10 a 20 253 169 45 32 499
## de 20 a 50 153 234 196 25 608
## de 50 a 100 124 257 277 31 689
## de 100 a 500 121 234 677 260 1292
## 500 y mas 14 7 55 160 236
## Sum 992 1034 1259 511 3796
f=as.matrix(Tc/sum(Tc))
addmargins( round(f,3) )
## X1 X2 X3 X4y5 Sum
## de 0 a 10 0.086 0.035 0.002 0.001 0.124
## de 10 a 20 0.067 0.045 0.012 0.008 0.132
## de 20 a 50 0.040 0.062 0.052 0.007 0.161
## de 50 a 100 0.033 0.068 0.073 0.008 0.182
## de 100 a 500 0.032 0.062 0.178 0.068 0.340
## 500 y mas 0.004 0.002 0.014 0.042 0.062
## Sum 0.262 0.274 0.331 0.134 1.001
\(H_o\): Las niveles de ingresos y las categorias son independientes
\(H_a\): Hay dependencia entre los niveles de ingresos y las categorias
chisq.test(Tc)
##
## Pearson's Chi-squared test
##
## data: Tc
## X-squared = 1902.8, df = 15, p-value < 2.2e-16
Puesto que el valor-p calculado es menor que el nivel de significación alfa=0,05, se debe rechazar la hipótesis nula H0, y aceptar la hipótesis alternativa Ha, de dependencia entre niveles de ingresos y las categorias. Obtenemos \(\chi^{2}=1902.08\)
Se utiliza la función CA() de la librería FactoMineR, dicha función realiza un ACS de un data.frame(). En la siguiente Figura, se observa la representación simultánea de las filas y columnas de la tabla de contingencia
res.ACS <- CA(Tc,ncp = 10)
Al observar la representación simultánea se aprecia que el porcentaje de varianza explicado es del 97.08%. Además, se observa que hoteles de categoria 1 presentan ingresos de menos de 10 millptas y de 10 a menos de 20 mill de ptas, los hoteles de categoria 2 y 3 presentan en conjunto ingresos medios entre 20 millones de pesetas hasta 500 millones de pesetas y los hoteles de categorias 4 y 5 presentan ingresos superiores a 500 millones de pesetas
eig.val <- get_eigenvalue(res.ACS)
eig.val
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 0.34966706 69.758270 69.75827
## Dim.2 0.13695403 27.322209 97.08048
## Dim.3 0.01463426 2.919521 100.00000
Observando los valores propios se concluye que entre la dimension 1 y dimension 2 ya se explica el 97.08% de la variabilidad
La inercia total del ACS es 0.50125
Como los valores propios estan ordenados por la cantidad de inercia que recogen, las proyecciones sobre los primeros ejes son las “mejores”, en el sentido de conservar la mayor inercia posible. El primer plano factorial conformado por los ejes 1 y 2, generados por \(\mu_1\) y \(\mu_2\), respectivamente, retiene una inercia igual a \(\mu_1 + \mu_2\) en este caso 0.487
Por tanto tomamos los dos primeros ejes
Ahora bien vemos la sumatoria de valores propios (Inercia) es igual al chi cuadrado dividido por el numero de elementos como muestra la formula
\(I_{G_{i}} =I_{G_{j}}= \phi ^{2} = \frac{\chi^{2}}{k}= \frac{1902.8}{3796} =0.5010748\)
fviz_contrib(res.ACS, choice = "row", axes = c(1,2), top = 10)
El analisis de correspondencias trabaja con los perfiles fila y los perfiles columna que son distribuciones condicionadas, el perfil fila de un nivel de ingresos es la distribucion en frecuencias relativas de las hoteles por categorias para dicho nivel de ingresos ( proporcion de hoteles de cada categoria para un nivel de ingresos dado )
perfiles.fila <- prop.table (as.matrix(Tc),1)
addmargins( round(perfiles.fila,3) )
## X1 X2 X3 X4y5 Sum
## de 0 a 10 0.693 0.282 0.019 0.006 1
## de 10 a 20 0.507 0.339 0.090 0.064 1
## de 20 a 50 0.252 0.385 0.322 0.041 1
## de 50 a 100 0.180 0.373 0.402 0.045 1
## de 100 a 500 0.094 0.181 0.524 0.201 1
## 500 y mas 0.059 0.030 0.233 0.678 1
## Sum 1.785 1.590 1.590 1.035 6
Se observa que los elementos en cada fila de la matriz correspondientes a los perfiles fila suman 100%,
Por ejemplo
Dado que los hoteles con ingresos de 500 mptas y mas El 6% son de categoria 1, 3% son de categoria 2, el 23.3% son de categoria 3 y el 68% son de categorias 4 y 5
round(perfiles.fila["500 y mas",],3)
## X1 X2 X3 X4y5
## 0.059 0.030 0.233 0.678
El ACS se basa en las distancias de los perfiles a su centro de gravedad, el centro de gravedad de los perfiles fila (nivel de ingresos), esta formado por las frecuencias relativas marginales de las columnas (categorias), en este caso, la proporcion de hoteles en cada categoria.
round(res.ACS$call$marge.col,3)
## X1 X2 X3 X4y5
## 0.261 0.272 0.332 0.135
Se observa que el 26.1% de los hoteles pertenecen a categorias 1(X1), el 27.2% pertenecen a categoria 2 (X2), 33% pertenecen a categoria 3(X3) y 13% pertenecen a categorias 4y5 (X4Y5), para toda la gama de ingresos.
Podemos comparar ahora los perfiles fila con su centro de gravedad, en términos relativos, calculando el cociente entre cada elemento de un perfil fila y el correspondiente elemento del centro de gravedad, de modo que si el cociente es mayor que 1 para un rango de ingresos, el porcentaje de hoteles de una categoria es mayor que la media.
Observamos, por ejemplo, que el porcentaje de hoteles de categoria 1 con ingresos de menos de 10 millptas es 2.65 veces mayor que el porcentaje total de hoteles de categoria 1 (x1)
Ahora bien el porcentaje de hoteles de categoria 1(X1) con ingresos superiores a 500 millones y mas es 0.22 veces de los hoteles de categoria 1(X1)
El porcentaje de hoteles de categoria 4y5 (X4Y5) con ingresos de mas de 500 millptas y mas es 5 veces mas el porcentaje de los hoteles de esta categoria
t(t(perfiles.fila) / res.ACS$call$marge.col)
## X1 X2 X3 X4y5
## de 0 a 10 2.6510644 1.0344638 0.05749115 0.0472155
## de 10 a 20 1.9401464 1.2433455 0.27190202 0.4763813
## de 20 a 50 0.9629470 1.4129212 0.97197024 0.3054511
## de 50 a 100 0.6886792 1.3693661 1.21216299 0.3342318
## de 100 a 500 0.3583747 0.6649041 1.57988919 1.4949138
## 500 y mas 0.2270025 0.1088909 0.70266959 5.0363196
El perfil columna de una categoria es la distribucion, en frecuencias relativas, de los establecimientos de dicho sector por niveles de ingresos (proporcion de hoteles en cada nivel de ingresos para un categoria dada):
perfiles.columna <- prop.table(as.matrix(Tc), 2)
addmargins( round(perfiles.columna,3) )
## X1 X2 X3 X4y5 Sum
## de 0 a 10 0.330 0.129 0.007 0.006 0.472
## de 10 a 20 0.255 0.163 0.036 0.063 0.517
## de 20 a 50 0.154 0.226 0.156 0.049 0.585
## de 50 a 100 0.125 0.249 0.220 0.061 0.655
## de 100 a 500 0.122 0.226 0.538 0.509 1.395
## 500 y mas 0.014 0.007 0.044 0.313 0.378
## Sum 1.000 1.000 1.001 1.001 4.002
Ahora son los elementos de cada columna en la matriz de perfiles columna los que suman 1.
Por ejemplo, los hoteles de categoria 1 en Espana se concentran sobre todo en ingresos de menos de 10 (33%), de 10 a 20 (26%) y de 50 a 100 (12%)
round(perfiles.columna[ , "X1"],32)
## de 0 a 10 de 10 a 20 de 20 a 50 de 50 a 100 de 100 a 500 500 y mas
## 0.3296371 0.2550403 0.1542339 0.1250000 0.1219758 0.0141129
Para hoteles de categoria4y5 , sus ingresos se concentran de 100 a 500 (51%) e ingresos de 500 y mas (31.3%)
round(perfiles.columna[ , "X4y5"],3)
## de 0 a 10 de 10 a 20 de 20 a 50 de 50 a 100 de 100 a 500 500 y mas
## 0.006 0.063 0.049 0.061 0.509 0.313
El centro de gravedad de los perfiles columna (categorias) esta constituido por las frecuencias relativas marginales de las filas (niveles de ingreso), en este caso, la proporcion de hoteles por cada nivel de ingresos
res.ACS$call$marge.row
## de 0 a 10 de 10 a 20 de 20 a 50 de 50 a 100 de 100 a 500 500 y mas
## 0.12434141 0.13145416 0.16016860 0.18150685 0.34035827 0.06217071
Asi por ejemplo, cerca del 68% de los hoteles se reparten entre ingresos de 100 a 500 (34%), de 50 a 100 (18%) , de 20 a 50 (16%)
Estableciendo una comparacion en terminos relativos entre perfiles columna y su centro de gravedad se obtiene los mismos resultados de la tabla
perfiles.columna / res.ACS$call$marge.row
## X1 X2 X3 X4y5
## de 0 a 10 2.6510644 1.0344638 0.05749115 0.0472155
## de 10 a 20 1.9401464 1.2433455 0.27190202 0.4763813
## de 20 a 50 0.9629470 1.4129212 0.97197024 0.3054511
## de 50 a 100 0.6886792 1.3693661 1.21216299 0.3342318
## de 100 a 500 0.3583747 0.6649041 1.57988919 1.4949138
## 500 y mas 0.2270025 0.1088909 0.70266959 5.0363196
Esto es, el porcentaje de hoteles de categoria 1(x1) que se ubican en el rango de ingresos de 10 a 20 (1.94) es casi del doble del porcentaje de hoteles en esa categoria.
El porcentaje de hoteles de categoria 1(x1) que se ubican en el rango de ingresos de 0 a 10 es casi tres veces (2.65) el porcentaje de hoteles de esta categoria
El porcentaje de hoteles de categoria 4y5 que se ubican en rango de ingresos de 500 y mas es casi 5 veces el porcentaje de hoteles en esta categoria
mosaicplot(t(Tc),color=rainbow(6),main="Perfiles columna", las = 1 )
Fuerte dependencia de nivel de ingresos de 0 a 10 con categoria de hotel nivel 1 y nivel 2, Fuerte dependencia de nivel de ingresos de 100 a 500 con categoria 3 (x3) y 4y5 (x4y5) Dependencia de nivel de ingresos de 500 y mas con hoteles de categorias 4y5
mosaicplot(Tc,color=rainbow(12),main="Perfiles fila", las = 1)
Fuerte dependencia de hoteles de categoria 3 por ejemplo con ingresos superiores a 100 mll ptas
Dependencia de hoteles categorias 4y5 con ingresos superiores a 500 mll ptas
fviz_ca_row(res.ACS, repel = TRUE)
Los ingresos muy altos 500 y mas, 100 a 500 y los ingresos muy bajos 0 a 10, 10 a 20 se encuentran en extremos positivo y negativo respectivamente, indicando asociacion baja entre estos dos niveles de ingreso, con respecto a la dimension 1
Los hoteles con nivel de ingresos superiores (500ymas y 100a500 ) estan mejor relacionados, estan ubicados a la derecha del plano.
Los hoteles con niveles de ingresos bajos (de 0a10 , 10a20) y de ( 20a50 y 50a100) se encuentran a la izquierda del plano, estan mejor relacionados entre ellos que con los hoteles de ingresos altos.
fviz_ca_col(res.ACS, repel = TRUE)
Las categorias de hoteles 4y5 (X4y5) y las categorias 1 y 2 (X1 Y X2) se encuentran en los extremos positivo y negativo del primer eje respectivamente lo que indica que tienen comportamientos contrarios en relacion con los ingresos obtenidos.
Se observa una relacion positiva no tan marcada entre los hoteles categorias 4y5 (X4Y5) y los hoteles de categoria 3 (X3) , por lo cual perciben ingresos altos.
en general los hoteles con categorias 4y5 (X4y5)y 3 (x3) estan relacionados negativamente con hoteles de categorias 1 y 2 (x1 y x2) respectivamente.
Los perfiles columna y fila muestran correspondencia fuerte entre hoteles de categoria 1 e ingresos de 0 a 20 millones de pesetas
hay correspondencia fuerte entre hoteles categoria 4y5 e ingresos de mas de 500 millpta
Hay correspondencia muy debil entre hoteles categoria 1 (X1) e ingresos altos de mas de 100 millptas (X3 y x4y5)
plot(res.ACS, mass = c(TRUE, TRUE), contrib = c("relative", "relative"), arrows = c(FALSE, TRUE))
Se observa en el grafico de los dos primeros ejes, la asociacion positiva de los hoteles categoria 4y5 con ingresos superiores a 500 millones de pesetas
Igualmente hay correlacion positiva entre hoteles de categoria 1 con ingresos de 0 a 10 y de 10 a 20 millones de pesetas
Hoteles de categoria 2 tienen relacion con ingresos medios entre 20 a y 100 millones de pesos
Hoteles de categoria 3 se relacionan con salarios de 100 a 500 millones de pesetas
Hay asociacion negativa entre hoteles de categoria 4y5 con los ingresos de 20 a 50 y de 50 a 100 , estos ingresos estan mas asociados con hoteles de categoria 2
En general La grafica se observa que hoteles de mas categoria perciben ingresos mas altos
addmargins( res.ACS$row$contrib ,1)
## Dim 1 Dim 2 Dim 3
## de 0 a 10 34.29675296 13.056483 18.055113
## de 10 a 20 14.87714008 5.825198 3.075833
## de 20 a 50 1.79342263 6.514704 18.763929
## de 50 a 100 0.07566245 16.409960 14.648821
## de 100 a 500 24.37821227 4.444308 33.352180
## 500 y mas 24.57880962 53.749348 12.104124
## Sum 100.00000000 100.000000 100.000000
Las tipos de ingresos que mas contribuyen a la formacion del primer eje son las de 0 a 10 mp (34%) , las de 100 a 500 (24%) y las de 500 y mas (24.5%), al segundo eje las categorias que mas contribuyen son los ingresos de 500 y mas (53%)
addmargins( res.ACS$col$contrib ,1)
## Dim 1 Dim 2 Dim 3
## X1 41.722637 15.800783 16.343809
## X2 5.860693 8.109458 58.790649
## X3 17.193435 28.529444 21.110630
## X4y5 35.223235 47.560315 3.754912
## Sum 100.000000 100.000000 100.000000
Los categorias de hoteles que mas contribuyan a la creacion de la dimension 1 son las categorias 1(41%) y categorias 4y5 (35%)
A la dimension 2 tienen alta contribucion las categorias 4y5 (47.56%) y la categoria 3 (28.53%)
addmargins( res.ACS$row$cos2,2)
## Dim 1 Dim 2 Dim 3 Sum
## de 0 a 10 0.85387045 0.12731668 0.018812872 1
## de 10 a 20 0.86057589 0.13197768 0.007446435 1
## de 20 a 50 0.34957169 0.49735719 0.153071130 1
## de 50 a 100 0.01063268 0.90321226 0.086155061 1
## de 100 a 500 0.88600465 0.06326425 0.050731101 1
## 500 y mas 0.53273084 0.45628931 0.010979847 1
Todos los puntos fila en los ejes 1 y 2 estan muy bien representados, con un porcentaje superior a 90%
addmargins( res.ACS$col$cos2,2)
## Dim 1 Dim 2 Dim 3 Sum
## X1 0.8585727 0.1273515 0.014075845 1
## X2 0.5097395 0.2762557 0.214004782 1
## X3 0.5877881 0.3820072 0.030204749 1
## X4y5 0.6521816 0.3449087 0.002909745 1
Los puntos columna en los ejes 1 y 2 estan muy bien representados, con un porcentaje superior a 97% las categorias de hotel 1 , 3 y 4y5
Hay fuerte relacion de dependencia entre los ingresos de los hoteles en Espana y sus niveles categorias
El analisis de correspondencia simple es una tecnica de analisis exploratorio de datos que permite determinar la relacion entre filas y columnas de una tabla de contingencias. En este ejercicio se pretende establecer si existe asociacion entre los niveles de ingresos de los hoteles y categorias.
Mediante la herramienta R se generaron las tablas de contingencia, la matriz de frecuencias relativas, pruebas chi cuadrado y los ACS.
En la nube de filas y columnas combinadas se puede observar que existe asociacion entre los niveles de ingreso de los hoteles y su categoria, los hoteles de categoria 1 tienen se asocian a ingresos entre 0 y 20 millones de pesetas, los hoteles de categoria 2 se asocian a ingresos entre 20 y 100 millones de pesetas, los hoteles de categoria 3 se asocian a ingresos de 100 a 500 millones y los hoteles de categoria 4 y 5 se asocian a ingresos de mas de 500 millones de pesetas.