ข้อมูลเบื้องต้นเกี่ยวกับการถดถอยปัวซองสำหรับข้อมูลการนับ


การถดถอย เป็นวิธีการทางสถิติที่สามารถใช้เพื่อกำหนดความสัมพันธ์ระหว่างตัวแปรทำนายตั้งแต่หนึ่งตัวขึ้นไปและ ตัวแปรตอบสนอง

การถดถอยปัวซอง เป็นการถดถอยชนิดพิเศษที่ตัวแปรตอบสนองคือ “ข้อมูลนับ” ตัวอย่างต่อไปนี้แสดงกรณีที่สามารถใช้การถดถอยปัวซองได้:

ตัวอย่างที่ 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) ไม่พบการแบ่งส่วนที่มีนัยสำคัญทางสถิติ

แหล่งข้อมูลเพิ่มเติม

รู้เบื้องต้นเกี่ยวกับการถดถอยเชิงเส้นอย่างง่าย
รู้เบื้องต้นเกี่ยวกับการถดถอยเชิงเส้นพหุคูณ
ความรู้เบื้องต้นเกี่ยวกับการถดถอยพหุนาม

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *