Попытка написать функцию, которая симулирует одну t-статистику из двух выборок. - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь написать свою собственную функцию, которая симулирует t-stat из двух выборок одинакового размера.

cntrl <- c(8.4,8.1,5.1,7.6,4.7,10.7,5.7,4.1,8.1,6.8)
strv <- c(12.4,15.8,11.7,8.6,12.6,11.1,10.5,7.3,7.2,10.8)

Я поместил cntrl в образец, но куда мне положить strv?

single_rt <- function(size1, size2) {x1 <-sample(x=cntrl, size =size1, replace = TRUE) (mean(x1)-mean(x2))/sqrt((var(x1)/size2) +(var(x2)/size1))}

my_rt <- function(n, size1, size2) {replicate(n=n, expr = single_rt(size1=size1, size2 = size2))}

num_reps <- 10000; N1 <-10; N2 <- 10

t.stats <-my_rt(n=num_reps, size1 = N1, size2 = N2)

Я получаю этот код ошибки

Ошибка в выборке (x = cntrl, size = size1, replace = TRUE) (среднее значение (x1) - mean (x2)): попытка применить не-функцию

1 Ответ

0 голосов
/ 22 мая 2019

Что вы хотите сделать с rnorm?Одна из возможностей:

single_rt <- function(size1, size2){
  x1 <- rnorm(n=size1)
  x2 <- rnorm(n=size2)
  return((mean(x1)-mean(x2))/sqrt((var(x1)/size2) + (var(x2)/size1)))}

my_rt <- function(n, size1, size2, x1, x2){
  replicate(n=n, expr = single_rt(size1=size1, size2 = size2))}
num_reps <- 10000
N1 <-10
N2 <- 10

t.stats <-my_rt(n=num_reps, size1 = N1, size2 = N2)

Если вы внимательно посмотрите на функцию rnorm, она принимает только 3 аргумента, а не вектор.Если вы хотите возмущать вашу выборку шумом, вам следует поступить иначе.

Если вы хотите использовать функцию sample, которую я вам советую, вам следует использовать приведенный ниже код:

single_rt_bis <- function(size1, size2, x1 = x1, x2 = x2){
  x1 <- sample(x=x1, size =size1, replace = TRUE)
  x2 <- sample(x=x2, size =size2, replace = TRUE)
  return((mean(x1)-mean(x2))/sqrt((var(x1)/size2) + (var(x2)/size1)))}


my_rt <- function(n, size1, size2, x1, x2){
  replicate(n=n, expr = single_rt_bis(size1=size1, size2 = size2, x1 = x1, x2 = x2))}

num_reps <- 10000
N1 <-10
N2 <- 10

t.stats <-my_rt(n=num_reps, size1 = N1, size2 = N2, x1 = cntrl, x2 = strv)

На самом деле, похоже, вы хотите использовать boostrap для имитации разных t-тестов с одним и тем же образцом.Что код выше делает.

...