伯努利数据模型的Rao分数测试的R代码正确吗?

伯努利数据模型的Rao分数测试的R代码正确吗?,r,statistics,bernoulli-probability,R,Statistics,Bernoulli Probability,我是一个彻头彻尾的统计新手,对R来说是个新手,因此我提出了这个问题。我试图找到一个特定情况下的实现,当一个人的数据是二进制的,并且每个观察都有伯努利分布。我偶然发现了R语言中的anova,但不知道如何使用它。因此,我尝试为这个特定案例实施Rao评分: rao.score.bern <- function(data, p0) { # assume `data` is a list of 0s and 1s y <- sum(data) n <- length(data

我是一个彻头彻尾的统计新手,对R来说是个新手,因此我提出了这个问题。我试图找到一个特定情况下的实现,当一个人的
数据
是二进制的,并且每个观察都有伯努利分布。我偶然发现了R语言中的
anova
,但不知道如何使用它。因此,我尝试为这个特定案例实施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)))
}

rao.score.bern先测试,然后调试。

测验
rao.score.bern
有效吗

伯尔尼(c(0,0,0,1,1,1),1/6)的rao分数

这…什么都没有!通过将最终线路替换为

2 * (1 - pnorm(abs(z)))
这消除了不必要的分配

伯尔尼(c(0,0,0,1,1,1),1/6)的rao分数

好了,现在我们有进展了

调试 不幸的是,代码仍然不起作用。让我们通过将调用猛拉到
rao.score.bern
并替换为显示输入的内容来进行调试。不要将其应用于您创建的大型输入!使用一小块:

sappy(数据[1:5],函数(x)x[[1]]

那不是你所期望的,是吗?它只为
数据的每个元素返回一个零。这个怎么样

Sappy(数据[1:5],函数(x)x)

好多了!调用
sapply
中的变量
x
指的是整个向量,这就是要传递给例程的向量。从哪里来的


p、 值先测试,然后调试。

测验
rao.score.bern
有效吗

伯尔尼(c(0,0,0,1,1,1),1/6)的rao分数

这…什么都没有!通过将最终线路替换为

2 * (1 - pnorm(abs(z)))
这消除了不必要的分配

伯尔尼(c(0,0,0,1,1,1),1/6)的rao分数

好了,现在我们有进展了

调试 不幸的是,代码仍然不起作用。让我们通过将调用猛拉到
rao.score.bern
并替换为显示输入的内容来进行调试。不要将其应用于您创建的大型输入!使用一小块:

sappy(数据[1:5],函数(x)x[[1]]

那不是你所期望的,是吗?它只为
数据的每个元素返回一个零。这个怎么样

Sappy(数据[1:5],函数(x)x)

好多了!调用
sapply
中的变量
x
指的是整个向量,这就是要传递给例程的向量。从哪里来的


p、 价值观这是一个很好的答案,解释了识别问题的策略,而不仅仅是指出当前的问题。这是一个很好的答案,解释了识别问题的策略,而不仅仅是指出当前的问题。
[1] 0.02845974
[1] 0 0 0 0 0
[[1]]
[1] 0 0 0 0 0
[[2]]
[1] 0 0 0 0 0 0 
...
[[5]]
[1] 0 0 0 0 0 0 0 0 0