我的随机播放功能有多随机?

时间:2013-08-22 08:39:38

标签: r random

我正在编写一个心理学实验,我需要改变每个参与者的刺激顺序。我有一个随机命令我的刺激的函数,然后我的程序读出.txt文件。默认情况下在样本中使用的伪随机算法(如下面的“shuffle”函数所示)是否可以充分地改变现实,预期不会在任何刺激位置或刺激位置模式中产生任何系统偏差实验(4500次试验)?

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

2 个答案:

答案 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的默认值)分配给每个位置。 enter image description here

答案 1 :(得分:4)

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

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

  2. 使用set.seed使您的重播可重现

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

    stimulus = c("a", "b", "c", "d", "e")
    data.frame(sh=sample(stimulus))