如何进行模拟以显示错误的二分法会导致错误的统计数据?

时间:2018-03-13 19:24:18

标签: r statistics simulation genetics

我正在努力为一篇论文指出,鉴于ADHD症状/自闭症存在于一个范围内,通过将人群分组为受影响或未受影响的人来研究ADHD的遗传因素会降低统计学效力。我也想知道这样做会损失多少电量。

我尝试通过使用正常分布的效果大小的100个二元因子模拟1000个人的身高并将人分组为高或不高并使用逻辑回归,并将其与使用t检验与绝对值进行比较来尝试这样做高度。我只能使用

为一个人做这个
mean.height=170
subject.1.factors=sample(c(1,0), 100, replace=T)

a=rnorm(100)
factors=a-mean(a)
subject.1.factors= sample(c(1,0),100, replace=T)
subject.1.height= sum(subject.1.factors*factors+1)*mean.height/100

但我找不到办法为1000人做这件事并以有用的方式存储数据。有没有办法可以有效地做到这一点?有没有比这更好的方法来实现我的目标?

感谢您花时间阅读我的问题!

编辑:我相信我要找的输出是一个表,每个主题有一行,高度为一列,100个因子中每个因子的1/0状态有其他列。

2 个答案:

答案 0 :(得分:0)

这就是你需要的吗?

mean.height=170

subjects=c()
factors.subj=c()
subject.factors=sample(c(1,0),100, replace=T)
for(i in 1:1000){
  a=rnorm(100)
  factors=a-mean(a)
  subjects[i]= sum(subject.factors*factors+1)*mean.height/100
}
df=cbind(subjects,subject.factors)
hist(subjects);head(df)

答案 1 :(得分:0)

  

X = RNORM(100)

     

生成我正常分布的效果大小

     

因子=样本(c(0,1),1000 * 100,替换= T)

     

随机创建1和0的列表

     

factor.coeffs = x-mean(x)

     

使我的效果的平均值为0(不是必需的步骤)

     

mean.height = 175

     

表示以cms为单位的高度

     

factors.matrix = matrix(因子,nrow = 1000,ncol = 100,byrow = T)

     

创建100(每个因子一个)1000(每个人一个)矩阵

     

impacts.matrix =(sweep(factors.matrix,MARGIN = 2,factor.coeffs,' *'))

     

将1和0更改为对人员身高的影响

     

subject.heights = mean.height-rowSums(impacts.matrix)

     

制作我所有受试者身高的矢量

     

HIST(subject.heights)

     

可视化以确保数据有意义。

     

analysis.matrix = cbind(subject.heights,factors.matrix)

     

组合成单个矩阵我可以在

上运行统计测试

^我使用上面的代码将数据输入到我需要的结构中。我完成分析后,我会更新此答案。抱歉格式化。