将值向量输入幂函数
Feed a vector of values into power function
我想估计不同水平的 N 和 SD 的最小可检测效应大小。 Power 始终固定为 0.8,alpha 始终固定为 0.05。
到目前为止,这是我的代码:
library(pwr)
power_fcn <- function(.x){
power.t.test(n = .x, d = NULL, power = 0.8, sig.level = 0.05, alternative = "two.sided")
}
power_df <-
map_dfr(
.x = seq(10000, 30000, by = 5000),
.f = power_fcn
)
但是上面returns这个错误:
Error: Argument 1 must be a data frame or a named atomic vector.
但据我所知 .x
是一个向量...
我希望能够制作的是这样的东西:
# A tibble: 5 x 5
n power sig.level test cohens_d
<dbl> <dbl> <dbl> <chr> <dbl>
1 10000 0.8 0.05 two-sided 0.0229
2 15000 0.8 0.05 two-sided 0.0323
3 20000 0.8 0.05 two-sided 0.0280
4 25000 0.8 0.05 two-sided 0.0251
5 30000 0.8 0.05 two-sided 0.0229
理想情况下,函数的选项可以添加另一列,将 cohen 的 d 转换为我关心的变量的单位(即通过 SD)。
您可以使用以下-
library(dplyr)
power_fcn <- function(.x){
tmp <- power.t.test(n = .x, d = NULL, power = 0.8,
sig.level = 0.05, alternative = "two.sided")
tibble(n = .x, power = 0.8, sig.level = 0.05,
test = 'two.sided', cohens_d = tmp$delta)
}
sd <- 0.5
purrr::map_dfr(
.x = seq(10000, 30000, by = 5000),
.f = power_fcn
) %>%
mutate(mdes = cohens_d * sd)
# n power sig.level test cohens_d mdes
# <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
#1 10000 0.8 0.05 two.sided 0.0396 0.0198
#2 15000 0.8 0.05 two.sided 0.0323 0.0162
#3 20000 0.8 0.05 two.sided 0.0280 0.0140
#4 25000 0.8 0.05 two.sided 0.0251 0.0125
#5 30000 0.8 0.05 two.sided 0.0229 0.0114
我想估计不同水平的 N 和 SD 的最小可检测效应大小。 Power 始终固定为 0.8,alpha 始终固定为 0.05。
到目前为止,这是我的代码:
library(pwr)
power_fcn <- function(.x){
power.t.test(n = .x, d = NULL, power = 0.8, sig.level = 0.05, alternative = "two.sided")
}
power_df <-
map_dfr(
.x = seq(10000, 30000, by = 5000),
.f = power_fcn
)
但是上面returns这个错误:
Error: Argument 1 must be a data frame or a named atomic vector.
但据我所知 .x
是一个向量...
我希望能够制作的是这样的东西:
# A tibble: 5 x 5
n power sig.level test cohens_d
<dbl> <dbl> <dbl> <chr> <dbl>
1 10000 0.8 0.05 two-sided 0.0229
2 15000 0.8 0.05 two-sided 0.0323
3 20000 0.8 0.05 two-sided 0.0280
4 25000 0.8 0.05 two-sided 0.0251
5 30000 0.8 0.05 two-sided 0.0229
理想情况下,函数的选项可以添加另一列,将 cohen 的 d 转换为我关心的变量的单位(即通过 SD)。
您可以使用以下-
library(dplyr)
power_fcn <- function(.x){
tmp <- power.t.test(n = .x, d = NULL, power = 0.8,
sig.level = 0.05, alternative = "two.sided")
tibble(n = .x, power = 0.8, sig.level = 0.05,
test = 'two.sided', cohens_d = tmp$delta)
}
sd <- 0.5
purrr::map_dfr(
.x = seq(10000, 30000, by = 5000),
.f = power_fcn
) %>%
mutate(mdes = cohens_d * sd)
# n power sig.level test cohens_d mdes
# <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
#1 10000 0.8 0.05 two.sided 0.0396 0.0198
#2 15000 0.8 0.05 two.sided 0.0323 0.0162
#3 20000 0.8 0.05 two.sided 0.0280 0.0140
#4 25000 0.8 0.05 two.sided 0.0251 0.0125
#5 30000 0.8 0.05 two.sided 0.0229 0.0114