拓端tecdat|在R语言辅导和Stan中估计截断泊松分布
原文链接:http://tecdat.cn/?p=6534
数据
这是一个非常简化的例子。我产生了1,000个计数观察值,平均值为1.3。然后,如果只观察到两个或更高的那个,我将原始分布与我得到的分布进行比较。
由此代码生成:
估计lambda
完整数据(a
)的关键参数效果很好,估计值为1.347,刚好超过1.3的真实值的一个标准误差。
最大似然
需要dpois
和ppois
函数的截断版本并在fitdist
其中使用这些版本。
#-------------MLE fitting in R-------------------
dtruncated_poisson <- function(x, lambda) {
}
ptruncated_poisson <- function(x, lambda) {
}
fitdist(b, "truncated_poisson", start = c(lambda = 0.5))
请注意,要执行此操作,我将下限阈值指定为1.5; 因为所有数据都是整数,这实际上意味着我们只观察2或更多的观察结果。我们还需要为估计值指定一个合理的起始值lambda
- 这样做太远会导致错误。
贝叶斯
对于替代贝叶斯方法,Stan可以很容易地将数据和概率分布描述为截断的。除了我x
在这个程序中调用的原始数据之外,我们需要告诉它有多少观察(n
),lower_limit
它被截断了,以及表征我们估计的参数的先验分布所需的任何东西。
以下程序的关键部分是:
- 在
data
块中,指定数据的x
下限为lower_limit
- 在
model
块中,指定x
通过截断的分布T[lower_limit, ]
data {
int n;
int lower_limit;
int x[n];
real lambda_start_mu;
real lambda_start_sigma;
}
parameters {
reallambda;
}
model {
lambda ~ normal(lambda_start_mu, lambda_start_sigma);
for(i in 1:n){
x[i] ~ poisson(lambda) T[lower_limit, ];
}
}
以下是从R向Stan提供数据的方式:
这为我们提供lambda
了与该fitdistrplus
方法匹配的后验分布:1.35,标准偏差为0.08。可信区间的图像:
如果您有任何疑问,请在下面发表评论。
▍关注我们
【大数据部落】第三方数据服务提供商,提供全面的统计分析与数据挖掘咨询服务,为客户定制个性化的数据解决方案与行业报告等。
▍咨询链接:http://y0.cn/teradat
▍联系邮箱:3025393450@qq.com
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2018-09-12 拓端数据tecdat|matlab代写使用Copula仿真优化市场风险
2018-09-12 拓端数据tecdat|matlab代写使用Copula仿真优化市场风险数据VaR分析
2018-09-12 拓端数据tecdat|R语言辅导ARMA-GARCH-COPULA模型和金融时间序列案例