整合经验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 ħ (X )d X = ķ。我想解决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))

有趣的是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

Answers:


13

让排序的数据是。为了理解经验CDF ģ,考虑的值中的一个X 我 --let称之为γ --and假设一些数ķ的X 我小于γ和吨≥ 1的X 我等于γ。选择一个区间[ α ,β ],在所有可能的数据值中,只有γx1≤x2≤⋯≤xnGxiγkxiγt≥1xiγ[α,β]γ出现。然后,通过定义,该时间间隔内具有恒定值ķ / Ñ为小于数γ,并跳转到恒定值(ķ + 吨)/ Ñ为数字大于γ。Gk/nγ(k+t)/nγ

欧洲发展基金

∫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


Rcumsum使用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图


这是一个非常清晰有用的答案,谢谢!
— 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.