วิธีดำเนินการทดสอบตัวอย่างแบบจับคู่ใน r
การทดสอบทีตัวอย่างแบบจับคู่ คือการทดสอบทางสถิติที่เปรียบเทียบค่าเฉลี่ยของสองตัวอย่าง เมื่อการสังเกตแต่ละครั้งจากตัวอย่างหนึ่งสามารถจับคู่กับ การสังเกต จากตัวอย่างอื่นได้
ตัวอย่างเช่น สมมติว่าเราต้องการทราบว่าหลักสูตรหนึ่งๆ มีผลกระทบอย่างมีนัยสำคัญต่อผลการเรียนของนักเรียนในการสอบนั้นๆ หรือไม่ เพื่อทดสอบสิ่งนี้ เราขอให้นักเรียน 20 คนในชั้นเรียนทำแบบทดสอบล่วงหน้า จากนั้นนักเรียนแต่ละคนจะเข้าร่วมโปรแกรมการศึกษาทุกวันเป็นเวลาสองสัปดาห์ จากนั้นให้นักเรียนทำแบบทดสอบความยากที่คล้ายกันอีกครั้ง
เพื่อเปรียบเทียบความแตกต่างระหว่างคะแนนเฉลี่ยของการทดสอบครั้งแรกและครั้งที่สอง เราใช้การทดสอบแบบจับคู่ เนื่องจากสำหรับนักเรียนแต่ละคน คะแนนในการทดสอบครั้งแรกสามารถเชื่อมโยงกับคะแนนในการทดสอบครั้งที่สองได้
วิธีดำเนินการทดสอบแบบจับคู่
ในการทำการทดสอบทีแบบคู่ เราสามารถใช้แนวทางต่อไปนี้:
ขั้นตอนที่ 1: ระบุสมมติฐานว่างและทางเลือก
H 0 : μd = 0
H a : μ d ≠ 0 (สองด้าน)
H a : μ d > 0 (ด้านเดียว)
H a : μ d < 0 (ด้านเดียว)
โดยที่ μ d คือผลต่างเฉลี่ย
ขั้นตอนที่ 2: ค้นหาสถิติการทดสอบและค่า p ที่สอดคล้องกัน
ให้ a = คะแนนของนักเรียนในการทดสอบครั้งแรก และ b = คะแนนของนักเรียนในการทดสอบครั้งที่สอง เพื่อทดสอบสมมติฐานว่างที่ว่าผลต่างค่าเฉลี่ยที่แท้จริงระหว่างคะแนนทดสอบเป็นศูนย์:
- คำนวณความแตกต่างระหว่างคะแนนแต่ละคู่ (d i = b i – a i )
- คำนวณผลต่างเฉลี่ย (d)
- คำนวณค่าเบี่ยงเบนมาตรฐานของผลต่าง s d
- คำนวณสถิติ t ซึ่งก็คือ T = d / (s d / √n)
- ค้นหาค่า p ที่สอดคล้องกันสำหรับสถิติ t ที่มีดีกรีอิสระ n-1
ขั้นตอนที่ 3: ปฏิเสธหรือไม่ปฏิเสธสมมติฐานว่าง โดยขึ้นอยู่กับระดับนัยสำคัญ
หากค่า p น้อยกว่าระดับนัยสำคัญที่เลือก เราจะปฏิเสธสมมติฐานว่างและสรุปว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติระหว่างค่าเฉลี่ยของทั้งสองกลุ่ม มิฉะนั้น เราจะล้มเหลวในการปฏิเสธสมมติฐานที่เป็นโมฆะ
วิธีดำเนินการทดสอบ paired t ใน R
เพื่อทำการทดสอบ paired t ใน R เราสามารถใช้ฟังก์ชันในตัว t.test() ด้วยไวยากรณ์ต่อไปนี้:
t.test (x, y, จับคู่ = TRUE, ทางเลือก = “สองด้าน”)
- x,y: เวกเตอร์ดิจิทัลสองตัวที่เราต้องการเปรียบเทียบ
- paired: ค่าตรรกะที่ระบุว่าเราต้องการคำนวณค่า t-test ที่จับคู่
- ทางเลือก: สมมติฐานทางเลือก สามารถตั้งค่าเป็น “สองด้าน” (ค่าเริ่มต้น), “ด้านบน” หรือ “ด้านล่าง”
ตัวอย่างต่อไปนี้แสดงวิธีดำเนินการจับคู่ทีเทสต์เพื่อพิจารณาว่าคะแนนเฉลี่ยระหว่างการทดสอบก่อนและหลังสำหรับนักเรียน 20 คนแตกต่างกันอย่างมีนัยสำคัญหรือไม่
สร้างข้อมูล
ขั้นแรก เราจะสร้างชุดข้อมูล:
#create the dataset data <- data.frame(score = c(85,85, 78, 78, 92, 94, 91, 85, 72, 97, 84, 95, 99, 80, 90, 88, 95, 90, 96, 89, 84, 88, 88, 90, 92, 93, 91, 85, 80, 93, 97, 100, 93, 91, 90, 87, 94, 83, 92, 95), group = c(rep('pre', 20), rep('post', 20))) #view the dataset data #scoregroup #1 85 pre #2 85 pre #3 78 pre #4 78 pre #5 92 pre #6 94 pre #7 91 pre #8 85 pre #9 72 pre #10 97 pre #11 84 pre #12 95 pre #13 99 pre #14 80 pre #15 90 pre #16 88 pre #17 95 pre #18 90 pre #19 96 pre #20 89 pre #21 84 post #22 88 post #23 88 post #24 90 post #25 92 post #26 93 post #27 91 post #28 85 post #29 80 post #30 93 post #31 97 post #32 100 posts #33 93 post #34 91 post #35 90 post #36 87 post #37 94 post #38 83 post #39 92 post #40 95 post
เห็นภาพความแตกต่าง
ต่อไป เราจะดูสถิติสรุปของทั้งสองกลุ่มโดยใช้ฟังก์ชัน group_by() และ summary () จากไลบรารี dplyr :
#load dplyr library
library(dplyr)
#find sample size, mean, and standard deviation for each group
data %>%
group_by (group) %>%
summarize (
count = n(),
mean = mean(score),
sd = sd(score)
)
# A tibble: 2 x 4
# group count mean sd
#
#1 post 20 90.3 4.88
#2 pre 20 88.2 7.24
นอกจากนี้เรายังสามารถสร้าง boxplots โดยใช้ฟังก์ชัน boxplot() ใน R เพื่อแสดงการกระจายคะแนนสำหรับกลุ่มก่อนและหลัง:
boxplot (score~group,
data=data,
main="Test Scores by Group",
xlab="Group",
ylab="Score",
col="steelblue",
border="black"
)
จากสถิติสรุปและ Box plot เราจะเห็นว่าคะแนนเฉลี่ยในกลุ่ม โพสต์ สูงกว่าคะแนนเฉลี่ยในกลุ่ม ก่อน เล็กน้อย เรายังเห็นได้ว่าคะแนนกลุ่ม หลังโพส ต์มีความแปรปรวนน้อยกว่าคะแนนกลุ่ม ก่อน
หากต้องการทราบว่าความแตกต่างระหว่างค่าเฉลี่ยของทั้งสองกลุ่มนี้มีนัยสำคัญทางสถิติหรือไม่ เราสามารถทำการทดสอบแบบจับคู่ได้
ทำการทดสอบทีแบบคู่
ก่อนที่จะทำการทดสอบ paired t เราต้องตรวจสอบว่าการแจกแจงของความแตกต่างนั้นมีการกระจายแบบปกติ (หรือประมาณปกติ) ในการทำเช่นนี้ เราสามารถสร้างเวกเตอร์ใหม่ที่กำหนดความแตกต่างระหว่างคะแนนก่อนและหลัง และทำการทดสอบ Shapiro-Wilk เพื่อหาความเป็นปกติของเวกเตอร์ของค่านี้:
#define new vector for difference between post and pre scores differences <- with(data, score[group == "post"] - score[group == "pre"]) #perform shapiro-wilk test for normality on this vector of values shapiro.test(differences) # Shapiro-Wilk normality test # #data: differences #W = 0.92307, p-value = 0.1135 #
ค่า p ของการทดสอบคือ 0.1135 ซึ่งมากกว่า alpha = 0.05 ดังนั้นเราจึงไม่สามารถปฏิเสธสมมติฐานว่างที่ว่าข้อมูลของเรามีการกระจายตามปกติ ซึ่งหมายความว่าตอนนี้เราสามารถดำเนินการทดสอบแบบจับคู่ได้แล้ว
เราสามารถใช้โค้ดต่อไปนี้เพื่อทำการจับคู่ t-test:
t.test (score~group, data = data, paired = TRUE)
# Paired t-test
#
#data: score by group
#t = 1.588, df = 19, p-value = 0.1288
#alternative hypothesis: true difference in means is not equal to 0
#95 percent confidence interval:
# -0.6837307 4.9837307
#sample estimates:
#mean of the differences
#2.15
จากผลลัพธ์เราจะเห็นได้ว่า:
- สถิติการทดสอบ ที เท่ากับ 1.588
- ค่า p สำหรับสถิติการทดสอบนี้มีองศาอิสระ 19 องศา (df) คือ 0.1288
- ช่วงความเชื่อมั่น 95% สำหรับผลต่างเฉลี่ยคือ (-0.6837, 4.9837)
- คะแนนเฉลี่ยกลุ่มก่อนและหลังต่างกันเฉลี่ย 2.15
ดังนั้น เนื่องจากค่า p ของเราต่ำกว่าระดับนัยสำคัญของเราที่ 0.05 เราจึงล้มเหลวในการปฏิเสธสมมติฐานว่างที่ว่าทั้งสองกลุ่มมีค่าเฉลี่ยที่มีนัยสำคัญทางสถิติ
กล่าวอีกนัยหนึ่ง เราไม่มีหลักฐานเพียงพอที่จะกล่าวว่าคะแนนเฉลี่ยระหว่างกลุ่มก่อนและหลังมีความแตกต่างกันทางสถิติ ซึ่งหมายความว่าหลักสูตรไม่มีผลกระทบอย่างมีนัยสำคัญต่อคะแนนสอบ
นอกจากนี้ ช่วงความเชื่อมั่น 95% ของเราบ่งชี้ว่าเรา “มั่นใจ 95%” ว่าผลต่างค่าเฉลี่ยที่แท้จริงระหว่างทั้งสองกลุ่มอยู่ระหว่าง -0.6837 ถึง 4.9837
เนื่องจากค่า ศูนย์ อยู่ภายในช่วงความเชื่อมั่นนี้ ซึ่งหมายความว่า ศูนย์ อาจเป็นผลต่างที่แท้จริงระหว่างคะแนนเฉลี่ย ซึ่งเป็นสาเหตุที่เราล้มเหลวในการปฏิเสธสมมติฐานว่างในกรณีนี้