我正在尝试编写自己的函数,该函数可从两个大小相等的样本中模拟t统计量。
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)):尝试应用非功能
答案 0 :(得分:0)
您想对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检验。上面的代码可以做到。