r - r中的重要性抽样以计算平均值
问题描述
我得到以下分布: f(x) = e^{-x*erf(x)}/1.14
我被要求计算 f(x) 的标准差;我在计算 E(x^2) 时遇到了麻烦,它应该等于大约 1.80,但我得到了 1.70。一旦我知道了,我就可以使用 E(x^2)-E(x)^2 来获得方差和标准差。
library(extraDistr)
library(vgam)
set.seed(50)
N = 1000
x = rhnorm(N,sigma=2.5) # Sample x samples from the proposal distribution h(x)
#plot(x)
h = dhnorm(x,sigma=2.5) # Evaluate h(x)
g = rep(0,N)
g[x>=0] = x[x>=0] # Evaluate g(x)
f = function(x) { # Evaluate f(x)
f.x = rep(0,length(x))
f.x[x>=0] = exp((-x[x>=0])*erf(x[x>=0]))/1.140741
return(f.x)
}
mean((g*f(x)/h))^2 #E(X)^2
mean((g*f(x)/h)^2) #E(x^2)
如果我改变我的 h=dnorm(x^2,...) 平均值会变得很大。我不确定我做错了什么。
解决方案
推荐阅读
- arrays - R中按列进行的复杂元素比较
- c# - 当.Result()使方法挂起时如何在构造函数中使用异步方法?
- c# - 使用 Blazor 的默认 SignalR 连接发送“Hello World”
- flutter - 在 Flutter Web 中读写文件
- javascript - 如何将键值对添加到json?
- ios - 无法转换视图控制器的值错误
- delphi - 如何传递 DataSet:TDataSet 作为过程参数
- c - void 表达式中的未定义行为
- angular - 如何使用选择器为多个状态获取正确的切片数据并在组件内部使用它们 | ngRx | 还原 | 角 6 | 打字稿
- javascript - LitElement connectedCallback() 与 firstUpdate()