非參數 ANOVA 與不配對 t 檢定

R 中的假設檢定

Richie Cotton

Data Evangelist at DataCamp

非參數檢定

「非參數檢定」是不對檢定統計量假設機率分配的假設檢定。

非參數假設檢定有兩類:

  1. 模擬式。
  2. 名次式(以排序為基礎)。
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
R 中的假設檢定

計算虛無分配

模擬式流程
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 檢定(作為對照)
library(infer)
stack_overflow %>% 
  t_test(
    converted_comp ~ age_first_code_cut,
    order = c("child", "adult"),
    alternative = "greater"
  )
R 中的假設檢定

計算觀察到的統計量

模擬式流程
obs_stat <- stack_overflow %>% 
  specify(converted_comp ~ age_first_code_cut) %>% 
  calculate(
    stat = "diff in means", 
    order = c("child", "adult")
  )
t 檢定(作為對照)
library(infer)
stack_overflow %>% 
  t_test(
    converted_comp ~ age_first_code_cut,
    order = c("child", "adult"),
    alternative = "greater"
  )
R 中的假設檢定

取得 p 值

模擬式流程
get_p_value(
  null_distn, obs_stat, 
  direction = "greater"
)
# A tibble: 1 x 1
  p_value
    <dbl>
1  0.0066
t 檢定(作為對照)
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
R 中的假設檢定

向量的名次(排名)

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

「Wilcoxon-Mann-Whitney 檢定」(亦稱「Wilcoxon 名次和檢定」)大致上是對數值輸入之名次做 t 檢定。

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」。
R 中的假設檢定

Kruskal-Wallis 檢定

Kruskal-Wallis 檢定 之於 Wilcoxon-Mann-Whitney 檢定,正如 ANOVA 之於 t 檢定。

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
R 中的假設檢定

一起來練習吧!

R 中的假設檢定

Preparing Video For Download...