는 요소와 보다 작은 양의 정수를 고정 또는 동등한 .
의 원소 가 똑같이 가능성이 있기 때문에, 은 샘플링한다 . . . , L의 m은 각각 개별적으로로부터 인출되는 의 크기는, 여분없이 1 , 2 , . . . , m 각각.
는 요소와 보다 작은 양의 정수를 고정 또는 동등한 .
의 원소 가 똑같이 가능성이 있기 때문에, 은 샘플링한다 . . . , L의 m은 각각 개별적으로로부터 인출되는 의 크기는, 여분없이 1 , 2 , . . . , m 각각.
답변:
재귀를 포함하지 않는 또 다른 접근법이 있습니다. 그래도 길이는 매개 변수에 의존하는 합계와 곱을 사용합니다. 먼저 표현을 한 다음 설명하겠습니다.
우리가
편집 : 이 모든 것을 작성하는 마지막에, 우리는 이항 계수를 초 기하 확률과 삼항 계수로 결합하여 표현을 조금 위에 통합 할 수 있음을 깨달았습니다. 그 가치가있는 것의 개정 된 표현은 여기에서 은 성공 상태를 갖는 의 모집단 에서 추첨을 취하는 초 지형 랜덤 변수 입니다.
조합 주장을 좀 더 쉽게 추적 할 수 있도록 몇 가지 표기법을 살펴 보겠습니다. 전반적으로, 우리는 와 고정 된 것으로 간주 합니다. 우리는 사용할 것이다 주문의 컬렉션을 표시하기 위해 -tuples을 , 각각의 경우 , 만족을
우리는 또한 동일 함 대신에 을 요구한다는 점을 제외하고는 동일한 컬렉션에 을 사용합니다 .
중요한 것은 는 계산하기가 비교적 쉽다는 것입니다. 이는 이 모든 대한 과 동일 하므로 다른 값 사이의 상호 작용을 제거하기 때문 입니다. 각 에 대해 요구 사항을 만족하는 의 수 는 , 크기가 인 의 부분 집합을 선택하여 이러한 를 구성 할 수 있으므로다음으로 unioning . 그것은 다음과 같습니다
이제 원래 확률은 다음과 같이 를 통해 표현 될 수 있습니다 .
여기서 두 가지 단순화를 할 수 있습니다. 먼저 분모는 둘째, 순열 인수는카디널리티를 통한 에만 의존. 이 때문에 의 서브셋 카디널리티 갖는 그것이 그 다음 여기서 은 카디널리티를 갖는 의 임의의 고정 된 서브 세트입니다.
한 걸음 물러서서 우리는 이제
하자 의 구별되는 서브 세트 정확히 하나 개의 원소를 첨가함으로써 형성 . 그런 다음 (이것은 인 경우 에 추가 요소가 포함되어 있지 않습니다.) 이제 계산 문제를 계산 문제로 변환하여 처리 방법에 대해 더 많이 알고 있습니다. 더 구체적으로, 우리는
위의 공용체 표현식의 크기를 처리하기 위해 포함 제외를 적용 할 수 있습니다. 여기서 중요한 관계는 비어 있지 않은 , 이는 에 다수의 가 포함 된 경우 해당 조합도 포함하기 때문입니다. 또한 크기는. 따라서
마지막으로, 끝에있는 표현식을이상으로 합산하면 따라 청구되었습니다.
이 문제를 해결하는 분석 방법을 모르지만 결과를 계산하는 재귀 적 방법이 있습니다.
들어 당신이 선택하고 중 요소 전에 선택되어있는합니다. 두 번째 추첨에서 과 교차 하는 요소를 선택할 확률은 초기 하 분포에 의해 제공됩니다.
결과 호출 할 수 있습니다동일한 논리를 사용하여 를 찾을 수 있습니다. 여기서 은 세 샘플의 교집합의 카디널리티입니다. 그때,
각 . 는 단순히 이전 계산의 결과이고 는 다음을 호출 하기 때문에 후자의 계산은 수치 적으로 어렵지 않습니다. 초기 하 분포.
일반적으로 을 찾으 려면 다음과 같은 재귀 수식을 적용 할 수 있습니다. 에 대해 그리고 이라고 말하면
여기 R에 있습니다.
hypergeom <- function(k, n, K, N) choose(K, k) * choose(N-K, n-k) / choose(N, n)
#recursive function for getting P(b_i) given P(b_{i-1})
PNext <- function(n, PPrev, ai, upperBound) {
l <- seq(0, upperBound, by=1)
newUpperBound <- min(ai, upperBound)
kVals <- seq(0, newUpperBound, by=1)
PConditional <- lapply(kVals, function(k) {
hypergeom(k, ai, l, n)
})
PMarginal <- unlist(lapply(PConditional, function(p) sum(p * PPrev) ))
PMarginal
}
#loop for solving P(b_m)
P <- function(n, A, m) {
P1 <- c(rep(0, A[1]), 1)
if (m==1) {
return(P1)
} else {
upperBound <- A[1]
P <- P1
for (i in 2:m) {
P <- PNext(n, P, A[i], upperBound)
upperBound <- min(A[i], upperBound)
}
return(P)
}
}
#Example
n <- 10
m <- 5
A <- sample(4:8, m, replace=TRUE)
#[1] 6 8 8 8 5
round(P(n, A, m), 4)
#[1] 0.1106 0.3865 0.3716 0.1191 0.0119 0.0003
#These are the probabilities ordered from 0 to 5, which is the minimum of A