리샘플링 / 시뮬레이션 방법 : 몬테 카를로, 부트 스트랩, 잭 나이 핑, 교차 검증, 무작위 화 테스트 및 순열 테스트


73

R을 사용하여 내 컨텍스트에서 다른 리샘플링 방법 (Monte Carlo 시뮬레이션, 파라 메트릭 부트 스트랩, 비 파라 메트릭 부트 스트랩, 잭 나이 핑, 교차 유효성 검사, 무작위 테스트 및 순열 테스트)과 그 구현의 차이점을 이해하려고합니다 .

다음과 같은 상황이 있다고 가정합니다. Y 변수 ( Yvar) 및 X 변수 ( Xvar) 를 사용하여 분산 분석을 수행하려고합니다 . Xvar범주 형입니다. 다음 사항에 관심이 있습니다.

(1) p- 값의 중요성 – 잘못된 발견 비율

(2) Xvar레벨의 효과 크기

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
Xvar <- c(rep("A", 5),  rep("B", 5),    rep("C", 5))
mydf <- data.frame (Yvar, Xvar)

이러한 리샘플링 방법이 어떻게 작동하는지 명시적인 실제 예제로 샘플링 차이점을 설명해 줄 수 있습니까?

편집 : 여기 내 시도가 있습니다 :

부트 스트랩 10 부트 스트랩 샘플, 교체 된 샘플 샘플 수, 샘플 반복 가능

boot.samples <- list()
for(i in 1:10) {
   t.xvar <- Xvar[ sample(length(Xvar), length(Xvar), replace=TRUE) ]
   t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=TRUE) ]
   b.df <- data.frame (t.xvar, t.yvar) 
   boot.samples[[i]] <- b.df 
}
str(boot.samples)
 boot.samples[1]

순열 : 10 개의 순열 샘플, 교체없이 샘플 수

 permt.samples <- list()
    for(i in 1:10) {
       t.xvar <- Xvar[ sample(length(Xvar), length(Xvar), replace=FALSE) ]
       t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=FALSE) ]
       b.df <- data.frame (t.xvar, t.yvar) 
       permt.samples[[i]] <- b.df 
    }
    str(permt.samples)
    permt.samples[1]

몬테 카로 시뮬레이션

"리샘플링"이라는 용어는 반복 된 임의 또는 의사 난수 샘플링 시뮬레이션을 나타내는 데 종종 사용되지만 "리샘플링"이 알려진 이론적 분포에서 수행되는 경우 올바른 용어는 "몬테 카를로"시뮬레이션입니다.

위의 모든 용어와 위의 수정 사항이 올바른지 확실하지 않습니다. 나는 jacknife에 관한 정보를 찾았 지만 내 상황에 따라 길 들이지 못했습니다.


3
Jackknife는 부트 스트랩의 간단한 선행 작업입니다. en.wikipedia.org/wiki/Jackknife_(statistics)
EngrStudent

4
보다 정확하게 : jackknife는 일대일 리샘플링입니다 (그러나 교차 검증에는 사용되지 않음)
cbeleites

답변:


121

샘플의 리샘플링 또는 셔플 링 에 따라 다른 리샘플링 방법 또는 느슨하게 " 시뮬레이션 "방법을 찾을 수 있습니다 . 적절한 용어와 관련하여 의견에 차이가있을 수 있지만, 다음의 논의는 적절한 문헌에서 이용 가능한 것을 일반화하고 단순화하려고합니다.

리샘플링 방법은 (1) 데이터 서브 세트 (예 : Jackknifing)를 사용하거나 데이터 포인트 세트 (예 : 부트 스트랩)에서 대체하여 무작위로 그리기를 통해 샘플 통계의 정밀도 / 정확도 를 추정 하는 데 사용됩니다. 테스트 (순열 테스트, 정확한 테스트, 무작위 테스트 또는 재 랜덤 화 테스트라고도 함) (3) 무작위 하위 집합 을 사용하여 모델 유효성 검사 (부트 스트랩, 교차 유효성 검사) (wikipedia : 리샘플링 방법 참조 )

병마개

