заполнить матрицу в цикле выводом функции - PullRequest
0 голосов
/ 01 февраля 2019

Функция принимает два набора значений из двух векторов (альфа и бета).Мне нужно поместить значения функции вывода в матрицу с размером альфа х бета.Функция рассчитывает значения мощности.Я ценю вашу помощь.Мне нужна матрица 5х5.До сих пор я пробовал следующий код:

alpha = c(0.01,0.05,0.10,0.20)
beta = c(0.50,0.60,0.70,0.80,0.90)
pwrmx <- matrix(data=NA, nrow=alpha, ncol=beta)
for (a in alpha){

  for (b in beta){

    pwr <- power.prop.test(n=NULL, p1=0.25, p2=0.4, sig.level = a, power = b)
    print(pwr$n)
    }

}

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы были почти там, см. Комментарии:

alpha = c(0.01,0.05,0.10,0.20)
beta = c(0.50,0.60,0.70,0.80,0.90)

# nrow and ncol depends on the length of alpha and beta
pwrmx <- matrix(data=NA, nrow=length(alpha), ncol=length(beta))

# iterate over the length so that you can use it to assign back at the correct index in matrix
for (i in 1:length(alpha)){

    for (j in 1:length(beta)){

        # as you are interested in the number n from the power analysis
        pwrmx[i,j] <- (power.prop.test(n=NULL, p1=0.25, p2=0.4, sig.level = alpha[i], power = beta[j]))$n

                             }

                          }

pwrmx
# .        [,1]      [,2]      [,3]      [,4]     [,5]
#[1,] 129.38048 155.72219 186.60552 226.29474 287.6656
#[2,]  74.90845  95.24355 119.70057 151.86886 202.8095
#[3,]  52.75810  70.01993  91.18885 119.50901 165.1130
#[4,]  32.02629  45.74482  63.12283  87.00637 126.4575
0 голосов
/ 01 февраля 2019

Не нужно циклов, вы можете создать функцию для выполнения расчета

func <- function(x, y) power.prop.test(n=NULL, p1=0.25, p2=0.4, sig.level = x, power = y)$n

, а затем использовать outer и применить функцию (func) для каждой комбинации alpha и beta

outer(alpha, beta, Vectorize(func))

#          [,1]      [,2]      [,3]      [,4]     [,5]
#[1,] 129.38048 155.72219 186.60552 226.29474 287.6656
#[2,]  74.90845  95.24355 119.70057 151.86886 202.8095
#[3,]  52.75810  70.01993  91.18885 119.50901 165.1130
#[4,]  32.02629  45.74482  63.12283  87.00637 126.4575
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...