R:条件期望值

时间:2018-04-07 16:43:40

标签: r statistics

各位大家好(这是我在这里的第一篇文章)!

我在找到给定分布的条件期望值时遇到问题。

假设我们需要找到E(x | x> 0.5),其中x具有gev(广义极值)分布,密度为dgev(x,xi,sigma,mu)。我试图做的是

library(evir)

func1 <- function(x) {x*dgev(x, xi, sigma, mu)}
integral <- integrate(func1, lower = 0.5, upper = 10000, subdivisions = 10000)
cond.exp.val <- as.numeric(integral[1])/(1-q)

其中q是给出qgev(q,xi,sigma,mu)= 0.5的值,用于归一化。

结果很大程度上取决于&#39;鞋帮&#39; integ()函数的参数,对于该参数的较高值,积分发散。我的分发参数是

xi <- 0.81
sigma <- 0.0067
mu <- 0.0072

这种整合应该是可行和趋同的。你有什么想法我做错了还是有任何内置的R函数可以计算这样的条件期望值?

1 个答案:

答案 0 :(得分:2)

通常,在集成密度的右尾时,建议使用Inf而不是大数。请参阅?integrate中的详细信息。我将q的描述视为通过迭代获得的值,当我使用q <- 0.99315得到小数点后4位时,我停止了:

qgev(.99315, xi, sigma, mu)
[1] 0.4998413

您还错误地使用了积分变量中的提取。应该使用&#34; [[&#34;或&#34; $&#34;使用列表时:

 func1 <- function(x) {x*dgev(x, xi, sigma, mu)}
 integral <- integrate(func1, lower = 0.5, upper = Inf, subdivisions = 10000)
 (cond.exp.val <- integral[[1]]/(1-.99315))  # `as.numeric` not needed
#[1] 2.646068

我担心您对如何获取q的描述会产生误导,因为大于1的值不应该是从统计PDF中获得的期望。