" 부트 스트래핑 은 원래 샘플에서 교체 하여 샘플링하여 추정기의 샘플링 분포를 추정하기위한 통계적 방법입니다 ." 이 방법은 정확도 측정 값 ( 바이어스 , 분산 , 신뢰 구간 , 예측 오류 또는 기타 측정 값으로 정의)을 표본 추정값에 할당합니다 .

부트 스트랩의 기본 아이디어는 샘플 데이터 를 리샘플링하고 (재 샘플 → 샘플) 추론을 수행하여 샘플 데이터 에서 모집단에 대한 유추 ( sample → 모집단 )를 모델링 할 수 있다는 것입니다. 모집단을 알 수 없으므로 모집단 값에 대한 표본 통계의 실제 오류를 알 수 없습니다. 부트 스트랩 재 샘플에서 '인구'는 실제로 샘플이며 이것이 알려져 있습니다. 따라서 재 샘플링 데이터의 추론 품질 → '실제'샘플을 측정 할 수 있습니다. " wikipedia

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)

#To generate a single bootstrap sample
sample(Yvar, replace = TRUE) 

 #generate 1000 bootstrap samples
boot <-list()
for (i in 1:1000) 
   boot[[i]] <- sample(Yvar,replace=TRUE)

일 변량 문제에서는 일반적으로 개별 관측 값을 대체 ( "케이스 리샘플링")로 다시 샘플링하는 것이 허용됩니다. 여기서는 교체와 함께 데이터를 리샘플링하고 리 샘플의 크기는 원래 데이터 세트의 크기와 같아야합니다.

회귀 문제에서 사례 리샘플링 은 개별 사례를 리샘플링하는 간단한 체계를 나타냅니다. 종종 회귀 문제에서 데이터 세트의 행, 설명 변수가 종종 고정되거나 적어도 반응 변수보다 더 많은 제어로 관찰됩니다. 또한 설명 변수의 범위는 사용 가능한 정보를 정의합니다. 따라서 사례를 다시 샘플링한다는 것은 각 부트 스트랩 샘플이 일부 정보를 잃는다는 것을 의미합니다 ( Wikipedia 참조 ). 따라서 데이터 행만 샘플링하는 것이 논리적 Yvar입니다.

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
Xvar <- c(rep("A", 5),  rep("B", 5),    rep("C", 5))
mydf <- data.frame (Yvar, Xvar)    

boot.samples <- list()
for(i in 1:10) {
   b.samples.cases <- sample(length(Xvar), length(Xvar), replace=TRUE) 
   b.mydf <- mydf[b.samples.cases,] 
   boot.samples[[i]] <- b.mydf
}
str(boot.samples)
 boot.samples[1]

교체를 통해 샘플링 할 때 일부 사례가 반복되는 것을 볼 수 있습니다.

" 파라 메트릭 부트 스트랩 -파라 메트릭 모델은 종종 최대 가능성으로 데이터에 피팅되며이 적합 모델에서 임의의 숫자 샘플이 추출됩니다 . 일반적으로 추출 된 샘플은 원래 데이터와 동일한 샘플 크기를가집니다. 그런 다음 수량 또는 추정치 이 샘플링 과정은 다른 부트 스트랩 방법과 마찬가지로 여러 번 반복됩니다. 부트 스트랩 방법의 샘플링 단계에서 파라 메트릭 모델을 사용하면 기본 통계 이론을 적용하여 얻은 절차와 다른 절차가 생성됩니다. 같은 모델에 대한 추론을 할 수 있습니다. "( Wikipedia 참조 ) 다음은 평균 및 표준 편차 매개 변수가있는 정규 분포 가정의 파라 메트릭 부트 스트랩입니다.

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)

# parameters for Yvar 
mean.y <- mean(Yvar)
sd.y <- sd(Yvar)

#To generate a single bootstrap sample with assumed normal distribution (mean, sd)
rnorm(length(Yvar), mean.y, sd.y)

 #generate 1000 bootstrap samples
boot <-list()
for (i in 1:1000) 
   boot[[i]] <- rnorm(length(Yvar), mean.y, sd.y)

부트 스트랩의 다른 변형이 있습니다. 위키 백과 페이지 또는 리샘플링에 대한 좋은 정적 책을 참조하십시오.

잭 니프

