r - 我应该如何计算 R 中的蒙特卡洛均方误差?

标签 r simulation mean

我尝试获取 R 中最大似然估计量的蒙特卡罗均方误差。我可以为重复一次的 MLE 编写计算,但我需要多次重复蒙特卡罗计算。我应该如何在 R 中编写这个?

首先,我们有样本大小 n=20 和重复次数 N=30。这个想法是,对于第一次重复,我们从位置 0 和尺度 1 的 Gumbel 分布中采样 n=20 数据(真实值 mu=0sigma =1)。

library(VGAM)
set.seed(101)
x <- rgumbel(20, loc = 0, scale = 1)

最佳答案

根据蒙特卡罗的哲学和您的尝试,我认为您可以尝试 replicate + rowMeans (我认为这个组合适用于您使用 fevd 进行的更新 也是如此,但我在这里继续使用 optim)

N <- 30

est <- replicate(N, {
  x <- rgumbel(20, loc = 0, scale = 1)
  m <- length(x)
  fit <- optim(
    par = c(1, 1),
    fn = ll_fn, z = x, m = m,
    hessian = TRUE, control = list(fnscale = -1)
  )
  fit$par
})

mse <- rowMeans((est - c(0, 1))^2)

你将获得

> est
           [,1]      [,2]       [,3]      [,4]       [,5]         [,6]
[1,] 0.03994695 0.0411953 0.04289633 0.4483689 -0.1757629 -0.002960991
[2,] 0.86737551 1.0367012 0.78748509 1.3409259  1.1527607  1.277664938
            [,7]       [,8]      [,9]      [,10]       [,11]       [,12]
[1,] -0.05394607 0.07246731 0.9500388 -0.2932722 -0.03107634 -0.01794733
[2,]  0.67182217 0.99549765 1.4256878  0.9107769  1.03009996  0.59352028
          [,13]     [,14]      [,15]      [,16]      [,17]      [,18]     [,19]
[1,] -0.2268109 0.1411913 -0.1689498 -0.1452246 -0.3621658 0.02991549 0.1332464
[2,]  0.7631312 1.0881250  0.9639512  0.9912077  0.8454992 1.08480054 1.0938930
          [,20]     [,21]     [,22]     [,23]     [,24]      [,25]       [,26]
[1,] 0.03264025 0.2279907 0.5108963 0.2505532 0.1572398 -0.4195196 -0.09234722
[2,] 0.89162837 1.0663945 1.0713617 0.8400802 0.6026962  0.8300022  0.61653388
          [,27]     [,28]       [,29]     [,30]
[1,] -0.1322638 0.0582058 -0.03012397 0.1494059
[2,]  1.0835487 0.8667572  1.05939105 0.8632393

> mse
[1] 0.07120414 0.04254979

est中,第一行代表mu,第二行代表sigmamse > 由 mu (第一个值)和 sigma (第二个值)组成

关于r - 我应该如何计算 R 中的蒙特卡洛均方误差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74369830/

相关文章:

r - 如何通过R中的字典映射列

r - knitR/RMD : select output folder

r - 第二次使用 dplyr::do 时丢失 group_by 信息

java - 模拟问题Java

python - 迭代 python 数组并找到 50 个值的平均值/最小值/最大值

r - 如何使用 R 将每个文件的数据添加为附加行,从而将不同的 .csv 文件合并为一个完整的文件?

尽管进行了彻底检查,但在 Modelsim 上的仿真中类型不匹配的 VHDL 代码

javascript - 有人可以帮我做一个模拟图像传输的网络应用程序吗

python - python中的"fillna"命令不返回意味着使用pandas

node.js - 错误 : uncaughtException: require(. ..).invokeRolesPolicies 不是函数