Skip to main content Link Search Menu Expand Document (external link)

Independent t-test

การเปรียบเทียบกลุ่ม 2 กลุ่มที่เป็นอิสระจากกัน

ข้อตกลงเบื้องต้นของ Independent t-test จะมีความคล้ายคลึงกับ One-sample t-test

การวิเคราะห์ผลโดยนำค่าเฉลี่ยจากกลุ่มตัวอย่าง (X̄1) ไปเปรียบเทียบกับค่าเฉลี่ยกลุ่มตัวอย่าง (X̄2) ข้อมูลของกลุ่มตัวอย่างจำเป็นต้องผ่านข้อตกลงเบื้องต้น หรือ (assumption) ของการทดสอบสถิติดังกล่าว

ข้อตกลงเบื้องต้นของ Independent t-test มีดังนี้

* ตัวแปรตาม (dependent variable) หรือตัวแปร criterion ควรอยู่ในรูปของตัวแปรต่อเนื่อง (see: levels of measurements) ไม่ว่าจะเป็นแบบ interval หรือ ratio

* ตัวแปรต้น (independent variable) ควรมีลักษณะเป็นกลุ่มจำนวน 2 กลุ่ม

* ข้อมูลมีความอิสระจากกัน (Independence; เราจะพบข้อตกลงนี้ในหลาย ๆ การทดสอบทางสถิติเพราะเป็นเรื่องที่สำคัญ, ดูเพิ่มเติมจาก concept) กล่าวคือ การออกแบบการเก็บข้อมูลจะต้องทำให้ไม่มีความสัมพันธ์ในกลุ่ม

* ข้อมูลไม่ควรมีค่าสุดโต่ง (outliers) เพราะการใช้ค่าเฉลี่ย (mean) ในการคำนวณมีความเสี่ยงจะเกิดอคติสูง (see concept ทำไมถึงใช้ค่าเฉลี่ย)

* ตัวแปรตาม (dependent variable) ควรอย่างน้อยมีโค้งเป็นปกติในแต่ละกลุ่ม แม้ว่าการทดสอบ t จะค่อนข้างแข็งแกร่ง (robust) ต่อการเบ้ของข้อมูลก็ตาม เราสามารถทดสอบได้ด้วย Shapiro-Wilk test of normality

* ควรมี homogeneity of variance ซึ่งหมายความว่า residuals ของข้อมูลทั้งสองกลุ่มควรมีความอิสระจากกัน ซึ่งสามารถทดสอบได้โดยใช้ Levene's test

สร้างข้อมูลเปรียบเทียบกลุ่ม

สมมติว่าพนักงานจากบริษัท A มีค่าเฉลี่ยของความพึงพอใจในการทำงานอยู่ที่ 5 จาก 1 - 7 likert scale ส่วนพนักงานจากบริษัท B มีค่าเฉลี่ยความพึงพอใจในงานอยู่ที่ 5.2

เราลองมาสร้างข้อมูลจากโจทย์กัน

A <- rnorm(23, mean = 5, sd = 1.8)
B <- rnorm(26, mean = 5.2, sd = 2.1)
# combine row
library(reshape2)
job_sat <- cbind(A, B)
job_sat <- melt(job_sat, id.vars = c("A", "B"))
colnames(job_sat) <- c("ID", "company", "job_sat_score")
head(job_sat)
##   ID company job_sat_score
## 1  1       A      4.524639
## 2  2       A      6.999153
## 3  3       A      2.226317
## 4  4       A      6.844786
## 5  5       A      3.591353
## 6  6       A      2.069014

Note ด้วยคำสั่ง rnorm() เราจะพบว่าค่าเฉลี่ยอาจจะไม่เท่ากับที่เก็บข้อมูลมา

ทดสอบข้อตกลงเบื้องต้น (assumption)

  • ค่าสุดโต่ง
    boxplot(job_sat_score ~ company, job_sat)

ในกราฟ boxplot() ไม่มีค่าสุดโต่ง

  • homogeneity of variances

```` r t.model <- aov(job_sat_score ~ company, job_sat) car::leveneTest(t.model)


    ## Levene's Test for Homogeneity of Variance (center = median)
    ##       Df F value Pr(>F)  
    ## group  1  3.1567 0.0817 .
    ##       50                 
    ## ---
    ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

การที่ผลไม่ significant หรือ Pr(&gt;F) ไม่น้อยกว่า 0.05 แปลว่าข้อมูลไม่ละเมิดข้อตกลงนี้ค่ะ

-   การทดสอบ Normality

``` r
    car::qqPlot(job_sat_score ~ company, job_sat)

ผลจาก qqPlot() ระบุถึงความเป็น normality

การวิเคราะห์ผลโดยใช้ t.test()

เมื่อไม่พบข้อมูลที่ละเมิดข้อตกลงเบื้องต้น เราจะนำข้อมูลไปทดสอบ t ต่อไป

    t.test(job_sat_score ~ company, job_sat, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  job_sat_score by company
## t = -1.878, df = 50, p-value = 0.06622
## alternative hypothesis: true difference in means between group A and group B is not equal to 0
## 95 percent confidence interval:
##  -2.15183140  0.07230739
## sample estimates:
## mean in group A mean in group B 
##        4.195654        5.235416

เราจะพบว่าค่า t = 1.047 และ p job_sat_score อยู่ที่ 0.3 แปลว่า ไม่มีความแตกต่างกันระหว่างพนักงานในบริษัท A และ B

แต่ถ้าสมมติว่าเราทดสอบ Homogeneity Test แล้วพบว่า Variance ของสองกลุ่มไม่เท่ากัน เราสามารถงดใส่คำสั่ง var.equal = TRUE หรือเปลี่ยนจาก TRUE เป็น FALSE

    t.test(job_sat_score ~ company, job_sat, var.equal = FALSE)
## 
##  Welch Two Sample t-test
## 
## data:  job_sat_score by company
## t = -1.878, df = 43.748, p-value = 0.06706
## alternative hypothesis: true difference in means between group A and group B is not equal to 0
## 95 percent confidence interval:
##  -2.15578291  0.07625889
## sample estimates:
## mean in group A mean in group B 
##        4.195654        5.235416

จะเห็นว่าผล output บรรทัดบนสุกเปลี่ยนไปเป็น

Welch Two Sample t-test

แปลว่าเราเลือกใช้สถิติ Welch t-test ที่มีความแข็งแกร่ง (robust) ในการต่อสู้กับการไม่เท่ากันของ Variances มากกว่า ผลที่ออกมามีความคล้ายคลึงกัน ดูได้จาก Output ค่า


สร้างกราฟให้ป็นนิสัยกัน

    library(ggplot2)
    ggplot(job_sat) +
      geom_density(aes(x = job_sat_score, fill = company), alpha = .5) +
      geom_vline(xintercept = 4.809946, color = "gray") +
      geom_vline(xintercept =  5.379535, color = "gray") +
                     theme_classic() +
                     scale_fill_brewer(palette="Accent") +
      scale_color_brewer(palette="Accent")

~ เธอเห็นเส้นตรงนั่นไหม ~ เส้นสองเส้นนั้นคือค่า Mean ของแต่ละกลุ่ม การที่กราฟซ้อนทับกันมาก แปลว่ากลุ่มตัวอย่างสองกลุ่มแทบไม่แตกต่างกันเลยค่ะ