"모수의 잭나이프 추정기는 데이터 세트에서 각 관측 값 을 체계적으로 제거 하고 추정값을 계산 한 다음 이러한 계산의 평균을 찾아서 구합니다. 크기 N의 표본이 주어지면 각 N − 1추정값 의 추정값을 집계하여 잭나이프 추정값을 찾습니다. 샘플에서. " 참조 : wikipedia 다음은 jackknife하는 방법을 보여줍니다 Yvar.

jackdf <- list()
jack <- numeric(length(Yvar)-1)

for (i in 1:length (Yvar)){

for (j in 1:length(Yvar)){
     if(j < i){ 
            jack[j] <- Yvar[j]
}  else if(j > i) { 
             jack[j-1] <- Yvar[j]
}
}
jackdf[[i]] <- jack
}
jackdf

"일반적인 부트 스트랩과 잭나이프 는 모수 적 가정이 아닌 서브 샘플 간의 통계적 변동성으로부터 통계의 변동성을 추정 합니다.보다 일반적인 잭나이프의 경우, 삭제 -m 관측 잭나이프의 경우, 부트 스트랩은 무작위로 볼 수 있습니다 둘 다 비슷한 수치 결과를 산출하기 때문에 각각의 결과가 서로 비슷한 것으로 보인다” Bootstrap vs Jacknife 에서이 질문 을 참조하십시오 .

무작위 화 테스트

"모수 테스트에서는 하나 이상의 모집단에서 무작위로 표본을 추출합니다. 이러한 모집단에 대해 일반적으로 동일한 분산으로 분포 된 것으로 가정합니다. 종종 모수 (m1) 형식의 모수로 구성된 귀무 가설을 설정합니다. -m2 = 0. 표본 통계량을 해당 모집단 모수의 추정치로 사용하고 검정 통계량 (예 : 검정시)을 계산합니다 (예 : 스튜던트 t-분산이 알려지지 않았지만 평균을 고려한 평균 차이의 검정) 관심 가설은 다음과 같다. H0: m1 = m2대체 가설 중 하나는 다음과 같다.HA: m1 < m2. 모집단 1과 2에서 추출 된 두 표본이 주어진 경우, 이들은 정규 분산이있는 모집단이라고 가정하고 각 모집단에서 표본을 독립적으로 무작위로 추출한 경우 분포가 알려진 통계량을 테스트하여 정교화 할 수 있습니다 H0.

이러한 분포 가정을 피하는 한 가지 방법은 현재 비모수, 순위-순위, 순위-및 분포가없는 통계라고하는 접근법이었습니다. 이 분포가없는 통계는 일반적으로 모집단이 정규 분포를 가정한다고 가정 한 유사 테스트보다 덜 "효율적"이라는 비판을받습니다.

또 다른 대안은 랜덤 화 접근법입니다 . "관측 값이 어떤 표본인지에 대한 지식과 무관하게 순위를 관측 값에 무작위로 할당하는 프로세스입니다. 무작위 화 테스트는 이러한 절차를 사용하지만 관절이 아닌 관측 값을 조작하여 수행합니다. 이러한 이유로 이론적으로 그러한 분포를 열거하는 것이 가능하지만 유사한 통계량 (한 표본의 관측치의 합)의 분포를 쉽게 표로 만들 수는 없습니다 "( 참조 )

무작위 화 테스트는 거의 모든 측면에서 파라 메트릭 테스트와 다릅니다. (1) 하나 이상의 모집단에서 무작위 표본을 추출 할 필요는 없습니다. 실제로는 일반적으로 무작위 표본을 추출하지 않았습니다. (2) 데이터가 나온 모집단에 대해서는 거의 생각하지 않으며, 정규성 또는 동성애에 대해서는 아무 것도 가정 할 필요가 없습니다. (3) 귀무 가설은 모수와 관련이 없지만 모호하게 표현됩니다. 예를 들어, 치료가 참가자의 수행 방식에 영향을 미치지 않는다는 가설 (4) 모집단과 관련이 없기 때문에 해당 모집단의 특성을 평가 (또는 테스트)하는 데는 관심이 없습니다 (5) 테스트 통계의 일종이지만 통계와 테이블 분포를 비교하지는 않습니다. 대신에 그룹 전체의 데이터를 반복적으로 무작위 추출 할 때 얻은 결과와 비교하고 각 무작위 화에 대한 해당 통계를 계산합니다. (6) 파라 메트릭 테스트보다 무작위 배정 테스트는 참가자를 치료에 무작위로 배정하는 것의 중요성을 강조합니다. "참조하십시오 .

