R의 경고-카이 제곱 근사가 잘못되었을 수 있습니다.


40

소방관 입학 시험 결과를 보여주는 데이터가 있습니다. 시험 결과와 민족이 서로 독립적이지 않다는 가설을 테스트하고 있습니다. 이를 테스트하기 위해 R에서 Pearson 카이 제곱 테스트를 실행했습니다. 결과에 예상 한 결과가 표시되지만 ""라는 경고가 표시되었습니다 In chisq.test(a) : Chi-squared approximation may be incorrect.

> a
       white black asian hispanic
pass       5     2     2        0
noShow     0     1     0        0
fail       0     2     3        4
> chisq.test(a)

    Pearson's Chi-squared test

data:  a
X-squared = 12.6667, df = 6, p-value = 0.04865

Warning message:
In chisq.test(a) : Chi-squared approximation may be incorrect

왜 그것이 경고를했는지 알고 있습니까? 잘못된 방법을 사용하고 있기 때문입니까?


2
너무 적은 측정으로 결과를 신뢰하지 마십시오. 각 열에 수백 명의 사람들이 있으면 결과에 대한 확신이있을 수 있습니다. 그러나 결과는 인종 자체보다 이웃이나 부 때문일 수 있습니다.
Rodrigo

답변:


41

많은 예상 값이 매우 작으므로 p의 근사값이 올바르지 않을 수 있으므로 경고를 표시했습니다.

에서 R당신이 사용할 수있는 chisq.test(a, simulate.p.value = TRUE)시뮬레이션 P 값을 사용 할 수 있습니다.

그러나 이러한 작은 셀 크기에서는 모든 추정치가 좋지 않습니다. 카이 제곱 또는 로지스틱 회귀 분석을 사용하여 통과 대 실패 ( "표시 안 함"삭제)를 테스트하는 것이 좋습니다. 실제로 합격 / 불합격 등급이 종속 변수라는 것이 분명하기 때문에 로지스틱 회귀가 더 나을 수 있습니다.


simulate.p.value = TRUE추가 할 때 실제로 무엇 을 chisq.test합니까?
Al14

1
그것은 시뮬레이션을 사용하여 p 값을 찾습니다
Peter Flom-Reinstate Monica

1
한계 값에 대해 조건부simulate.p.value = TRUE 시뮬레이션 을 사용 하므로 실제로 Fisher 정확한 테스트 버전입니다.
kjetil b halvorsen

23

문제는 검정 통계량 분포에 대한 카이-제곱 근사치가 대략 정규 분포되는 계수에 의존한다는 것입니다. 많은 예상 카운트가 매우 적 으면 근사치가 떨어질 수 있습니다.

우발 사태 테이블에서 독립성에 대한 카이 제곱 통계량 의 실제 분포는 연속적이 아닌 불 연속적입니다.

noshow 카테고리는이 문제에 크게 기여할 것입니다. 고려해야 할 한 가지는 noshow를 병합하고 실패하는 것입니다. 여전히 경고가 표시되지만 결과에 거의 영향을 미치지 않으며 분포가 상당히 합리적이어야합니다 (경고가 제공되기 전에 적용되는 규칙이 너무 엄격함).

그러나 어쨌든 피셔의 정확한 테스트를 실행할 때와 같이 마진을 조절하려는 경우 R에서 문제를 매우 쉽게 처리 할 수 ​​있습니다 . simulate.p.value인수를 TRUE;로 설정하십시오 . 그런 다음 검정 통계량 분포에 대한 카이-제곱 근사에 의존하지 않습니다.


왜 ".. 검정 통계량 분포에 대한 카이-제곱 근사치가 대략 정규 분포되는 계수에 의존하는지"왜 설명해 주시겠습니까? 예를 들어 2x2 비상 테이블이있는 경우 이것이 어떻게 될 수 있는지 이해하지 못합니다. 카운트를 대략적으로 정규 분포하는 방법은 무엇입니까? 흰색, 검은 색, 히스패닉 및 아시아 숫자를 어떻게 정규 분포로 분배 할 수 있습니까? 당신은 약간 같은 의미입니까? 그리고 이것이이 질문과 어떤 관련이 있습니까? : stats.stackexchange.com/questions/141407/…
Erosennin

카운트 랜덤 변수 의 다변량 분포는 대략 정상이어야합니다 (변성 될지라도). 관측 카운트 세트는 이 다변량 법선에서 단일 벡터 관측치 일 뿐이 므로 한 관측치에서 분포를 판단 할 수 없습니다. 내가 말하고있는 평가를하려면 가정에 의존해야합니다. 개별 셀에 대해이를 수행하는 것이 합리적입니다 (예 : 주어진 셀에 대한 한계 분포, 널 아래). 여러 셀에 걸쳐 카운트를 결합하는 것처럼 보이지만 모두 서로 다른 분포에서
나왔기

먼저 시간을 내 주셔서 감사합니다! 그래서 우리는 많은 관측을 보았을 때 우발성 테이블이 "하향"카운트는 다변량 정상이어야한다고 말하고 있습니까? 이것이 각각의 개별 셀의 개수도 정상이어야한다는 것을 의미하지는 않으며 우발 사태 표를 "옆으로"계산합니다 (이것이 당신이 'across'로 의미하는 것으로 가정합니다)? F.ex 기대 값이 5 인 셀은 일반적으로 5 주위에 분포해야합니다. 따라서 셀에 걸쳐 값 40이 예상되는 경우이 셀은 일반적으로 약 40과 약 5와 40의 다변량 정규 분포로 분포되어야합니다.
Erosennin

1
r×crc(r1)(c1)
Glen_b

이것은 무겁고 매우 흥미 롭습니다. 시간이 있다면 stats.stackexchange.com/questions/142429/…에서 첫 번째 질문을 다시 게시 했습니다 .
Erosennin

12

소수의 경우 Fisher의 정확한 테스트를 사용할 수 있습니다.

> fisher.test(a)

        Fisher's Exact Test for Count Data

data:  a 
p-value = 0.02618
alternative hypothesis: two.sided 

3

Pearson 카이 제곱 테스트 기사 "가정"섹션을 참조하십시오.

간단히 말해서, 테이블의 셀 중 하나의 수가 5보다 작 으면 가정 중 하나가 깨집니다. 나는 그것이 오류 메시지가 말하는 것이라고 생각합니다. 링크 된 기사에서 적용 할 수있는 수정 사항에 대해서도 찾을 수 있습니다.


6
χ2

0

주된 질문은 표본 크기에 대해 이야기하지만 두 그룹 이상이 비교되는 것을 알 수 있습니다. 검정의 p- 값이 0.05 이하이면 결과를 해석하기가 어렵습니다. 따라서 이러한 상황에서 사용하는 간단한 스크립트를 공유하고 있습니다.

# Load the required packages:
library(MASS) # for chisq
library(descr) # for crosstable

CrossTable(a$exam_result, a$ethnicity
       fisher = T, chisq = T, expected = T,
       prop.c = F, prop.t = F, prop.chisq = F, 
       sresid = T, format = 'SPSS')

이 코드는 Pearson 's Chi-square와 Fisher 's Chi square를 모두 생성합니다. 각 테이블 항목의 비율뿐만 아니라 개수도 생성합니다. 표준화 잔차 또는 z- 값 점수를 기반으로

sresid

범위를 벗어나면 | 1.96 | 즉, -1.96보다 작거나 1.96보다 큰 경우, 유의미한 p <0.05입니다. 그런 다음 부호는 긍정적으로 관련되어 있는지 부정적인지를 표시합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.