이산 균일 분포를 따르는가? (적합도 검정)

이산 균일 분포를 따르는가?






class1~class4라는 4개의 속성에 의한 차이는 있는가?
아니면, 차이는 없다, 이산 균일 분포를 따르는 것으로 생각할 수 있는 것인가?
# グラフ
library(dplyr)

d <-data.frame(
  observe = c(rep("class1",330), rep("class2",305),
              rep("class3",263),rep("class4",247))
)

d %>% table() %>% barplot(ylim=c(0,350),col="4")
abline(h = 1145/4, col="red", lwd=3)

이산 균일 분포와의 적합도



$H_0:$ 속성에 의한 차이는 없다(이산 균일 분포에 따른다)
$H_1:$ 속성에 차이가 있다

$ H_0 $를 가정하면 이론적으로 데이터 수 × 1/속성 수의 이산 균일 분포가됩니다.
다만, 실제로는 우연을 생각해 완전한 등분산은 되지 않는다.
그렇다면 우연성을 고려한 후 이산 균일 분포를 따르는가?

관측한 데이터를 관측 도수의 테이블
$H_0$에 기초한 기대도 테이블
이 두 가지를 만든다.

(기대 도수의 최소치 $<$ 5 의 경우, 근사가 잘 되지 않으므로 주의)

관측 도수와 기대 도수의 어긋남의 합을 생각한다

이 차이의 합은 카이 제곱 값과 같습니다.

적합도 검정



$H_0$가 맞으면 n이 크면,

$$\chi^2=\sum\frac{(O_i-E_i)^2}{E_i}$$

가 $k-1$의 카이 제곱 분포를 따른다.

$O_i$:관측 빈도 테이블 $O$의 i번째
$E_i$: 예상 빈도 테이블 $E$의 i번째
$k$: 속성 수

$H_0$ 아래에서 이 값은 작아야 합니다.
작으면 $H_0$가 지지
큰 경우에는 $H_0$를 기각하고 $H_1$를 지지.

R


d <-data.frame(
  observe = c(rep("class1",330), rep("class2",305),rep("class3",263),rep("class4",247))
)
# 格納確認
dim(d)
head(d)
names(d)
summary(d)
# table関数からクロス集計表を作る
(obs_tabs <- table(d))
# xtabsを使ってもtableを作れる
# (obs_tabs <- xtabs(~observe,d))

# 合計付きの集計表へ
(f_tabs <- addmargins(obs_tabs))


# 期待度数のtableを作る
(Expected <- obs_tabs) # 観測度数の表とdiimensionが同じになるので、いったん格納して
(Expected <- obs_tabs*0) # 期待度数を入れるために初期化
# sumを拾う
(n <- f_tabs["Sum"])
# 離散一様分布なので割合は 1/属性数 で一律
(p <- 1/dim(obs_tabs))

# 期待度数のtableを作る
for (i in 1:dim(obs_tabs)) Expected[i] <- n*p
Expected
# (期待度数の最小値) ≧ 5 なのでこのまま推定

# 観察度数と期待度数のズレの和
chisq = sum((obs_tabs-Expected)^2/Expected)
chisq

$\chi^2=15.18515$

$H_0$: 이산 균일 분포를 따르는 것에 대해
양측 5% 수준에서 검토한다.

자유도: $4-1=3$의 카이 제곱 분포 위쪽 $5$%점이 $7.81$
기각 한계치 $7.81$보다 카이 제곱값이 크기 때문에 $H_0$는 기각되어 $H_1$가 지지된다.

테이블을 그대로 chisq.test에 통과


chisq.test(obs_tabs)

Chi-squared test for given probabilities
data: obs_tabs
X-squared = 15.185, df = 3, p-value = 0.001665

어쩌면 dim(obs_tabs) 로 1행으로 4 라고 되돌아오는 테이블에 대해서는 이산 균일 분포의 Chi-squared test 가 run 하는 모양.

좋은 웹페이지 즐겨찾기