高尔顿钉板的统计意义—R实现
提到高尔顿,人们总是把他和钉板实验联系在一起,偶尔也会有人提及他是达尔文的表弟。实际上,作为维多利亚时代的人类学家、统计学家、心理学家和遗传学家,同时又是热带探险家、地理学家、发明家、气象学家,高尔顿简直就是一位集大成者。高尔顿钉板是一个关于概率的模型,小球每次下落,将随机的向两边等概率的下落,当有大量的小球都滚下时,最终在钉板下面不同位置收集到的小球数量,将符合服从二项分布,参看下图所示。

一、 高尔顿钉板和二项分布
先来说明共n层(最下方有n+1格)的高尔顿板中小球的分布满足二项分布 $$B(n,\frac{1}{2})$$。

二、 二项分布的正态渐进
正态分布在数据分析中扮演了非常重要的角色,它代表了系统的稳定特征,它是自然环境和人类社会中最常见的数据分布形式。除此之外,在某些情况下,正态分布还能够用来近似其他的数据概率分布类型,比如二项分布和泊松分布,这也说明了正态分布使用的范围和重要性。在一定条件下,正态分布是二项分布的一个良好近似,可用于计算二项分布的概率。由于这样得到的概率只是对二项分布真实概率值的近似,所以正态分布的这种应用被称为二项分布的正态近似。

经过以上铺垫,我们终于进入正题:用正态分布近似二项分布。我们知道,二项分布是离散的分布,正态分布是连续的分布,两者如何联系起来?
这里我们直接讨论一般的二项分布$$B(n,p)$$高尔顿板的情况只需令 $$p=\frac{1}{2}$$ 即可。先看动图:

回顾正态分布曲线的形态,表现为对称的倒置钟形,因此只有二项分布的形态近似对称的倒置钟形,使用正态分布近似二项分布才是合适的。从二项分布的理论及其概率密度函数入手,我们可以很容易地总结出使二项分布近似正态分布的两个条件。“成功”的概率用字母p表示,值越接近0.5,即“成功”结果出现的概率与“失败”概率越接近,二项分布将越对称。如下图所示,保持伯努利试验(一次试验只有两种结果)的次数n不变,随着成功概率p逐渐增加到0.5,二项分布逐渐对称,近似于均值为np、方差为npq的正态分布。对任意“成功”概率p ,无论其距离0.5有多远,随着试验次数n的增加,得到的二项分布与均值为np、方差为npq的正态分布越来越接近。如下图所示,保持“成功”的概率p=0.1不变,分别做伯努利试验次数等于10、25和100的二项分布图,对比后可以发现,二项分布图从最初的右偏分布逐渐对称,当试验次数等于100时,二项分布几乎与正态分布一致。

由于试验次数和“成功”概率都能使二项分布近似于正态分布,那么这两个条件达到什么标准时,二项分布和正态分布才能近似,它们的概率计算结果才能互相替代呢?因为每个分析者对于偏差的接受程度不同,所以对于这个问题,没有一个统一的标准,不过,在数据分析领域,有一个普遍能够接受的最低限度,那就是当np和nq两者的计算结果都大于或等于5时,通过二项分布概率质量函数计算得到的概率值与正态分布概率密度函数积分得到的概率值的误差就小到能够被接受。更严格一点,就是要求np>5且nq>5,两者之间的误差就更小了。

三、高尔顿钉板的R模拟
library(moments)
options(digits = 3)
options(scipen = 200)
par(new=TRUE)
par(mfrow=c(2,3))
for(n in c(1000,2000,5000,8000,10000,30000))
{
d<- NA
for(i in 1:n)
{a=rbinom(20,1,0.7)
b=sum(a)
d=c(d,(b-10))
}
hist(d,breaks =50,xlab ="",main = paste('n = ',n,sep=''))
}

