我是一个完整的统计菜鸟,并且是 R 的新手,因此提出了这个问题。当一个人是二元的并且每个观察都具有伯努利分布时,我试图为特定情况找到Rao 分数的实现。data
我偶然发现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)))
}
我很确定我的代码中有一个错误,因为它在以下场景中只产生两个不同的 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], 1, x[2]))
p.values <- sapply(data, function(x) rao.score.bern(x[[1]], p0))
有人可以告诉我问题出在哪里吗?您能否向我指出 R 中的内置解决方案?