다음 구조의 데이터 세트가 있습니다.
a word | number of occurrence of a word in a document | a document id
R에서 정규 분포 검정을 어떻게 수행 할 수 있습니까? 아마 쉬운 질문이지만 저는 R 초보자입니다.
다음 구조의 데이터 세트가 있습니다.
a word | number of occurrence of a word in a document | a document id
R에서 정규 분포 검정을 어떻게 수행 할 수 있습니까? 아마 쉬운 질문이지만 저는 R 초보자입니다.
답변:
귀하의 질문을 올바르게 이해하면 문서 집합에서 단어 발생이 정규 분포를 따르는 지 테스트하려면 shapiro-Wilk 테스트와 일부 qqplots를 사용할 수 있습니다. 예를 들어
## Generate two data sets
## First Normal, second from a t-distribution
words1 = rnorm(100); words2 = rt(100, df=3)
## Have a look at the densities
plot(density(words1));plot(density(words2))
## Perform the test
shapiro.test(words1); shapiro.test(words2)
## Plot using a qqplot
qqnorm(words1);qqline(words1, col = 2)
qqnorm(words2);qqline(words2, col = 2)
qqplot 명령은 다음을 제공합니다.
두꺼운 꼬리로 인해 두 번째 데이터 세트가 분명히 보통이 아님을 알 수 있습니다 ( 추가 정보 ).
Shapiro-Walk 정규성 검정에서 p- 값은 첫 번째 데이터 세트의 경우 (> .9) 두 번째 데이터 세트 (<.01)의 경우 매우 작습니다. 이렇게하면 두 번째 귀무 가설을 기각 할 수 있습니다.
qqline
1 개의 기울기와 mu 절편을 가져야한다 .
데이터 세트가 호출 words
되고 counts
열 이 있다고 가정하면 히스토그램을 플로팅하여 분포를 시각화 할 수 있습니다.
hist(words$counts, 100, col="black")
여기서 100은 구간 수입니다.
다음을 사용하여 일반 QQ 플롯을 수행 할 수도 있습니다.
qqnorm(words$counts)
마지막으로 Shapiro-Wilk 테스트를 사용하여 정규화 할 수도 있습니다.
shapiro.test(word$counts)
그럼에도 불구하고이 토론을보십시오 : 정규성 테스트 : '필수적으로 쓸모 없는가?'
어떤 테스트는 데이터가 있음을 표시하지 않습니다 이 정규 분포를 - 데이터는 널을 거부 할 것이라고 정상에 충분히 일치하지 않는 경우에만 보여줄 수있을 것입니다.
그러나 카운트는 어떤 경우에도 정상이 아니며 양의 정수입니다. 정규 분포의 관측치가 정수가 아닌 값을 취할 확률은 얼마입니까? (... 그것은 확률 1의 사건이다).
이 경우 왜 정규성을 테스트 하시겠습니까? 사실이 아닙니다.
[경우에 따라 데이터가 실제로 정상이 아니라는 것을 반드시 알 수있는 것은 아닙니다. 실제 데이터는 정규 분포에서 실제로 도출되지 않습니다.
실제로 테스트를 수행해야하는 경우 Shapiro-Wilk 테스트 ( ?shapiro.test
)는 일반적으로 널리 사용되는 일반적인 정규성 테스트입니다.
정규성을 보는보다 공식적인 방법은 첨도와 왜도가 0과 크게 다른지 테스트하는 것입니다.
이렇게하려면 다음을 얻어야합니다.
kurtosis.test <- function (x) {
m4 <- sum((x-mean(x))^4)/length(x)
s4 <- var(x)^2
kurt <- (m4/s4) - 3
sek <- sqrt(24/length(x))
totest <- kurt/sek
pvalue <- pt(totest,(length(x)-1))
pvalue
}
첨도의 경우 :
skew.test <- function (x) {
m3 <- sum((x-mean(x))^3)/length(x)
s3 <- sqrt(var(x))^3
skew <- m3/s3
ses <- sqrt(6/length(x))
totest <- skew/ses
pt(totest,(length(x)-1))
pval <- pt(totest,(length(x)-1))
pval
}
왜도
이 두 테스트 모두 단측이므로 p- 값에 2를 곱하여 양측이되어야합니다. p- 값이 1보다 커지면 kurtosis.test 대신 1-kurtosis.test ()를 사용해야합니다.
다른 궁금한 점이 있으면 j.bredman@gmail.com으로 이메일을 보내 주시기 바랍니다.
kurtosis()
및 skewness()
기능 과 관련하여 위의 두 기능의 차이점은 무엇입니까 ? 샘플을 사용한 결과 가 다릅니다. rnorm()
nortest
R 패키지 를 사용하면 다음과 같은 테스트를 수행 할 수 있습니다.
Anderson-Darling 정규성 테스트 수행
ad.test(data1)
정규성에 대한 Cramér-von Mises 테스트 수행
cvm.test(data1)
정규성을위한 Pearson 카이-제곱 검정 수행
pearson.test(data1)
정규성에 대한 Shapiro-Francia 테스트 수행
sf.test(data1)
normtest
패키지 를 사용하여 다른 많은 테스트를 수행 할 수 있습니다 . https://cran.r-project.org/web/packages/normtest/normtest.pdf 에서 설명을
참조하십시오
zipfR
패키지를 확인하십시오 .