四、总结
高尔顿板实验中,小球每掉落一层,都有可能向左或是向右,这些因素左右这小球最终的落点。同样的,自然界中许多随机现象都有各种各样的干扰因素,影响着一个事件可能的分布,但是在这些因素的叠加影响之下,只要样本数量足够多,这些随机现象往往就会遵循正态分布。这也是一种数学之美吧!这也是中心极限定理在生活中重要的应用。
参考文献
1.(高尔顿板:从混乱到秩序 )[https://www.sohu.com/a/234859732_616676]
2.(统计学中统计规律 )[https://www.wenmi.com/article/pu8xw704z9ru.html]
3.(为什么高尔顿板可以模拟正态分布?)[https://zhuanlan.zhihu.com/p/518115021]
4.(用Python模拟高尔顿钉板实验 )[https://blog.csdn.net/xufive/article/details/121115824]
高尔顿钉板的统计意义—R实现的更多相关文章
- SLAM的数学基础(3):几种常见的概率分布的实现及验证。
分布,在计算机学科里一般是指概率分布,是概率论的基本概念之一.分布反映的是随机或某个系统中的某个变量,它的取值的范围和规律. 常见的分布有:二项分布.泊松分布.正态分布.指数分布等,下面对它们进行一一 ...
- 统计计算与R语言的资料汇总(截止2016年12月)
本文在Creative Commons许可证下发布. 在fedora Linux上断断续续使用R语言过了9年后,发现R语言在国内用的人逐渐多了起来.由于工作原因,直到今年暑假一个赴京工作的机会与一位统 ...
- python中\r的意义及用法
\r的意义 \r 表示将光标的位置回退到本行的开头位置 \b表示将光标的位置回退一位 在python里print会默认进行换行,可以通过修改参数让其不换行 (1) python2中可以在print语句 ...
- sparklyr包--实现R与Spark接口
1.sparklyr包简介 Rstudio公司发布的sparklyr包具有以下几个功能: 实现R与Spark的连接: sparklyr包提供了一个完整的dplyr后端,可筛选并聚合Spark数据集,接 ...
- 数据分析与R语言
数据结构 创建向量和矩阵 函数c(), length(), mode(), rbind(), cbind() 求平均值,和,连乘,最值,方差,标准差 函数mean(), sum(), min(), m ...
- R与数据分析旧笔记(十八完结) 因子分析
因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...
- R与数据分析旧笔记(十一)数据挖掘初步
PART 1 PART 1 传统回归模型的困难 1.为什么一定是线性的?或某种非线性模型? 2.过分依赖于分析者的经验 3.对于非连续的离散数据难以处理 网格方法 <Science>上的文 ...
- 写一个程序,统计自己C语言共写了多少行代码,Github基本操作
前言 在上一篇博客中,本人提到了自己的文件操作可以说是几乎没用过.现在想想,这也算是只在OJ上做题的一个弊端吧.虽然通过OJ做题是一个学习代码好手段,但其他方面也要多多涉猎才好,而不是说OJ用不到文件 ...
- sparklyr包:实现Spark与R的接口
日前,Rstudio公司发布了sparklyr包.该包具有以下几个功能: 实现R与Spark的连接—sparklyr包提供了一个完整的dplyr后端 筛选并聚合Spark数据集,接着在R中实现分析与可 ...
- sparklyr包:实现Spark与R的接口+sparklyr 0.5
本文转载于雪晴数据网 相关内容: sparklyr包:实现Spark与R的接口,会用dplyr就能玩Spark Sparklyr与Docker的推荐系统实战 R语言︱H2o深度学习的一些R语言实践-- ...
随机推荐
- AX2012 快速清空整个log表数据
如果当一个log表的数据非常大的时又需要清理时,如果允许删除全部数据,在AX里,可以 将log表的TableType调整为[TempDB], 保存同步后再将TableType设置回[Regular]即 ...
- 学Java的第5天,今天做了个双色球系统
今天是学JAVA的第5天,刚刚把方法学完,然后就在这做黑马的题. 用了一个多小时时间,把他的 这些题都做完了 但是最后一道题,这个双色球系统我感觉挺有意思的 我看到这个题,分析后感觉需要4种方法: 1 ...
- 在NCBI中下载SRA数据
目前,在NCBI中下载SRA数据主要有三种方式: 利用Aspera工具下载. 利用SRA Toolkit下载. 利用wget命令直接下载 第三种最为方便.其中的关键是得到下载数据的链接,即ftp的地址 ...
- Call API URL连接拼参数的方法
void TestNTFD() { try { try { ...
- Java的由来
Java 发展史 1.1.起源 20 世纪 90 年代,单片式计算机系统诞生,单片式计算机系统不仅廉价,而且功能强大,使用它 可以大幅度提升消费性电子产品的智能化程度. SUN 公司为了抢占市场先机, ...
- PHP实现斐波那契数列(递归 + 非递归)实现
非递归写法:function fbnq($n){ //传入数列中数字的个数 if($n <= 0){ return 0; } $array[1] = $array ...
- NOI 顺序查找——查找特定的值
描述 在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置. 输入 第一行包含一个正整数n,表示序列中元素个数.1 <= n <= 10000.第二行包含n个整数,依次给出序 ...
- Kicad使用技巧--原理图复用
平时主要使用AD.kicad和立创eda,最近在琢磨一下各个软件的使用技巧,提升一下画图效率,首先想到的就是原理图复用,我想象中的原理图复用应该像AutoCAD的图块功能一样. 这次先说kicad,摸 ...
- 1007.Django模型基础02
一.常用的查询 常用的查询方法(注:User为app项目): 获取所有的记录: rs = User.objects.all() 获取第一条数据:rs = User.objects.first() 获取 ...
- C# IDataReader转换为Json
1 /// <summary> 2 /// IDataReader转换为Json 3 /// </summary> 4 /// <param name="dat ...