问题描述
我有x<-rnorm (a,1)
和y <- rnorm( a,1)
a表示样本大小,我将使用不同的样本大小,例如(20,30,40,50),然后计算测试的大小(t test或其他任何测试),然后将其与样本量作图。
plot (a,size of the test)
解决方法
这听起来像是我与学生一起做的锻炼,目的是向他们展示自由度对临界T值的影响。
首先,我不会为每个样本大小执行一次,但至少会执行100-1000次。然后,存储所有结果并绘制密度图以可视化T值。也许还包括条形图,以表明5%的显着性与样本大小无关,因为R校正了自由度:
ssizes = c(5,10,20,30,50,100,200)
cols = rainbow(7)
t.list = list()
p.list = list()
n = 1000
for(s in ssizes){
t = c()
sig = 0
for(i in 1:n){
x = rnorm(s,1)
y = rnorm(s,1)
test = t.test(x,y)
t[i] = test$statistic ## Store the t-value
if(test$p.value<0.05){sig=sig+1}
}
t.list[[as.character(s)]]=t
p.list[[as.character(s)]]=sig
}
plot(0,pch="",main="Density Plots",xlim=c(-4,4),ylim=c(0,0.5),xlab="T-Value")
for(i in 1:length(ssizes)){
lines(density(t.list[[i]]),col=cols[i])
}
legend("topleft",as.character(ssizes),lwd=1,col=cols)
barplot(unlist(p.list),main=paste("Number of tests with p<.05 out of ",n,"tests"),xlab="Sample Size")