如何计算R函数输出的1000个MLE的均值方差并整合入原函数
实现方案
原函数返回的1000个optimise计算结果中,每个结果的maximum字段就是我们需要的泊松参数θ的MLE值,提取该字段后做统计计算即可,修改后的完整代码如下:
f2d = function(n){ fun = function(y){ optimise( function(theta){ sum(dpois(y, theta, log = TRUE)) }, interval = c(0,50), maximum = TRUE )$maximum # 直接提取MLE值,过滤无关输出 } # 生成1000组样本量为n的泊松样本 x = replicate(1000, rpois(n, 10)) # 批量计算所有样本的MLE mle_all = apply(x, 2, fun) # 计算均值和方差,返回命名结果 return(list( 均值 = mean(mle_all), 方差 = var(mle_all) )) }
调用f2d(5)即可直接得到两个结果,输出示例如下:
> f2d(5) $均值 [1] 10.0214 $方差 [1] 1.9876
如果需要返回向量格式的结果,把return部分替换为return(c(均值 = mean(mle_all), 方差 = var(mle_all)))即可。
内容的提问来源于stack exchange,提问作者Monj
相关产品推荐
相关产品推荐