매우 인기있는 무작위 화 테스트의 유형은 순열 테스트입니다. 표본 크기가 12와 5 인 경우 가능한 전체 순열은 C(12,5) = 792입니다. 우리의 표본 크기가 10과 15라면 320 만 개가 넘는 배열이 가능했을 것입니다. 이것은 컴퓨팅 과제입니다. 그렇다면 무엇입니까? 샘플 . 가능한 배열의 우주가 열거하기에 너무 큰 경우 왜이 우주의 배열을 독립적으로 그리고 무작위로 샘플링하지 않습니까? 이 일련의 표본에 대한 검정 통계량 분포를 표로 작성하고 그 평균과 분산을 계산하고 가설 검정과 관련된 오류율을 추정 할 수 있습니다.

퍼미션 테스트

Wikipedia 에 따르면 "순열 테스트 ( 랜덤 화 테스트 , 재 랜덤 화 테스트 또는 정확한 테스트 라고도 함 )는 가능한 모든 값을 계산하여 귀무 가설 하에서 테스트 통계의 분포를 얻는 통계적 유의성 테스트 유형입니다. 아래의 검정 통계량의 레이블의 재 배열 관찰 된 데이터 포인트에. 순열 테스트는 관계없이 분포가 알려져 여부, 어떤 테스트 통계를 위해 존재한다. 따라서 하나의 통계를 선택하는 것이 무료 인 가설과 대안 사이 최고를 판별한다 "손실을 최소화합니다."

순열과 부트 스트랩의 차이점은 부트 스트랩이 교체 된 샘플이고, 순열은 교체없는 샘플 입니다. 두 경우 모두, 관측의 시간 순서가 손실되고 따라서 휘발성 클러스터링 이 손실되므로 샘플이 휘발성 클러스터링이 없다는 귀무 가설 아래에있게됩니다.

순열은 항상 동일한 관측 값을 가지므로 부트 스트랩 샘플보다 원래 데이터와 더 유사합니다. 순열 테스트는 부트 스트랩 테스트보다 더 민감해야합니다. 순열은 변동성 클러스터링을 파괴하지만 다른 변동성을 추가하지는 않습니다 .

순열 대 부트 스트랩에 대한 질문 - "순열 테스트는 가설 검정에 가장 적합 하고 부트 스트랩은 신뢰 구간 추정에 가장 좋습니다 "를 참조하십시오.

따라서이 경우 순열을 수행 replace = FALSE하려면 위의 부트 스트랩 예제에서 변경 하면됩니다.

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
     #generate 1000 bootstrap samples
       permutes <-list()
    for (i in 1:1000) 
       permutes[[i]] <- sample(Yvar,replace=FALSE)

변수가 둘 이상인 경우 행을 선택하고 순서를 변경하면 데이터가 동일하게 유지되므로 차이가 없습니다. y 변수를 다시 섞습니다. 뭔가 그런 짓을 한거야,하지만 난 우리가 필요로하지 않는 생각하지 않습니다 무엇을 더블 재편 모두 xy variables(당신이했던 것처럼).

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
Xvar <- c(rep("A", 5),  rep("B", 5),    rep("C", 5))
mydf <- data.frame (Yvar, Xvar)

 permt.samples <- list()
    for(i in 1:10) {
       t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=FALSE) ]
       b.df <- data.frame (Xvar, t.yvar) 
       permt.samples[[i]] <- b.df 
    }
    str(permt.samples)
    permt.samples[1]

몬테 카를로 방법

"몬테 카를로 (Monte Carlo) 방법 (또는 몬테 카를로 (Monte Carlo) 실험)은 반복 된 랜덤 샘플링 을 사용하여 수치 결과를 얻는 광범위한 종류의 계산 알고리즘입니다 . 기술의 유사성에서 실제 도박 카지노에서 결과를 재생하고 기록하는 행위에 이르기까지 " Wikipedia 참조

"적용된 통계에서 Monte Carlo 방법은 일반적으로 두 가지 목적으로 사용됩니다.

