作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下泊松
分布:
Data
3 5 3 1 2 1 2 1 0 2 4 3 1 4 1 2 2 0 4 2 2 4 0 2 1 0 5 2 0 1
2 1 3 0 2 1 1 2 2 0 3 2 1 1 2 2 5 0 4 3 1 2 3 0 0 0 2 1 2 2
3 2 4 4 2 1 4 3 2 0 3 1 2 1 3 2 6 0 3 5 1 3 0 1 2 0 1 0 0 1
1 0 3 1 2 3 3 3 2 1 1 2 3 0 0 1 5 1 1 3 1 2 2 1 0 3 1 0 1 1
我使用以下代码来查找 MLE θ̂
lik<-function(lam) prod(dpois(data,lambda=lam)) #likelihood function
nlik<- function(lam) -lik(lam) #negative-likelihood function
optim(par=1, nlik)
我想要做的是创建一个引导置信区间来测试 0.05 水平上 θ = 1 的零假设,并使用我上面使用的数值优化找到 p 值。我认为这会是类似的事情
n<-length(data)
nboot<-1000
boot.xbar <- rep(NA, nboot)
for (i in 1:nboot) {
data.star <- data[sample(1:n,replace=TRUE)]
boot.xbar[i]<-mean(data.star)
}
quantile(boot.xbar,c(0.025,0.975))
但我不认为这利用了优化,而且我不确定如何获得 p 值。
最佳答案
几点:
(1) 为了数值稳定性,您可能需要考虑负对数似然而不是负似然。
(2) 根据 Zheyuan 的建议,您需要使用 optimize 代替 optim 来在一维参数空间中实现 nll 最小化。
lik<-function(lam) sum(log(dpois(data,lambda=lam))) #log likelihood function
nlik<- function(lam) -lik(lam) #negative-log-likelihood function
optimize(nlik, c(0.1, 2), tol = 0.0001)
# $minimum
# [1] 1.816661
# $objective
# [1] 201.1172
n<-length(data)
nboot<-1000
boot.xbar <- rep(NA, nboot)
for (i in 1:nboot) {
data.star <- data[sample(1:n,replace=TRUE)]
boot.xbar[i]<-mean(data.star)
}
quantile(boot.xbar,c(0.025,0.975))
# 2.5% 97.5%
# 1.575000 2.066667
(3) 您可以使用 bbmle 包中的 mle2 来计算 MLE 并立即构建置信区间。
library(bbmle)
res <- mle2(minuslogl = nlik, start = list(lam = 0.1))
res
# Coefficients:
# lam
# 1.816708
# Log-likelihood: -201.12
confint(profile(res)) # confint w.r.t. the likelihood profile
# 2.5 % 97.5 %
# 1.586083 2.068626
confint(res, method="uniroot") # based on root-finding to find the exact point where the profile crosses the critical level
# 2.5 % 97.5 %
# 1.586062 2.068606
关于r - 泊松分布上的 MLE bootstrap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41093656/
我是一名优秀的程序员,十分优秀!