Kruskal-Wallis 내장 R 기능과 수동 계산 사이에 약간의 불일치


9

나는 다음과 같이 혼란스러워서 다른 곳에서 답을 찾을 수 없었습니다.

나는 통계를하는 동안 R을 배우려고 노력하고 있으며 연습으로 내장 R 함수의 결과를 R에서와 같이 '손으로'수행하여 다시 확인하려고합니다. , Kruskal-Wallis 테스트의 경우 계속 다른 결과가 나오며 이유를 알 수 없습니다.

예를 들어, 연습에서 전달 된 다음 데이터를보고 있습니다

activity <- c(2, 4, 3, 2, 3, 3, 4, 0, 4, 3, 4, 0, 0, 1, 3, 1, 2, 0, 3, 1, 0, 3, 4, 0, 1, 2, 2, 2, 3, 2) 
group <- c(rep("A", 11), rep("B", 10), rep("C", 9))
group <- factor(group)
data.raw <- data.frame(activity, group)

그리고 그룹별로 활동을 분석하고 싶습니다. 먼저 내장 R 함수를 사용하여 Kruskal-Wallis 테스트를 실행합니다

kruskal.test(activity ~ group, data = data.raw)

반환합니다 .H=8.9056

다시 확인하기 위해 R에서 다음과 같은 코드를 사용하여 동일한 '손으로'작업을 시도합니다.

rank <- rank(activity)
data.rank <- data.frame(rank, group)
rank.sum <- aggregate(rank ~ group, data = data.rank, sum)

x <- rank.sum[1,2]^2 / 11 + rank.sum[2,2]^2 / 10 + rank.sum[3,2]^2 / 9
H <- (12 / (length(activity) * (length(activity) + 1))) * x - 3 * (length(activity) + 1)
H

다음 공식을 반영합니다.

H=12N(N+1)i=1g(Ri2ni)3(N+1)

여기서 은 총 관측치 수, 는 그룹 수, 는 번째 그룹 의 관측치 수 , 는 번째 그룹 의 순위의 합입니다 .NgniiRii

그리고 이제 얻 습니다. 혼란에 더해 문제의 운동에 대한 해답이기도합니다. 몇 가지 다른 데이터 세트에 대해이 작업을 시도 했으며 내장 기능을 사용하여 대해 약간 높은 값을 얻는 경향이 있습니다.H=8.499H

내가 잘못하고 있거나 이해하지 못하는 것을 알아 내려고 노력했지만 아무 소용이 없습니다. 내장 kruskal.test함수가 왜 철자를 써서 얻는 것과 다른 값을 반환 하는지 이해 하는 사람이 있습니까?

답변:


12

kruskal.test이 위키 백과 기사 (포인트 4)에 설명 대로 타이에 대한 수정 사항을 적용합니다 .

H를 로 나누어 이전 점에서 설명한 바로 가기 수식을 사용하는 경우 타이에 대한 수정 , ...1i=1G(ti3ti)N3N

코드에서 계속 :

TIES <- table(activity)
H / (1 - sum(TIES^3 - TIES)/(length(activity)^3 - length(activity)))
#[1] 8.9056

를 사용하여 볼 수있는 코드를주의 깊게 연구하여 R 함수의 기능을 확인할 수 있습니다 getAnywhere(kruskal.test.default).


4
@MichaelChernick 아니오, 그렇지 않습니다. 요점은 OP가 동점이없는 경우에만 사용해야하는 테스트의 단순화를 배운다는 것입니다.
Roland

4
@MichaelChernick 스택 오버플로에 적합하지 않다는 말은 아닙니다. 그러나 나는 그것이 CV에서도 똑같이 잘 맞다고 주장한다. OP가 코드를 공유했을뿐만 아니라 사용중인 수식도 공유하면 도움이되었을 것입니다.
Roland

3
@Michael이 글타래의 상태는 쉬운 호출입니다 : 통계 테스트를 이해하려고 노력하기 때문에 우리의 범위 내에 있습니다.
whuber

2
코드에 반영된 수식을 포함하도록 편집되었습니다. 처음에 그렇게 생각했을 것입니다. 사과.
MSR

3
관계에 미드 랭크를 사용하고 Kruskal-Wallis를 얻기 위한 테스트를 수행하는 R Hmisc패키지 spearman2기능 도 참조하십시오 F. 나는 이것이 일부 방법보다 더 정확하다고 생각합니다.
Frank Harrell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.