2016-11-20 1 views
0

나는 30 개 샘플의 벡터를 가지고 있습니다. 정규 분포 인 모집단의 샘플이라는 가설을 테스트하고 싶습니다.R chisq.test에서 사용하기 위해 정상적으로 분포 된 확률 벡터를 생성하는 방법

> N.concentration 
    [1] 0.164 0.045 0.069 0.100 0.050 0.080 0.043 0.036 0.057 0.154 0.133 0.193 
    [13] 0.129 0.121 0.081 0.178 0.041 0.040 0.116 0.078 0.104 0.095 0.116 0.038 
    [25] 0.141 0.100 0.104 0.078 0.121 0.104 

가 나는 정규 분포 N.freq의 적합성을 확인 chisq.test 사용하고 hist

> N.hist <- hist(N.concentration, breaks=10) 
> N.freq <- N.hist$count 
    [1] 3 5 4 4 5 4 2 2 1 

는하지만, 함수는 인수 P를 필요로하여 주파수 벡터가 벡터를 만들어 chxq.test 문서에 정의 된 동일한 길이 x의 확률. 나는 그것에 벡터를 만들려고 노력하고 있지만, 솔직히, 나는 무엇을 생성해야하는지 정확히 모른다. 나는 rescale.p=TRUE 사용에 대한 생각

> d <- length(N.freq$count)%/%2 
> p <- dnorm(c(-d:d)) 
> p 
    [1] 0.0001338302 0.0044318484 0.0539909665 0.2419707245 0.3989422804 
    [6] 0.2419707245 0.0539909665 0.0044318484 0.0001338302 
> chisq.test(N.freq, p = p) 
    Error in chisq.test(p1$count, p = p) : 
    probabilities must sum to 1. 

을 시도하고 있지만이 유효한 테스트를 생성합니다 있는지 확실하지 않습니다.


편집 : 나는 rescale.p를 사용하는 경우 우리가 널에서 정규 분포의 평균과 표준 오류를 알고 있어야 정상을 테스트하기 위해, 말했듯이, 나는 경고 메시지

> chisq.test(N.freq, p=p, rescale.p=TRUE) 

Chi-squared test for given probabilities 

data: N.freq 
X-squared = 2697.7, df = 8, p-value < 2.2e-16 

Warning message: 
In chisq.test(N.freq, p = p, rescale.p = TRUE) : 
Chi-squared approximation may be incorrect 
+0

사용하면 경고 메시지가 나타납니다. – rvbarreto

+0

견적을 제출해야합니다. 데이터는 자연에서 수집되었지만 실제 인구의 평균 또는 분산에 대한 추정치는 없습니다. 다른 데이터와의 독립성을 검증하기 위해 t- 테스트를 실행할 수 있도록 정규 분포로 간주 할 수 있는지 확인하고 싶습니다. – rvbarreto

답변

3

있어 가설. 주어진 값이 없으므로 30 개의 데이터에서 값을 추정해야합니다.

x <- c(0.164, 0.045, 0.069, 0.1, 0.05, 0.08, 0.043, 0.036, 0.057, 
0.154, 0.133, 0.193, 0.129, 0.121, 0.081, 0.178, 0.041, 0.04, 
0.116, 0.078, 0.104, 0.095, 0.116, 0.038, 0.141, 0.1, 0.104, 
0.078, 0.121, 0.104) 

mu <- mean(x) 
sig <- sd(x) 

지금, 당신은 무엇을했는지, 우리가 빈에 데이터가 필요합니다

h <- hist(x, breaks = 10) 
#List of 6 
# $ breaks : num [1:10] 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 
# $ counts : int [1:9] 3 5 4 4 5 4 2 2 1 
# $ density : num [1:9] 5 8.33 6.67 6.67 8.33 ... 
# $ mids : num [1:9] 0.03 0.05 0.07 0.09 0.11 0.13 0.15 0.17 0.19 
# $ xname : chr "x" 
# $ equidist: logi TRUE 
# - attr(*, "class")= chr "histogram" 

