【问题标题】:R: conditional expected valueR:条件期望值
【发布时间】:2018-04-08 02:12:04
【问题描述】:

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

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

假设我们需要找到 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 的值,用于标准化。

结果很大程度上取决于integral() 函数的'upper' 参数,并且对于该参数的更高值,积分会发散。因为我的分布参数是

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

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

【问题讨论】:

  • 那么问题是什么?
  • 我的方法没有给出好的答案。问题是:a)是否有这样做的内置函数和b)我是否犯了任何错误
  • 一个好的答案是什么意思?
  • 我需要得到一个GEV分布变量X在X > 0.5的条件下的条件期望值,即E(X | X > 0.5)。从数学的角度来看,它是通过将 X 与 GEV 密度从 0.5 到无穷大的乘积除以 P(X > 0.5) 来完成的。好的答案将是该计算的合理有限结果。我知道它在数学上是如何工作的,我只是无法通过使用 R 来获得它。

标签: r statistics


【解决方案1】:

一般情况下,在对密度的右尾进行积分时,建议您使用Inf 而不是大数。请参阅?integrate 中的详细信息。我将您对q 的描述视为通过迭代获得的值,当我使用q &lt;- 0.99315 得到0.5 的4 位小数时我停止了:

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

您还错误地使用了从积分变量中提取的方法。使用列表时应使用“[[”或“$”:

 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 中得出的期望值。

【讨论】:

  • 对不起,我没有早点回答,我不在电脑前。谢谢!使用 Inf 就可以了。是的,“[[]]”的使用似乎更自然。除此之外,我似乎没有注意到给出“q”的函数只是 pgev()。
猜你喜欢
  • 2021-01-26
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
相关资源
最近更新 更多