R - Prueba de chi cuadrado

Chi-Square testes un método estadístico para determinar si dos variables categóricas tienen una correlación significativa entre ellas. Ambas variables deben ser de la misma población y deben ser categóricas como: Sí / No, Hombre / Mujer, Rojo / Verde, etc.

Por ejemplo, podemos construir un conjunto de datos con observaciones sobre el patrón de compra de helado de las personas y tratar de correlacionar el género de una persona con el sabor del helado que prefieren. Si se encuentra una correlación, podemos planificar el stock adecuado de sabores conociendo el número de género de las personas que nos visitan.

Sintaxis

La función utilizada para realizar la prueba de chi-cuadrado es chisq.test().

La sintaxis básica para crear una prueba de chi-cuadrado en R es:

chisq.test(data)

A continuación se muestra la descripción de los parámetros utilizados:

  • data son los datos en forma de una tabla que contiene el valor de recuento de las variables en la observación.

Ejemplo

Tomaremos los datos de Cars93 en la biblioteca "MASS" que representa las ventas de diferentes modelos de automóvil en el año 1993.

library("MASS")
print(str(Cars93))

Cuando ejecutamos el código anterior, produce el siguiente resultado:

'data.frame':   93 obs. of  27 variables: 
 $ Manufacturer      : Factor w/ 32 levels "Acura","Audi",..: 1 1 2 2 3 4 4 4 4 5 ... 
 $ Model             : Factor w/ 93 levels "100","190E","240",..: 49 56 9 1 6 24 54 74 73 35 ... 
 $ Type              : Factor w/ 6 levels "Compact","Large",..: 4 3 1 3 3 3 2 2 3 2 ... 
 $ Min.Price         : num  12.9 29.2 25.9 30.8 23.7 14.2 19.9 22.6 26.3 33 ... 
 $ Price             : num  15.9 33.9 29.1 37.7 30 15.7 20.8 23.7 26.3 34.7 ... 
 $ Max.Price         : num  18.8 38.7 32.3 44.6 36.2 17.3 21.7 24.9 26.3 36.3 ... 
 $ MPG.city          : int  25 18 20 19 22 22 19 16 19 16 ... 
 $ MPG.highway       : int  31 25 26 26 30 31 28 25 27 25 ... 
 $ AirBags           : Factor w/ 3 levels "Driver & Passenger",..: 3 1 2 1 2 2 2 2 2 2 ... 
 $ DriveTrain        : Factor w/ 3 levels "4WD","Front",..: 2 2 2 2 3 2 2 3 2 2 ... 
 $ Cylinders         : Factor w/ 6 levels "3","4","5","6",..: 2 4 4 4 2 2 4 4 4 5 ... 
 $ EngineSize        : num  1.8 3.2 2.8 2.8 3.5 2.2 3.8 5.7 3.8 4.9 ... 
 $ Horsepower        : int  140 200 172 172 208 110 170 180 170 200 ... 
 $ RPM               : int  6300 5500 5500 5500 5700 5200 4800 4000 4800 4100 ... 
 $ Rev.per.mile      : int  2890 2335 2280 2535 2545 2565 1570 1320 1690 1510 ... 
 $ Man.trans.avail   : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 1 1 1 1 1 ... 
 $ Fuel.tank.capacity: num  13.2 18 16.9 21.1 21.1 16.4 18 23 18.8 18 ... 
 $ Passengers        : int  5 5 5 6 4 6 6 6 5 6 ... 
 $ Length            : int  177 195 180 193 186 189 200 216 198 206 ... 
 $ Wheelbase         : int  102 115 102 106 109 105 111 116 108 114 ... 
 $ Width             : int  68 71 67 70 69 69 74 78 73 73 ... 
 $ Turn.circle       : int  37 38 37 37 39 41 42 45 41 43 ... 
 $ Rear.seat.room    : num  26.5 30 28 31 27 28 30.5 30.5 26.5 35 ... 
 $ Luggage.room      : int  11 15 14 17 13 16 17 21 14 18 ... 
 $ Weight            : int  2705 3560 3375 3405 3640 2880 3470 4105 3495 3620 ... 
 $ Origin            : Factor w/ 2 levels "USA","non-USA": 2 2 2 2 2 1 1 1 1 1 ... 
 $ Make              : Factor w/ 93 levels "Acura Integra",..: 1 2 4 3 5 6 7 9 8 10 ...

El resultado anterior muestra que el conjunto de datos tiene muchas variables de factor que pueden considerarse variables categóricas. Para nuestro modelo consideraremos las variables "AirBags" y "Tipo". Aquí nuestro objetivo es descubrir cualquier correlación significativa entre los tipos de automóviles vendidos y el tipo de bolsas de aire que tiene. Si se observa correlación, podemos estimar qué tipos de automóviles se pueden vender mejor con qué tipos de bolsas de aire.

# Load the library.
library("MASS")

# Create a data frame from the main data set.
car.data <- data.frame(Cars93$AirBags, Cars93$Type)

# Create a table with the needed variables.
car.data = table(Cars93$AirBags, Cars93$Type) 
print(car.data)

# Perform the Chi-Square test.
print(chisq.test(car.data))

Cuando ejecutamos el código anterior, produce el siguiente resultado:

Compact Large Midsize Small Sporty Van
  Driver & Passenger       2     4       7     0      3   0
  Driver only              9     7      11     5      8   3
  None                     5     0       4    16      3   6

         Pearson's Chi-squared test

data:  car.data
X-squared = 33.001, df = 10, p-value = 0.0002723

Warning message:
In chisq.test(car.data) : Chi-squared approximation may be incorrect

Conclusión

El resultado muestra el valor p de menos de 0.05, lo que indica una correlación de cadenas.