各位大家好(这是我在这里的第一篇文章)!
我在找到给定分布的条件期望值时遇到问题。
假设我们需要找到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函数可以计算这样的条件期望值?
答案 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中获得的期望。