R-hist函数画图实例

问题描述

考虑一个简单的遗传模型。一个总体中包含相同数量的两种性别:男性与女性。在每一代中,假设男女随机凑对,并生育一男一女两个孩子。这里我们对前一代至后一代的身高高度分布感兴趣。假设两个孩子身高为其父母高度的平均值,那么身高如何随上一代到下一代而变化。

假设当前年代人的身高包含两个变量,m和f,分别表示男性与女性。其中第一代200人,其身高满足总体身高均值为160,标准差为20。

代码实现

hei = data.frame(m = rnorm(100,160,20), f = rnorm(100,160,20))
#生成一个100行的数据框,包含m和f两列服从均值为160,标准差为20的正态分布的数据
next_gen = function(hei){     #定义一个函数
  hei$m = sample(hei$m)       #对上一代的m进行简单随机抽样,模拟男女随机配对
  hei$m = apply(hei, 1, mean) #对配对结果求均值,赋值给m,就是下一代m的身高
  hei$f = hei$m               #f=m
  return(hei)                 #返回下一代的身高
}
opar = par(no. readonly=T)
par(mfrow = c(3,3))
gen = hei
hist(gen$m, main = "Generation 1", xlim = c(120,200), xlab = "Height", col = 'blueviolet')
mtext("Heights by Generation", side = 3, line = 3)
for (i in 2:9) {
  gen = next_gen(gen)
  hist(gen$m, main = paste("Generation", i), xlim = c(120,200), xlab = "Height", col = 'blueviolet')
}
par(opar)

结果展示

 

posted @ 2022-03-30 23:37  Khrushchefox  阅读(155)  评论(0编辑  收藏  举报