วิธีดำเนินการทดสอบตัวอย่างแบบจับคู่ใน 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

เนื่องจากค่า ศูนย์ อยู่ภายในช่วงความเชื่อมั่นนี้ ซึ่งหมายความว่า ศูนย์ อาจเป็นผลต่างที่แท้จริงระหว่างคะแนนเฉลี่ย ซึ่งเป็นสาเหตุที่เราล้มเหลวในการปฏิเสธสมมติฐานว่างในกรณีนี้

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

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