(1) 실제 데이터 조건에서 작은 샘플에 대한 경쟁 통계를 비교합니다. 통계 조건의 제 1 종 오류 및 검정력 특성은 점근 조건 (즉, 무한 표본 크기 및 무한히 작은 처리 효과)에 대한 고전적인 이론적 분포 (예 : 정규 곡선, 코시 분포)에서 얻은 데이터에 대해 계산할 수 있지만 실제 데이터는 종종 그러한 배포판이 없습니다.

(2) 점근 분포의 임계 값보다 더 정확하면서 순열 테스트 (종종 계산이 불가능 함)와 같은 정확한 테스트보다 더 효율적인 가설 테스트의 구현을 제공합니다.

Monte Carlo 방법은 또한 근사 무작위 화와 순열 테스트 사이절충안 입니다. 대략 무작위 시험 (치환이 고려되고있는 잠재적으로 거대 정돈 수반) 모든 순열의 지정된 서브 세트에 기초한다. 몬테카를로 접근 방식은 지정된 수의 무작위 추출 순열을 기반으로합니다 ( 순환이 이미 선택된 순열을 추적 할 필요가없는 효율성을 위해 순열이 두 번 또는 더 자주 발생하는 경우 약간의 정밀도 손실 교환 ). "

MC 테스트와 순열 테스트를 통칭하여 무작위 테스트 라고도 합니다 . 차이는 MC에 우리가 오히려 모든 가능한 조합을 사용하여 순열 샘플을 샘플입니다 참조 .

교차 검증

교차 검증 이외의 아이디어는 모델에 적합하지 않은 데이터로 모델을 테스트해야한다는 것입니다. 교차 검증은 아마도 예측 의 맥락에서 가장 자주 사용됩니다 .

"교차 검증은 예측 모델을 검증하기위한 통계적 방법입니다. 데이터의 하위 세트는 검증 세트로 사용하기 위해 유지됩니다 . 모델은 나머지 데이터 (트레이닝 세트)에 적합하고 검증 세트를 예측하는 데 사용됩니다. 검증 세트에 걸친 예측의 품질은 예측 정확도의 전체 측정치를 산출한다.

교차 검증의 한 형태는 한 번에 하나의 관찰을 생략합니다. 이것은 잭나이프와 유사합니다. 또 다른 K- 폴드 교차 검증 은 데이터를 K 서브 세트로 분할합니다. Wikipedia를 참조하십시오 . 교차 검증은 일반적으로 정량적 데이터를 사용하여 수행됩니다. 선형 모델에 맞게 질적 (요인 데이터)을 정량적으로 변환하여이 모델을 테스트 할 수 있습니다. 다음은 간단합니다. 데이터의 50 %가 모델 예측에 사용되고 나머지는 테스트에 사용되는 홀드 아웃 전략 Xvar또한 정량적 변수 라고 가정 합니다.

    Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
    Xvar <- c(rep(1, 5),  rep(2, 5),    rep(3, 5))
    mydf <- data.frame (Yvar, Xvar)
    training.id <- sample(1:nrow(mydf), round(nrow(mydf)/2,0), replace = FALSE)
    test.id <- setdiff(1:nrow(mydf), training.id)
   # training dataset 
    mydf.train <- mydf[training.id]

    #testing dataset 
    mydf.test <- mydf[test.id]

부트 스트랩 및 순열 테스트와 달리 훈련 및 테스트에 대한 교차 검증 데이터 세트는 다릅니다. 다음 그림은 다양한 방법으로 리샘플링을 요약 한 것입니다.

여기에 이미지 설명을 입력하십시오

희망이 조금 도움이되기를 바랍니다.


23
이것은 인상적이며 특히 첫 번째 답변이므로 특히 그렇습니다! 앞으로도 계속 참여 하시길 바라며 앞으로이 사이트에 기여할 수 있기를 기대합니다.
whuber

이 답변은 큰 그림 답변입니다. 그러나 일부 링크가 취소 된 것으로 보입니다. 링크가 어디에 있는지에 대한 단서가 있습니까?
tintinthong

6

여기 내 공헌이 있습니다.

데이터

Yvar <- c(8,9,10,13,12,
          14,18,12,8,9,
          1,3,2,3,4)
Xvar <- rep(LETTERS[1:3], each=5)
mydf <- data.frame(Yvar, Xvar)

몬테카를로

