두 개의 표본이 동일한 분포에서 추출 된 경우 비모수 검정


19

표본 또는 모집단의 분포에 대한 가정없이 두 표본이 동일한 모집단에서 추출되었다는 가설을 검정하고 싶습니다. 어떻게해야합니까?

Wikipedia에서 Mann Whitney U 테스트는 적합해야하지만 실제로는 효과가없는 것 같습니다.

구체성을 위해 두 개의 표본 (a, b)으로 크고 (n = 10000) 비정규 (바이 모달)이지만 두 개 모집단에서 추출한 데이터 집합은 비슷하지만 (동일한 평균) 다르지만 (표준 편차) 나는 "샘프 주위.") 나는이 샘플들이 같은 인구가 아니라는 것을 인식 할 수있는 테스트를 찾고 있습니다.

히스토그램보기 :

바이 모달 샘플

R 코드 :

a <- tibble(group = "a",
            n = c(rnorm(1e4, mean=50, sd=10),
                  rnorm(1e4, mean=100, sd=10)))
b <- tibble(group = "b",
            n = c(rnorm(1e4, mean=50, sd=3),
                  rnorm(1e4, mean=100, sd=3)))
ggplot(rbind(a,b), aes(x=n, fill=group)) +
  geom_histogram(position='dodge', bins=100)

다음은 Mann Whitney 검정이 놀랍게도 (?) 표본이 동일한 모집단에서 나온 귀무 가설을 기각하지 못한 것입니다.

> wilcox.test(n ~ group, rbind(a,b))

        Wilcoxon rank sum test with continuity correction

data:  n by group
W = 199990000, p-value = 0.9932
alternative hypothesis: true location shift is not equal to 0

도움! 다른 분포를 탐지하기 위해 코드를 어떻게 업데이트해야합니까? (특히 가능한 경우 일반 무작위 화 / 리샘플링을 기반으로 한 방법을 원합니다.)

편집하다:

답변 주셔서 감사합니다! 나는 Kolmogorov-Smirnov에 대해 더 많이 배우고 있는데, 이는 나의 목적에 매우 적합한 것 같습니다.

KS 테스트에서 두 샘플의 ECDF를 비교하고 있음을 이해합니다.

ECDF

여기서는 세 가지 흥미로운 기능을 시각적으로 볼 수 있습니다. (1) 표본의 분포가 다릅니다. (2) A는 특정 지점에서 B보다 분명히 높습니다. (3) A는 다른 특정 지점에서 B보다 분명히 낮습니다.

KS 테스트는 다음 각 기능을 가정 할 수있는 것으로 보입니다.

> ks.test(a$n, b$n)

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D = 0.1364, p-value < 2.2e-16
alternative hypothesis: two-sided

> ks.test(a$n, b$n, alternative="greater")

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D^+ = 0.1364, p-value < 2.2e-16
alternative hypothesis: the CDF of x lies above that of y

> ks.test(a$n, b$n, alternative="less")

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D^- = 0.1322, p-value < 2.2e-16
alternative hypothesis: the CDF of x lies below that of y

정말 깔끔합니다! 이러한 각 기능에 실질적으로 관심이 있으므로 KS 테스트에서 각 기능을 확인할 수 있다는 점이 좋습니다.


MW가 거부하지 않는다는 것은 놀라운 일이 아닙니다. 단측 검정의 경우 Pr (a> b) <0.05 인 경우 a와 b가 무작위로 선택된 모집단 구성원인지 여부를 테스트합니다.
mdewey

1
Mann-Whitney에 대한 가설은 때때로 두 그룹의 "위치", 또는 체계적인 확률 론적 차이를 따르는 무언가에 관한 것으로 알려져 있습니다. 데이터의 경우 두 그룹 모두 대칭 적으로 75 개 정도 분포되므로 MW는 분명히 차이를 찾지 않아야합니다.
Sal Mangiafico

