我正在编写一个心理学实验,我需要改变每个参与者的刺激顺序。我有一个随机命令我的刺激的函数,然后我的程序读出.txt文件。默认情况下在样本中使用的伪随机算法(如下面的“shuffle”函数所示)是否可以充分地改变现实,预期不会在任何刺激位置或刺激位置模式中产生任何系统偏差实验(4500次试验)?
stimulus <- c("a", "b", "c", "d", "e")
shuffle <- function (x) { as.data.frame(sample((t(x)))) }
shuffle (stimulus)
答案 0 :(得分:6)
我会说是的,你可以用图表表示。如果它是真正随机的,我们会期望在洗牌顺序中每个位置的值均匀分布,所以让我们重复实验并绘制结果图....
# Repeat experiment 10,000 times
res <- replicate( 10000 , shuffle(stimulus) )
out <- do.call( rbind , res )
# Plot
par( mfrow = c( 3 , 2 ) )
for( i in 1:ncol(out)){
hist( out[,i] , main = paste0("Values at position: " , i ) )
}
每个直方图是每个位置的值分布。 5个位置如此5个直方图。每个位置都有可能值的均匀分布,因此我会说您的值以均匀概率(这是sample
的默认值)分配给每个位置。
答案 1 :(得分:4)
R中的随机数生成器非常出色 - 该语言针对的是统计学家。几点。
有关使用的随机数生成器的详细信息,请参阅?RNG
。
使用set.seed
使您的重播可重现
set.seed(1)
您可以将代码简化为:
stimulus = c("a", "b", "c", "d", "e")
data.frame(sh=sample(stimulus))