3

我正在编写一个心理学实验,我需要为每个参与者打乱刺激的顺序。我有一个随机排序我的刺激的函数,然后我的程序从 .txt 文件中读取。样本中默认使用的伪随机算法(如下面我的“洗牌”函数所示)是否充分洗牌,以实际预期不会在课程中的任何刺激位置或刺激位置模式中产生任何系统偏差实验(4500 次试验)?

stimulus <- c("a", "b", "c", "d", "e")
shuffle <- function (x) { as.data.frame(sample((t(x)))) } 
shuffle (stimulus)
4

2 回答 2

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)。 在此处输入图像描述

于 2013-08-22T08:50:40.717 回答
4

R 中的随机数生成器非常出色——该语言是针对统计学家的。几点。

  1. 有关?RNG使用的随机数生成器的详细信息,请参阅。

  2. 用于set.seed使您的改组可重现

    set.seed(1)
    
  3. 您可以将代码简化为:

    stimulus = c("a", "b", "c", "d", "e")
    data.frame(sh=sample(stimulus))
    
于 2013-08-22T08:45:13.447 回答