는 귀무 가설에서 진정한 가능성을 얻으려면을, 우리는 나누기 사이, 즉, 각각의 빈 셀에 대한 확률 필요 .

p <- diff(pnorm(h$breaks, mu, sig)) 
#[1] 0.05675523 0.10254734 0.15053351 0.17953337 0.17396679 0.13696059 0.08760419 
#[8] 0.04552387 0.01921839 

나는 30 개의 데이터만으로 카이 제곱 테스트를 신뢰하지 않는 경향이 있습니다. 그러나 여기서 우리가 chisq.test을 사용하는 방법입니다 :

chisq.test(h$counts, p = p, rescale.p = TRUE) 
# 
# Chi-squared test for given probabilities 
# 
#data: h$counts 
#X-squared = 3.1476, df = 8, p-value = 0.9248 
# 
#Warning message: 
#In chisq.test(h$counts, p, rescale.p = TRUE) : 
# Chi-squared approximation may be incorrect 

은 종종 당신은 경고 메시지를 귀찮게 할 필요가 없습니다. 당신이 그것을 제거하려는 경우, simulate.p.value = TRUE을 설정

chisq.test(h$counts, p = p, rescale.p = TRUE, simulate.p.value = TRUE) 
# 
# Chi-squared test for given probabilities with simulated p-value (based 
# on 2000 replicates) 
# 
#data: h$counts 
#X-squared = 3.1476, df = NA, p-value = 0.942 
+0

이것은 아주 좋은 !!! 고마워요! 일단 카이 제곱 테스트를 신뢰하지 않는다고 말하면,이 상황에 대한 테스트를 제안 해 주시겠습니까? – rvbarreto

2

데이터의 지정된 세트의 정규성에서 출발 테스트를 위해 설계 많은 통계 시험이있다 (예를 들면, nortest package 참조). 그러나, 당신은 알고 있어야 그 many statisticians feel that normality testing is "essentially useless" : 특히 (링크 CrossValidated 질문에서 답변에서) :

과학자들은 종종 정상 테스트 대답을 기대하는 질문 : 데이터 "에 가우스 이상에서 충분히 벗어난 수행 가우스 분포를 가정하는 테스트의 사용을 금지합니까? 과학자들은 정규 검사가 재래식 (ANOVA 등) 검사를 포기하고 대신 변형 된 데이터를 분석하거나 순위 기반 비모수적 검사 또는 재 샘플링 또는 부트 스트랩 접근법을 사용하기로 결정하는 심판이되기를 원합니다. 이 목적을 위해 정규성 테스트는별로 유용하지 않습니다.우리가 정말이 경우 원하는 그 높은 전력 위의 논의에서하지만 참고 필요하지 않습니다 -

그러나, 앞서가는 기본 R에서 Shapiro-Wilk test를 사용 (위키 백과 페이지에 따르면, 샤피로-Wilk 좋은 능력을 가지고 ...)

d <- c(0.164,0.045,0.069,0.100,0.050,0.080,0.043,0.036,0.057,0.154, 
     0.133,0.193,0.129,0.121,0.081,0.178,0.041,0.040,0.116,0.078, 
     0.104,0.095,0.116,0.038,0.141,0.100,0.104,0.078,0.121,0.104) 
shapiro.test(d) 
## Shapiro-Wilk normality test 
## 
## data: d 
## W = 0.9547, p-value = 0.2255 

그래픽 방식 :

par(las=1,bty="l") 
qqnorm(d) 
qqline(d) 

enter image description here

포인트가 라인을 상당히 잘 따르고 가장 큰 편차 (데이터 세트에서 세 개의 가장 작은 포인트)가 실제로 예상보다 큽니다. 즉, 데이터 세트가 하단에서 약간 얇은 데 이는 테스트를 기반으로합니다. 정규성을 가정 할 때 일반적으로 약간 보수적입니다.

관련 문제