0

さまざまなパラメーターの一連の電力計算を実行できるようにするループを R で作成するのに助けが必要です。Alpha は常に = 0.05 であり、N はさまざまな値を取るサンプル サイズであるため、次のようになります。

N= 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 1000.

H2 は、分析された N ごとに異なる値も取ります。これらは、0.005、0.01、0.02 です。

例として、N=1000 の場合、アルファ=0.05 で H2=0.005、H2=0.01、H2=0.02 でパワーを計算したいと思います。次に、上記の NI のすべての値に対してこの分析を行いたいと思います。

これは、1回だけ実行するために以下で使用しているコードです:

N = 1000
alpha = 0.05
H2 = 0.005

threshold = qchisq(alpha, df = 1, lower.tail = FALSE)
power = pchisq(threshold, df = 1, lower.tail = FALSE, ncp = N * H2)

構造化されたテーブルでこれらの結果を一度に取得できるように、誰かがこれをループに変えるのを手伝ってくれませんか? ありがとう。

4

2 に答える 2

1
N <- c(1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000)
H2 <- c(0.005, 0.01, 0.02)
alpha <- 0.05

threshold <- qchisq(alpha, df = 1, lower.tail = FALSE)

paraComb <- expand.grid(N, H2)
ncp <- with(paraComb, Var1 * Var2)

setNames(cbind(paraComb,
               sapply(ncp, 
                      function(ncp) pchisq(threshold, 
                                           df = 1, lower.tail = FALSE, 
                                           ncp = ncp))
              ),
         c("N", "H2", "power"))

#        N    H2     power
# 1   1000 0.005 0.6087795
# 2   2000 0.005 0.8853791
# 3   3000 0.005 0.9721272
# 4   4000 0.005 0.9940005
# 5   5000 0.005 0.9988173
# <snip>
于 2013-08-28T20:06:44.577 に答える
0
N <- c(1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000)
N<-as.list(rep(N,each=3)) # 3 is the length of original H2
H2 <- c(0.005, 0.01, 0.02)
H2<-as.list(rep(H2,10)) # 10 is the length of original N

myresult<-Map(function(x,y) cbind(x,y,power=pchisq(qchisq(0.05, df = 1, lower.tail = FALSE), df = 1, lower.tail = FALSE, ncp = x * y)),N,H2)
myout<-do.call(rbind,myresult)
colnames(myout)[1:2]<-c("N","H2")
> head(myout,10) 
         N    H2  power
 [1,] 1000 0.005 0.6088
 [2,] 1000 0.010 0.8854
 [3,] 1000 0.020 0.9940
 [4,] 2000 0.005 0.8854
 [5,] 2000 0.010 0.9940
 [6,] 2000 0.020 1.0000
 [7,] 3000 0.005 0.9721
 [8,] 3000 0.010 0.9998
 [9,] 3000 0.020 1.0000
[10,] 4000 0.005 0.9940
于 2013-08-28T20:43:53.627 に答える