R中为拒绝抽样优化拉普拉斯分布尺度参数的方法验证
拉普拉斯包络函数最优b值的求解疑问
我打算用位置参数为0、尺度参数为b的拉普拉斯分布作为包络函数,对取值范围在[-1,2]的标准正态分布进行拒绝抽样。由于必须指定b才能完成绘图,我尝试通过从正态分布采样的观测值,求解包络函数的*极大似然估计(MLE)*来寻找b的最优取值。
我的R代码如下:
# Define the log-likelihood function log_likelihood <- function(b, x) { n <- length(x) -n*log(2*b) - sum(abs(x))/b } # Generate the data set.seed(123) x <- rnorm(1000, mean = 0, sd = 1) x <- x[x >= -1 & x <= 2] # Restrict the range to [-1, 2] # Find the maximum likelihood estimate of b fit <- optim(par = 1, fn = log_likelihood, x = x, lower = 0) b <- fit$par # Plot the Laplace envelope function curve((1/(2*b))*exp(-abs(x)/b), from = -5, to = 5, ylim = c(0, 0.4), ylab = "Density", xlab = "x")
这段代码先生成1000个标准正态样本,将其范围限制在[-1,2]内,再通过optim()函数找到使对数似然函数最大化的b值,最后绘制对应的拉普拉斯包络函数。
后续我又写了绘制[-1,2]区间标准正态分布密度曲线的代码:
y <- seq(-1, 2, length = 1000) z <- dnorm(y) par(new=TRUE) plot(y, z, type = "l", xlab = "X", ylab = "Density", main = "Standard Normal Distribution")
最终我得到b=1,但不确定这个方法是否正确——修改代码后会得到不同的图像和b值,希望得到相关反馈。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

