1 Problema de estudio

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

  • Analice la nube puntos fila
  • Analice la nube de puntos columna
  • Realice la representación simultanea
  • Apoye sus interpretaciones utilizando las contribuciones absolutas y los cosenos cuadrados.

2 Carga de datos e inicializacion de libreria factoMinerR

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

3 Tabla de contingencias \(K_{n.p}\) y matriz de frecuencias relativas \(F\)

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

4 Prueba de Chi-cuadrado Asociacion entre variable

\(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\)

5 Aplicación del ACS

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

6 Valores propios

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\)

7 Contribuciones de las filas al eje

fviz_contrib(res.ACS, choice = "row", axes = c(1,2), top = 10)

8 Perfiles fila en \(R^{p}\)

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

9 Perfil columna en \(R^{n}\)

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

10 Nube de puntos fila

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.

11 Nube de puntos columna

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)

12 Perfiles fila y columna combinados

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

13 Contribuciones de filas y columnas

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%)

14 Cosenos cuadrados de filas y columnas

 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

15 Conclusion

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.