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)
结果展示