一种简单的方法来模拟具有指定均值和范围的 "survey data",或具有标准化均值差的两个整数样本

A simple way to simulate "survey data" with a specified mean and range, or two samples of whole numbers with a standardised mean difference

我想模拟调查数据 - 想想人们在 1(强烈不同意)到 7(强烈同意)的范围内做出回应的调查。

我也希望能够指定模拟样本的平均值。例如,我想模拟 1 到 7 之间的 100 个数字,均值为 4,SD 为 1。

然后我想再模​​拟 100 个介于 1 和 7 之间的数字,均值为 3,标准差为 1。

这样,我可以计算出 d = 1.00 的效应大小。我将使用此数据进行课堂演示。

rnorm() 允许我指定平均值,但不能指定界限。

runif() 允许我指定范围而不是平均值。

sample() 允许我指定范围而不是平均值。

round() 应用于 rnorm() 得到整数,但有时会生成 0 或 8(例如 1-7 范围之外的数字)。是的,我可以重新编码,但这会调整我的效果大小:

round(rnorm(200, 2, 1))

有没有办法生成 具有指定均值的 1 到 7 之间的整数 或者 具有指定平均差和范围的两个样本?

如何将 truncnorm::truncnorm() 的结果四舍五入?

library(truncnorm)
set.seed(1234)
u <- round(rtruncnorm(10000, a=1, b=7, mean=3, sd=1))
summary(u)

Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   2.000   3.000   3.054   4.000   7.000