경험적 CDF 통합


13

경험적 분포 있습니다. 다음과 같이 계산합니다G(x)

    x <- seq(0, 1000, 0.1)
    g <- ecdf(var1)
    G <- g(x)

나는 나타내며 , 즉 h 는 pdf이고 G 는 cdf입니다.h(x)=dG/dxhG

이제 x 의 예상 값 이 약 k 가 되도록 적분의 상한 (예 : )에 대한 방정식을 풀고 싶습니다 .axk

즉, 에서 b로 적분하면 ∫ x h ( x ) d x = k 가 있어야합니다 . b 를 풀고 싶습니다 .0b∫xh(x)dx=kb

부품으로 통합하면 방정식을 다음과 같이 다시 작성할 수 있습니다.

이며, 여기서 적분은 0 에서 b까지입니다 ------- (1)bG(b)−∫0bG(x)dx=k0b

나는 다음과 같이 적분을 계산할 수 있다고 생각합니다.

    intgrl <- function(b) {
        z <- seq(0, b, 0.01)
        G <- g(z)
        return(mean(G))
     }

그러나이 기능을 함께 사용하려고하면

    library(rootSolve)
    root <- uniroot.All(fun, c(0, 1000))

fun이 eq (1) 인 경우 다음과 같은 오류가 발생합니다.

    Error in seq.default(0, b, by = 0.01) : 'to' must be of length 1  

문제는 내 함수 intgrl가 숫자 값으로 평가되는 동안 uniroot.All간격을 지나가는 것입니다.c(0,1000)

R 에서이 상황에서 를 어떻게 해결해야 합니까?b

답변:


13

x1≤x2≤⋯≤xnGxiγkxiγt≥1xiγ[α,β]γGk/nγ(k+t)/nγ

ECDF

∫0bxh(x)dx[α,β]ht/nγ[α,β]

∫αβxh(x)dx=(xG(x))|αβ−∫αβG(x)dx=(βG(β)−αG(α))−∫αβG(x)dx.

γG

∫αβG(x)dx=∫αγG(α)dx+∫γβG(β)dx=(γ−α)G(α)+(β−γ)G(β).

G(α)=k/n,G(β)=(k+t)/n

∫αβxh(x)dx=(βG(β)−αG(α))−((γ−α)G(α)+(β−γ)G(β))=γtn.

X

tn=1n+⋯+1n

γG

∫0bxh(x)dx=∑i:0≤xi≤b(xi1n)=1n∑xi≤bxi.

1/n[0,b]1/n1/mm[0,b]

kb1n∑xi≤bxi=k.kj

1n∑i=1j−1xi≤k<1n∑i=1jxi,

b[xj−1,xj)b


R다음과 같이 부분 검색을 수행하고 검색 제품군을 cumsum사용하여 지정된 값과 교차하는 위치를 찾습니다 which.

set.seed(17)
k <- 0.1
var1 <- round(rgamma(10, 1), 2)
x <- sort(var1)
x.partial <- cumsum(x) / length(x)
i <- which.max(x.partial > k)
cat("Upper limit lies between", x[i-1], "and", x[i])

지수 분포에서 추출한 데이터의이 예에서 출력은 다음과 같습니다.

상한은 0.39에서 0.57 사이입니다.

0.1=∫0bxexp⁡(−x)dx,0.531812

G

ECDF 그림


이것은 매우 명확하고 유용한 답변이므로 감사합니다!
— user46768
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.