gpt4 book ai didi

r - 比例的一个样本假设检验

转载 作者:行者123 更新时间:2023-12-04 16:02:01 24 4
gpt4 key购买 nike

我正在寻找一个内置的 R 函数来计算一个样本假设检验的比例功效。

内置函数 power.prop.test 仅对比例进行两个样本假设检验。

原题是:“你要掷多少次硬币才能确定它有偏?”

p.null <- 0.5            # null hypothesis.

如果抛出正面朝上的概率是大于 0.51 或小于 0.49。否则我们说它“足够好”

delta <- 0.01       

下面是一个函数,可以抛 N 次有偏向的硬币并返回正面朝上的比例:

biased.coin <- function(delta, N) {
probs <- runif(N, 0, 1)
heads <- probs[probs < 0.5+delta]
return(length(heads)/N)
}

我们始终将 alpha 和 beta 固定为标准值。我们的目标是计算 N。

alpha = 0.05        # 95% confidence interval
beta = 0.8 # Correctly reject the null hypothesis 80% of time.

第一步是使用模拟。

单个实验是抛硬币 N 次,如果正面朝上的次数与预期值 N/2 偏离“太远”,则拒绝原假设

然后我们重复实验 M 次并计算原假设被(正确)拒绝的次数。

M <- 1000

simulate.power <- function(delta, N, p.null, M, alpha) {
print(paste("Calculating power for N =", N))
reject <- c()
se <- sqrt(p.null*(1-p.null))/sqrt(N)
for (i in (1:M)) {
heads <- biased.coin(delta, N) # perform an experiment
z <- (heads - p.null)/se # z-score
p.value <- pnorm(-abs(z)) # p-value
reject[i] <- p.value < alpha/2 # Do we rejct the null?
}
return(sum(reject)/M) # proportion of time null was rejected.
}

接下来我们绘制一个图表(慢,大约 5 分钟):

ns <- seq(1000, 50000, by=1000)
my.pwr <- c()
for (i in (1:length(ns))) {
my.pwr[i] <- simulate.power(delta, ns[i], p.null, M, alpha)
}
plot(ns, my.pwr)

从图中可以看出,β 的幂 = 0.8 所需的 N 约为 20000。

模拟速度很慢,所以最好有一个内置函数。

一点点摆弄给了我这个:

magic <- function(p.null, delta, alpha, N) {
magic <-power.prop.test(p1=p.null,
p2=p.null+delta,
sig.level=alpha,

###################################
n=2*N, # mysterious 2
###################################

alternative="two.sided",
strict=FALSE)
return(magic[["power"]])
}

让我们根据我们的模拟数据绘制它。

pwr.magic <- c()
for (i in (1:length(ns))) {
pwr.magic[i] <- magic(p.null, delta, alpha, ns[i])
}
points(ns, pwr.magic, pch=20)

拟合很好,但我不知道为什么我需要将 N 乘以 2,为了从两个样本比例测试中获得一个样本的功效。

如果有一个内置函数可以让你直接做一个样本就好了。

谢谢!

最佳答案

你可以试试

library(pwr)
h <- ES.h(0.51, 0.5) # Compute effect size h for two proportions
pwr.p.test(h = h, n = NULL, sig.level = 0.05, power = 0.8, alternative = "two.sided")
# proportion power calculation for binomial distribution (arcsine transformation)

# h = 0.02000133
# n = 19619.53
# sig.level = 0.05
# power = 0.8
# alternative = two.sided

顺便说一句,显着加快模拟速度的一种方法是使用 rbinom 而不是 runif:

biased.coin2 <- function(delta, N) {
rbinom(1, N, 0.5 + delta) / N
}

关于r - 比例的一个样本假设检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50194635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com