Monte Carlo는 (결과) 임의 변수의 분포를 얻는 방법으로 Monte Carlo를 봅니다. 이는 다른 (입력) 임의 변수의 사소한 기능의 결과입니다. 현재 ANOVA 분석과 겹치는 부분을 즉시 보지 못합니다. 다른 포럼 회원이 여기에 입력 할 수 있습니다.

부트 스트랩

목적은 관측 된 표본에서 계산 된 통계의 불확실성을 이해하는 것입니다. 예를 들어 , Yvar 의 표본 평균이 8.4 인 것으로 계산할 수 있지만, Yvar에 대한 모집단의 평균은 어느 정도입니까? 비결은 표본이 모집단 인 것처럼하고 해당 가짜 집단에서 여러 번 표본을 추출하는 것입니다.

n <- 1000
bootstrap_means <- numeric(length=n)
for(i in 1:n){
   bootstrap_sample <- sample(x=Yvar, size=length(Yvar), replace=TRUE)
   bootstrap_means[i] <- mean(bootstrap_sample)
}
hist(bootstrap_means)

방금 샘플을 채취했으며 모수 분포를 가정하지 않았습니다. 이것은 비모수 적 부트 스트랩 입니다. 예를 들어 Xvar이 정규 분포라고 가정하는 것이 편한 경우 rnorm(...)추정 평균 및 표준 편차를 사용하여 정규 분포 ( ) 에서 표본을 추출 할 수도 있습니다. 이는 파라 메트릭 부트 스트랩 입니다.

다른 사용자는 Xvar레벨 의 효과 크기와 관련하여 부트 스트랩 응용 프로그램을 제공 할 수 있습니까?

잭 나이 핑

잭나이프는 약간 구식 인 것 같습니다. 완벽을 기하기 위해 부트 스트랩과 다소 비교할 수 있지만, 하나의 관측치를 제외하고 각 관측에 대해이 작업을 반복하면 어떻게되는지 확인하는 전략이 있습니다.

교차 검증

교차 유효성 검사에서는 추정 된 모델이 유효성 검사 세트의 값을 얼마나 잘 예측할 수 있는지 훈련 세트와 유효성 검사 세트에서 (일반적으로 큰) 데이터 세트를 분할합니다. 나는 개인적으로 아직 ANOVA에 교차 검증이 적용되는 것을 보지 못했기 때문에이 부분을 다른 사람들에게 맡기는 것을 선호합니다.

랜덤 화 / 순열 테스트

용어는 동의하지 않습니다. 무작위 테스트와 순열 테스트의 차이점을 참조하십시오 .

귀무 가설은 그룹 A, B 및 C의 모집단 사이에 차이가 없다는 것이므로 Xvar의 15 개 값 레이블을 무작위로 교환해도 상관 없습니다. 원래 관측 된 F 값 (또는 다른 통계)이 무작위로 레이블을 교환 한 후 얻은 값과 일치하지 않으면 문제가되었을 수 있으며 귀무 가설을 기각 할 수 있습니다.

observed_F_value <- anova(lm(Yvar ~ Xvar))$"F value"[1]

n <- 10000
permutation_F_values <- numeric(length=n)

for(i in 1:n){
   # note: the sample function without extra parameters defaults to a permutation
   temp_fit <- anova(lm(Yvar ~ sample(Xvar)))
   permutation_F_values[i] <- temp_fit$"F value"[1]
}

hist(permutation_F_values, xlim=range(c(observed_F_value, permutation_F_values)))
abline(v=observed_F_value, lwd=3, col="red")
cat("P value: ", sum(permutation_F_values >= observed_F_value), "/", n, "\n", sep="")

히스토그램

복잡한 디자인의 경우 레이블을 다시 할당하는 방법에주의하십시오. 또한 분산이 같지 않은 경우, 교환성에 대한 귀무 가설이 처음에는 사실이 아니므로이 순열 검정은 정확하지 않습니다.

여기서 우리는 레이블의 모든 가능한 순열을 명시 적으로 거치지 않았습니다. 이것은 P- 값의 Monte Carlo 추정치입니다. 작은 데이터 세트를 사용하면 가능한 모든 순열을 수행 할 수 있지만 위의 R 코드는 이해하기가 더 쉽습니다.

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