ANOVA แบบ non-parametric และ unpaired t-tests

Hypothesis Testing in R

Richie Cotton

Data Evangelist at DataCamp

การทดสอบแบบ non-parametric

การทดสอบแบบ non-parametric คือการทดสอบสมมติฐานที่ไม่ต้องสมมติการแจกแจงความน่าจะเป็นของสถิติทดสอบ

การทดสอบสมมติฐานแบบ non-parametric มี 2 ประเภท:

  1. แบบ Simulation
  2. แบบ Rank
Hypothesis Testing in R

t_test()

$H_{0}$: $\mu_{child} - \mu_{adult} = 0$     $H_{A}$: $\mu_{child} - \mu_{adult} > 0$

library(infer)
stack_overflow %>% 
  t_test(
    converted_comp ~ age_first_code_cut,
    order = c("child", "adult"),
    alternative = "greater"
  )
# A tibble: 1 x 6
  statistic  t_df p_value alternative lower_ci upper_ci
      <dbl> <dbl>   <dbl> <chr>          <dbl>    <dbl>
1      2.40 2083. 0.00814 greater        8438.      Inf
Hypothesis Testing in R

การคำนวณ null distribution

Pipeline แบบ Simulation
null_distn <- stack_overflow %>% 
  specify(converted_comp ~ age_first_code_cut) %>%

hypothesize(null = "independence") %>%
generate(reps = 5000, type = "permute") %>%
calculate( stat = "diff in means", order = c("child", "adult") )
t-test เปรียบเทียบ
library(infer)
stack_overflow %>% 
  t_test(
    converted_comp ~ age_first_code_cut,
    order = c("child", "adult"),
    alternative = "greater"
  )
Hypothesis Testing in R

การคำนวณสถิติที่สังเกตได้

Pipeline แบบ Simulation
obs_stat <- stack_overflow %>% 
  specify(converted_comp ~ age_first_code_cut) %>% 
  calculate(
    stat = "diff in means", 
    order = c("child", "adult")
  )
t-test เปรียบเทียบ
library(infer)
stack_overflow %>% 
  t_test(
    converted_comp ~ age_first_code_cut,
    order = c("child", "adult"),
    alternative = "greater"
  )
Hypothesis Testing in R

การหาค่า p-value

Pipeline แบบ Simulation
get_p_value(
  null_distn, obs_stat, 
  direction = "greater"
)
# A tibble: 1 x 1
  p_value
    <dbl>
1  0.0066
t-test เปรียบเทียบ
library(infer)
stack_overflow %>% 
  t_test(
    converted_comp ~ age_first_code_cut,
    order = c("child", "adult"),
    alternative = "greater"
  )
# A tibble: 1 x 6
  statistic  t_df p_value alternative lower_ci upper_ci
      <dbl> <dbl>   <dbl> <chr>          <dbl>    <dbl>
1      2.40 2083. 0.00814 greater        8438.      Inf
Hypothesis Testing in R

Rank ของเวกเตอร์

x <- c(1, 15, 3, 10, 6)
rank(x)
1 5 2 4 3

การทดสอบ Wilcoxon-Mann-Whitney (หรือที่รู้จักในชื่อ Wilcoxon rank sum test) คือการทดสอบแบบ t-test บน rank ของข้อมูลตัวเลข (โดยประมาณ)

Hypothesis Testing in R

การทดสอบ Wilcoxon-Mann-Whitney

wilcox.test(
  converted_comp ~ age_first_code_cut,
  data = stack_overflow,
  alternative = "greater",
  correct = FALSE
) 
    Wilcoxon rank sum test

data:  converted_comp by age_first_code_cut
W = 967298, p-value <2e-16
alternative hypothesis: true location shift is greater than 0
1 รู้จักในชื่อ "Wilcoxon rank-sum test" และ "Mann-Whitney U test" เช่นกัน
Hypothesis Testing in R

การทดสอบ Kruskal-Wallis

Kruskal-Wallis test มีความสัมพันธ์กับ Wilcoxon-Mann-Whitney test เช่นเดียวกับที่ ANOVA มีความสัมพันธ์กับ t-test

kruskal.test(
  converted_comp ~ job_sat,
  data = stack_overflow
)
    Kruskal-Wallis rank sum test

data:  converted_comp by job_sat
Kruskal-Wallis chi-square = 81, df = 4, p-value <2e-16
Hypothesis Testing in R

มาฝึกกันเถอะ!

Hypothesis Testing in R

Preparing Video For Download...