ข้อมูลเบื้องต้นเกี่ยวกับการถดถอยปัวซองสำหรับข้อมูลการนับ
การถดถอย เป็นวิธีการทางสถิติที่สามารถใช้เพื่อกำหนดความสัมพันธ์ระหว่างตัวแปรทำนายตั้งแต่หนึ่งตัวขึ้นไปและ ตัวแปรตอบสนอง
การถดถอยปัวซอง เป็นการถดถอยชนิดพิเศษที่ตัวแปรตอบสนองคือ “ข้อมูลนับ” ตัวอย่างต่อไปนี้แสดงกรณีที่สามารถใช้การถดถอยปัวซองได้:
ตัวอย่างที่ 1: การถดถอยแบบปัวซองสามารถใช้เพื่อตรวจสอบจำนวนนักเรียนที่สำเร็จการศึกษาจากหลักสูตรวิทยาลัยเฉพาะเจาะจง โดยพิจารณาจากเกรดเฉลี่ยเมื่อเข้าเรียนและเพศ ในกรณีนี้ “จำนวนนักเรียนที่สำเร็จการศึกษา” คือตัวแปรการตอบสนอง “GPA เมื่อเข้าโปรแกรม” เป็นตัวแปรทำนายต่อเนื่อง และ “เพศ” เป็นตัวแปรทำนายเชิงหมวดหมู่
ตัวอย่างที่ 2: การถดถอยปัวซองสามารถใช้เพื่อตรวจสอบจำนวนอุบัติเหตุจราจรที่ทางแยกเฉพาะโดยพิจารณาจากสภาพอากาศ (“มีแดดจัด”, “มีเมฆมาก”, “ฝนตก”) และมีเหตุการณ์พิเศษเกิดขึ้นหรือไม่ในเมือง (“ใช่” หรือไม่”). ในกรณีนี้ “จำนวนอุบัติเหตุทางถนน” เป็นตัวแปรตอบสนอง ในขณะที่ “สภาพอากาศ” และ “เหตุการณ์พิเศษ” เป็นตัวแปรทำนายเชิงหมวดหมู่
ตัวอย่างที่ 3: การถดถอยแบบปัวซองสามารถใช้เพื่อตรวจสอบจำนวนคนที่อยู่ข้างหน้าคุณในการต่อแถวที่ร้านค้าโดยพิจารณาจากช่วงเวลาของวัน วันในสัปดาห์ และว่ามีการขายเกิดขึ้นหรือไม่ (“ใช่หรือไม่) . “) ในกรณีนี้ “จำนวนคนที่อยู่ข้างหน้าคุณในแถว” คือตัวแปรการตอบสนอง “เวลาของวัน” และ “วันในสัปดาห์” เป็นทั้งตัวแปรทำนายต่อเนื่อง และ “การขายอยู่ระหว่างดำเนินการ” เป็นตัวแปรทำนายเชิงหมวดหมู่
ตัวอย่างที่ 4: การถดถอยปัวซองสามารถใช้ตรวจสอบจำนวนผู้ที่เข้าเส้นชัยไตรกีฬาโดยพิจารณาจากสภาพอากาศ (“แดดจัด” “เมฆมาก” “ฝนตก”) และความยากของสนาม (“ง่าย” “ฝนตก”) ปานกลาง”, “ยาก”) ในกรณีนี้ “จำนวนคนที่เข้าเส้นชัย” เป็นตัวแปรตอบสนอง ในขณะที่ “สภาพอากาศ” และ “ความยากของหลักสูตร” เป็นตัวแปรทำนายตามหมวดหมู่
การถดถอยแบบปัวซองจะช่วยให้คุณเห็นว่าตัวแปรทำนายตัวใด (ถ้ามี) มีผลกระทบที่มีนัยสำคัญทางสถิติต่อตัวแปรตอบสนอง
สำหรับตัวแปรทำนายต่อเนื่อง คุณจะสามารถตีความได้ว่าการเพิ่มขึ้นหรือลดลงหนึ่งหน่วยในตัวแปรนั้นสัมพันธ์กับเปอร์เซ็นต์การเปลี่ยนแปลงในตัวเลขของตัวแปรตอบสนองอย่างไร (เช่น “คะแนนเพิ่มเติมที่เพิ่มขึ้น 1 หน่วยแต่ละหน่วยใน GPA สัมพันธ์กับ ตัวแปรการตอบสนองเพิ่มขึ้น 12.5%)
สำหรับตัวแปรทำนายตามหมวดหมู่ คุณจะสามารถตีความเปอร์เซ็นต์การเปลี่ยนแปลงในการนับของกลุ่มหนึ่งได้ (เช่น จำนวนผู้ที่เข้าเส้นชัยไตรกีฬาในวันที่อากาศแจ่มใส) เปรียบเทียบกับอีกกลุ่มหนึ่ง (เช่น จำนวนผู้ที่เข้าเส้นชัยในการแข่งขันไตรกีฬา ไตรกีฬาในสภาพอากาศฝนตก)
สมมติฐานของการถดถอยปัวซอง
ก่อนที่เราจะทำการถดถอยแบบปัวซองได้ เราต้องแน่ใจว่าเป็นไปตามสมมติฐานต่อไปนี้ เพื่อให้ผลลัพธ์การถดถอยแบบปัวซองของเราถูกต้อง:
สมมติฐานที่ 1: ตัวแปรตอบสนองคือข้อมูลการนับ ในการถดถอยเชิงเส้นแบบดั้งเดิม ตัวแปรตอบสนองจะเป็นข้อมูลต่อเนื่อง อย่างไรก็ตาม หากต้องการใช้การถดถอยปัวซอง ตัวแปรตอบสนองของเราจะต้องประกอบด้วยข้อมูลการนับรวมทั้งจำนวนเต็ม 0 หรือมากกว่า (เช่น 0, 1, 2, 14, 34, 49, 200 เป็นต้น) ตัวแปรการตอบสนองของเราไม่สามารถมีค่าลบได้
สมมติฐานที่ 2: การสังเกตมีความเป็นอิสระ การสังเกต แต่ละครั้งในชุดข้อมูลจะต้องเป็นอิสระจากกัน ซึ่งหมายความว่าข้อสังเกตหนึ่งไม่ควรให้ข้อมูลเกี่ยวกับข้อสังเกตอื่นได้
สมมติฐานที่ 3: การกระจายบัญชีเป็นไปตามการกระจายแบบปัวซง เป็นผลให้จำนวนที่สังเกตได้และที่คาดหวังควรจะใกล้เคียงกัน วิธีง่ายๆ ในการทดสอบคือการวางแผนจำนวนที่คาดหวังและจำนวนที่สังเกตได้ เพื่อดูว่าคล้ายกันหรือไม่
สมมติฐานที่ 4: ค่าเฉลี่ยและความแปรปรวนของแบบจำลองมีค่าเท่ากัน ผลลัพธ์นี้มาจากสมมติฐานที่ว่าการกระจายตัวของจำนวนนับเป็นไปตามการแจกแจงแบบปัวซง สำหรับการแจกแจงแบบปัวซอง ความแปรปรวนจะมีค่าเท่ากับค่าเฉลี่ย หากสมมติฐานนี้บรรลุผล คุณจะมี ความเท่าเทียมกัน อย่างไรก็ตาม สมมติฐานนี้มักถูกละเมิดเนื่องจากการกระจายตัวมากเกินไปเป็นปัญหาที่พบบ่อย
ตัวอย่าง: การถดถอยปัวซองใน R
ตอนนี้เราจะทบทวนตัวอย่างวิธีการถดถอยปัวซองใน R
พื้นหลัง
สมมติว่าเราต้องการทราบว่านักเบสบอลระดับมัธยมปลายในเขตที่กำหนดได้รับทุนการศึกษาจำนวนเท่าใด โดยพิจารณาจากแผนกการเรียนของเขา (“A”, “B” หรือ “C”) และเกรดของโรงเรียน การสอบเข้ามหาวิทยาลัย (วัดจาก 0 ถึง 100) ).
รหัสต่อไปนี้จะสร้างชุดข้อมูลที่เราจะร่วมงานด้วย ซึ่งรวมถึงข้อมูลเกี่ยวกับผู้เล่นเบสบอล 100 คน:
#make this example reproducible set.seed(1) #create dataset data <- data.frame(offers = c(rep(0, 50), rep(1, 30), rep(2, 10), rep(3, 7), rep(4, 3)), division = sample(c("A", "B", "C"), 100, replace = TRUE), exam = c(runif(50, 60, 80), runif(30, 65, 95), runif(20, 75, 95)))
การทำความเข้าใจข้อมูล
ก่อนที่จะปรับแบบจำลองการถดถอยปัวซองให้เข้ากับชุดข้อมูลนี้จริงๆ เราจะเข้าใจข้อมูลได้ดีขึ้นโดยการแสดงภาพสองสามแถวแรกของชุดข้อมูล และใช้ไลบรารี dplyr เพื่อเรียกใช้สถิติสรุป:
#view dimensions of dataset dim(data) #[1] 100 3 #view first six lines of dataset head(data) # offers division exam #1 0 A 73.09448 #2 0 B 67.06395 #3 0 B 65.40520 #4 0 C 79.85368 #5 0 A 72.66987 #6 0 C 64.26416 #view summary of each variable in dataset summary(data) # offers division exam # Min. :0.00 To:27 Min. :60.26 # 1st Qu.:0.00 B:38 1st Qu.:69.86 # Median: 0.50 C:35 Median: 75.08 # Mean:0.83 Mean:76.43 # 3rd Qu.:1.00 3rd Qu.:82.87 # Max. :4.00 Max. :93.87 #view mean exam score by number of offers library(dplyr) data %>% group_by (offers) %>% summarize (mean_exam = mean(exam)) # A tibble: 5 x 2 # offers mean_exam # #1 0 70.0 #2 1 80.8 #3 2 86.8 #4 3 83.9 #5 4 87.9
จากผลลัพธ์ข้างต้น เราสามารถสังเกตได้ดังต่อไปนี้:
- ชุดข้อมูลมี 100 แถวและ 3 คอลัมน์
- จำนวนข้อเสนอขั้นต่ำที่ผู้เล่นได้รับคือศูนย์ สูงสุดคือสี่ข้อเสนอ และค่าเฉลี่ยคือ 0.83
- ในชุดข้อมูลนี้ มีผู้เล่น 27 คนจากดิวิชั่น “A” ผู้เล่น 38 คนจากดิวิชั่น “B” และผู้เล่น 35 คนจากดิวิชั่น “C”
- คะแนนสอบขั้นต่ำคือ 60.26 คะแนนสูงสุดคือ 93.87 และคะแนนเฉลี่ยคือ 76.43
- โดยทั่วไป ผู้เล่นที่ได้รับข้อเสนอทุนการศึกษามากขึ้นมักจะมีคะแนนสอบสูงกว่า (เช่น คะแนนสอบเฉลี่ยสำหรับผู้เล่นที่ไม่ได้รับข้อเสนอคือ 70.0 และคะแนนบทวิจารณ์เฉลี่ยสำหรับผู้เล่นที่ได้รับ 4 ข้อเสนอคือ 87.9)
นอกจากนี้เรายังสามารถสร้างฮิสโตแกรมเพื่อให้เห็นภาพจำนวนข้อเสนอที่ผู้เล่นได้รับตามดิวิชั่น:
#load ggplot2 package library(ggplot2) #create histogram ggplot(data, aes(offers, fill = division)) + geom_histogram(binwidth=.5, position="dodge")
เราจะเห็นได้ว่าผู้เล่นส่วนใหญ่ไม่ได้รับข้อเสนอเดียวหรือข้อเสนอเดียวเท่านั้น นี่เป็นเรื่องปกติของชุดข้อมูลที่เป็นไปตาม การแจกแจงแบบปัวซอง : ส่วนที่ดีของค่าการตอบสนองจะเป็นศูนย์
ติดตั้งแบบจำลองการถดถอยปัวซอง
ต่อไป เราสามารถปรับโมเดลโดยใช้ฟังก์ชัน glm() และระบุว่าเราต้องการใช้ family=”fish” สำหรับโมเดล:
#fit the model model <- glm(offers ~ division + exam, family = "fish" , data = data) #view model output summary(model) #Call: #glm(formula = offers ~ division + exam, family = "fish", data = data) # #Deviance Residuals: # Min 1Q Median 3Q Max #-1.2562 -0.8467 -0.5657 0.3846 2.5033 # #Coefficients: #Estimate Std. Error z value Pr(>|z|) #(Intercept) -7.90602 1.13597 -6.960 3.41e-12 *** #divisionB 0.17566 0.27257 0.644 0.519 #divisionC -0.05251 0.27819 -0.189 0.850 #exam 0.09548 0.01322 7.221 5.15e-13 *** #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #(Dispersion parameter for fish family taken to be 1) # # Null deviance: 138,069 on 99 degrees of freedom #Residual deviance: 79,247 on 96 degrees of freedom #AIC: 204.12 # #Number of Fisher Scoring iterations: 5
จากผลลัพธ์เราสามารถสังเกตได้ดังต่อไปนี้:
- ค่าสัมประสิทธิ์การถดถอยปัวซอง ค่าคลาดเคลื่อนมาตรฐานของการประมาณค่า คะแนน z และค่า p ที่สอดคล้องกันล้วนจัดเตรียมไว้ให้แล้ว
- ค่าสัมประสิทธิ์ การตรวจสอบ คือ 0.09548 ซึ่งบ่งชี้ว่าหมายเลขบันทึกที่คาดหวังสำหรับจำนวนข้อเสนอสำหรับ การตรวจสอบ ที่เพิ่มขึ้นหนึ่งหน่วยคือ 0.09548 วิธีที่ง่ายกว่าในการตีความสิ่งนี้คือใช้ค่ายกกำลัง เช่น e 0.09548 = 1.10 ซึ่งหมายความว่าจำนวนข้อเสนอที่ได้รับเพิ่มขึ้น 10% สำหรับแต่ละคะแนนเพิ่มเติมที่ได้รับจากการสอบเข้า
- ค่าสัมประสิทธิ์สำหรับ ดิวิชั่น B คือ 0.1756 ซึ่งบ่งชี้ว่าจำนวนข้อเสนอที่คาดหวังสำหรับผู้เล่นในดิวิชั่น B นั้นสูงกว่าผู้เล่นในดิวิชั่น A 0.1756 วิธีที่ง่ายกว่าในการตีความสิ่งนี้คือใช้ค่าเลขชี้กำลัง เช่น e 0.1756 = 1.19 . ซึ่งหมายความว่าผู้เล่นในดิวิชั่น B จะได้รับข้อเสนอมากกว่าผู้เล่นในดิวิชั่น A ถึง 19% โปรดทราบว่าความแตกต่างนี้ไม่มีนัยสำคัญทางสถิติ (p = 0.519)
- ค่าสัมประสิทธิ์สำหรับ ดิวิชั่น C คือ -0.05251 ซึ่งบ่งชี้ว่าหมายเลขบันทึกที่คาดหวังสำหรับจำนวนข้อเสนอสำหรับผู้เล่นในดิวิชั่น C คือ 0.05251 ต่ำกว่า สำหรับผู้เล่นในดิวิชั่น A วิธีที่ง่ายกว่าในการตีความสิ่งนี้คือการใช้ค่าเลขชี้กำลัง คือ e 0.05251 = 0.94 ซึ่งหมายความว่าผู้เล่นในดิวิชั่น C จะได้รับข้อเสนอน้อยกว่าผู้เล่นในดิวิชั่น A 6% โปรดทราบว่าความแตกต่างนี้ไม่มีนัยสำคัญทางสถิติ (p = 850)
นอกจากนี้ยังมีข้อมูลเกี่ยวกับการเบี่ยงเบนของโมเดลด้วย เราสนใจเป็นพิเศษในเรื่อง ค่าเบี่ยงเบนที่เหลือ ซึ่งมีค่า 79,247 จาก 96 องศาอิสระ การใช้ตัวเลขเหล่านี้ทำให้เราสามารถทำการทดสอบความพอดีของไคสแควร์เพื่อดูว่าแบบจำลองนั้นเหมาะสมกับข้อมูลหรือไม่ รหัสต่อไปนี้แสดงวิธีดำเนินการทดสอบนี้:
pchisq(79.24679, 96, lower.tail = FALSE) #[1] 0.8922676
ค่า p สำหรับการทดสอบนี้คือ 0.89 ซึ่งสูงกว่าระดับนัยสำคัญ 0.05 มาก เราสามารถสรุปได้ว่าข้อมูลเหมาะสมกับโมเดลพอสมควร
ดูผลลัพธ์
นอกจากนี้เรายังสามารถสร้างแผนภูมิที่แสดงจำนวนข้อเสนอทุนการศึกษาที่คาดว่าจะได้รับโดยพิจารณาจากผลการสอบหมวดและสอบเข้าโดยใช้รหัสต่อไปนี้:
#find predicted number of offers using the fitted Poisson regression model data$phat <- predict(model, type="response") #create plot that shows number of offers based on division and exam score ggplot(data, aes(x = exam, y = phat, color = division)) + geom_point(aes(y = offers), alpha = .7, position = position_jitter(h = .2)) + geom_line() + labs(x = "Entrance Exam Score", y = "Expected number of scholarship offers")
แผนภูมิแสดงจำนวนข้อเสนอทุนการศึกษาที่คาดหวังสูงสุดสำหรับผู้เล่นที่ได้คะแนนสูงในการสอบเข้า นอกจากนี้ เราจะเห็นว่าผู้เล่นในดิวิชั่น B (เส้นสีเขียว) ควรได้รับข้อเสนอโดยทั่วไปมากกว่าผู้เล่นในดิวิชั่น A หรือดิวิชั่น C
รายงานผล
สุดท้ายนี้ เราสามารถรายงานผลลัพธ์การถดถอยในลักษณะที่สรุปการค้นพบของเรา:
มีการใช้การถดถอยแบบปัวซองเพื่อทำนายจำนวนข้อเสนอทุนการศึกษาที่ผู้เล่นเบสบอลได้รับ โดยพิจารณาจากคะแนนสอบแบบแบ่งกลุ่มและสอบเข้า สำหรับแต่ละคะแนนเพิ่มเติมที่ได้รับจากการสอบเข้า จำนวนข้อเสนอที่ได้รับจะเพิ่มขึ้น 10% ( p < 0.0001) ไม่พบการแบ่งส่วนที่มีนัยสำคัญทางสถิติ
แหล่งข้อมูลเพิ่มเติม
รู้เบื้องต้นเกี่ยวกับการถดถอยเชิงเส้นอย่างง่าย
รู้เบื้องต้นเกี่ยวกับการถดถอยเชิงเส้นพหุคูณ
ความรู้เบื้องต้นเกี่ยวกับการถดถอยพหุนาม