从 Bernoulli(p) 中,我想计算各种样本大小 (n= 10, 15, 20, 25, 30, 50, 100, 150, 200) 的覆盖概率,以及 p = 0.01 时的每个样本大小, 0.4 和 0.8。
这是我的尝试,但除了 p=0.01 之外,到处都显示 0
f3 <- function(n,probs) {
res1 <- lapply(n, function(i) {
setNames(lapply(probs, function(p) {
m<-10000
n<-i
p<-p
x <- rbinom(m,size=1,p=p)
p.hat <- x/n
lower.Wald <- p.hat - 1.96 * sqrt(p.hat*(1-p.hat)/n)
upper.Wald <- p.hat + 1.96 * sqrt(p.hat*(1-p.hat)/n)
p.in.CI <- (lower.Wald <p) & ( p < upper.Wald )
covprob1<- mean(p.in.CI)
covprob1
}),paste0("p=",probs))
})
names(res1) <- paste0("n=",n)
res1
} …Run Code Online (Sandbox Code Playgroud) r function confidence-interval dataframe bernoulli-probability
我是一个完整的统计菜鸟和R的新手,因此这个问题.我试图找到特定情况的Rao分数的实现,当一个data是二元的并且每个观察都有bernoulli分布.我anova在R语言中偶然发现但却未能理解如何使用它.因此,我尝试自己为这个特殊情况实施Rao评分:
rao.score.bern <- function(data, p0) {
# assume `data` is a list of 0s and 1s
y <- sum(data)
n <- length(data)
phat <- y / n
z <- (phat - p0) / sqrt(p0 * (1 - p0) / n)
p.value <- 2 * (1 - pnorm(abs(z)))
}
Run Code Online (Sandbox Code Playgroud)
我很确定我的代码中存在一个错误,因为它在以下场景中只产生两个不同的p值:
p0 <- 1 / 4
p <- seq(from=0.01, to=0.5, by=0.01)
n <- seq(from=5, to=70, by=1)
g <- expand.grid(n, p)
data <- apply(g, 1, function(x) rbinom(x[1], …Run Code Online (Sandbox Code Playgroud)