การทดสอบ R - Chi Square
Chi-Square testเป็นวิธีการทางสถิติเพื่อตรวจสอบว่าตัวแปรเชิงหมวดหมู่สองตัวแปรมีความสัมพันธ์กันอย่างมีนัยสำคัญหรือไม่ ตัวแปรทั้งสองควรมาจากประชากรกลุ่มเดียวกันและควรอยู่ในหมวดหมู่เช่น - ใช่ / ไม่ใช่ชาย / หญิงสีแดง / เขียวเป็นต้น
ตัวอย่างเช่นเราสามารถสร้างชุดข้อมูลด้วยการสังเกตรูปแบบการซื้อไอศกรีมของผู้คนและพยายามเชื่อมโยงเพศของบุคคลกับรสชาติของไอศกรีมที่พวกเขาต้องการ หากพบความสัมพันธ์เราสามารถวางแผนสำหรับสต็อกของรสชาติที่เหมาะสมได้โดยทราบจำนวนเพศของผู้ที่เข้าเยี่ยมชม
ไวยากรณ์
ฟังก์ชันที่ใช้ในการทดสอบไคสแควร์คือ chisq.test().
ไวยากรณ์พื้นฐานสำหรับการสร้างการทดสอบไคสแควร์ใน R คือ -
chisq.test(data)
ต่อไปนี้เป็นคำอธิบายของพารามิเตอร์ที่ใช้ -
data คือข้อมูลในรูปแบบตารางที่มีค่าการนับของตัวแปรในการสังเกต
ตัวอย่าง
เราจะนำข้อมูล Cars93 ในไลบรารี "MASS" ซึ่งแสดงถึงยอดขายรถยนต์รุ่นต่างๆในปี 1993
library("MASS")
print(str(Cars93))
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
'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 ...
ผลลัพธ์ข้างต้นแสดงให้เห็นว่าชุดข้อมูลมีตัวแปร Factor หลายตัวซึ่งถือได้ว่าเป็นตัวแปรหมวดหมู่ สำหรับโมเดลของเราเราจะพิจารณาตัวแปร "AirBags" และ "Type" ในที่นี้เรามุ่งหวังที่จะค้นหาความสัมพันธ์ที่สำคัญระหว่างประเภทของรถยนต์ที่ขายและประเภทของถุงลมนิรภัย หากสังเกตความสัมพันธ์เราสามารถประมาณได้ว่ารถยนต์ประเภทใดขายได้ดีกว่าด้วยถุงลมนิรภัยประเภทใด
# 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))
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
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
สรุป
ผลลัพธ์จะแสดงค่า p ที่น้อยกว่า 0.05 ซึ่งบ่งบอกถึงความสัมพันธ์ของสตริง