4
이것은 우리가 검정에 대한 가설에 대해 명확하지 않을 때 심는 혼란의 좋은 예입니다. 불행하게도, 사람들은 사용 배운다 t 정말이 테스트는 두 비교 생각하지 않고, 두 그룹을 비교하는 -test를 수단을 두 비교하는 중간 시험 거기 반면, 중간 값을 다른 것을 비교, 맨 - 휘트니, 다른 백분위 수를 비교하기 분위수 회귀 , 분산을 비교하기위한 검정, 분포를 비교하기위한 Kolmogorov-Smirnov 등 ... 우리는 때때로 어떤 가설을 검정하고 싶은지 명확하지 않고 두 개의 "인구"를 비교하고 싶다고 말합니다.
Sal Mangiafico

MW 테스트에 대한 Wikipedia 페이지는 가설을 매우 명확하게 보여주는 것처럼 보이며이 가설이 표본이 동일한 분포에서 나온다는 것을 내 생각에는 잘못 이해 한 것입니다. 실제로, 동일한 중심점에 대해 대칭 인 두 개의 서로 다른 분포를 비교할 때 문제가 분명해집니다.
Luke Gorrie

답변:


17

Kolmogorov-Smirnov 테스트는 가장 일반적인 방법이지만 다른 옵션도 있습니다.

테스트는 경험적 누적 분포 함수를 기반으로합니다. 기본 절차는 다음과 같습니다.

  • 귀무 가설 하에서 표본이 동일한 분포에서 나온다는 검정 통계량의 분포를 알아냅니다 (행운하게도 사람들은 이미 가장 일반적인 거리에서이 작업을 수행했습니다!).
  • αα%

ks.test(a,b)

- 값이 선택한 임계 값보다 작은 경우, 우리는 샘플이 동일한 분포에서 도출되는 것을 귀무 가설을 기각.

2dgofcvm.test() 가장 큰 거리를 선택하는 것이 아니라 두 ECDF 것입니다.

편집하다:

크기가 표본이 있다고 가정합니다.미디엄가설 검정을 적용하려는 합니다.

이것을 샘플링 유형 절차로 바꾸려면 다음을 수행하십시오.

  1. 미디엄미디엄
  2. 샘플의 거리 측정치를 계산하십시오. KS 테스트의 경우 최대 값입니다. 경험적 CDF의 차이.
  3. 결과를 저장하고 1 단계로 돌아가십시오.

결국 귀무 가설 하에서 검정 통계량의 분포로부터 많은 표본을 생성 할 것입니다. 귀무 가설은 원하는 유의 수준에서 가설 검정을 수행하는 데 사용할 수 있습니다. KS 검정 통계량의 경우이 분포를 Kolmogorov 분포라고합니다.

KS 검정의 경우, Quantile은 이론적으로 매우 간단하게 특성화되기 때문에 계산 노력이 낭비되지만 절차는 일반적으로 모든 가설 검정에 적용 할 수 있습니다.


감사합니다! Kolmogorov-Smirnov 검정은 이러한 표본이 동일한 모집단에서 나온 귀무 가설을 실제로 기각합니다. 그리고 직관적으로 ECDF를 비교하는 것이 합리적입니다. 왜냐하면 히스토그램으로 시각적으로하고있는 것이기 때문입니다. 질문 : R과 같은 도구없이이 테스트를 처음부터 구현해야한다고 가정 해보십시오. 충분한 간단한 방법이 있습니까? (아마도 부트 스트랩을 기반으로합니까?) 배경은 컴퓨터 프로그래밍이므로 시뮬레이션 기반 방법을 실제로 이해하기가 훨씬 쉽기 때문에 묻습니다.
Luke Gorrie

무작위 또는 순열을 조사해야합니다. 나는 비정규 테스트에 이것을 선호합니다. 또한 통계보다는 시뮬레이션의 표준에 부합합니다.
RTbecard

2
@JamesAdamCampbell 다른 답변으로 조금 확장 할 수 있습니까?
Will

1

1
나는 그것에 아무런 문제가 보이지 않습니다. 이 물건 중 일부를 시도하면 결과를보고 싶습니다. CI 접근 방식과 직선 KS 테스트가 항상 동일한 답을 제공하는지 확인하는 것이 좋습니다. 나는 :) 그들이 의심
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.