谈谈机会过程中的平均数律与机会变异

基本概念

下面列出的几个概念有助于理解本文所讨论的主题。

机会过程

书中没有给出机会过程的显式定义,我用搜索引擎也没有找到理想的回答:

175424_Wk3C_1047422.png

但是书中提供了丰富的例子来说明机会过程,括号内是本人为了信息完整性附加的说明:

南非数学家 John Kerrich ... 被拘留在 Jutland 集中营度过战争(二战)的余下岁月,为了消磨时间他进行了一系列概率论的试验,一个试验的内容是抛一枚硬币10000次(并统计获得的头像数)。

轮盘赌输或赢的金额,旋转轮盘是一个机会过程。

在选民的一个随机样本中民主党人的比率,一个机会过程被用于抽取样本。

根据这些例子,机会过程应该是指一系列独立重复的随机试验,并且机会过程可以被抽象为盒子模型。

盒子模型

每次抛硬币可以类比成从一个盒子中有放回地抽卡片,这个盒子里只有两张卡片,上面分别写着 0 和 1。

184934_7am1_1047422.png

如果用卡片 1 代表头像,则10000次抽取后,所有取得的卡片数字的总和就等于在抛硬币10000次后获得的头像数。

也即,从一个盒子中有放回地抽取标有数字的卡片就是一个机会过程,而我们关注的随机变量是卡片上数字的和。

平均数律

每次从上面的盒子抽取卡片,抽到 0 和 1 的概率分别是 50%。所以10000次抽取后,我们期望获得5000张左右的 1 和5000张左右的 0,二者之和等于10000。这就是平均数律,它告诉人们机会过程的结果是一个随机变量,但它不会偏离平均值太远。

机会变异(机会误差)

机会过程的结果相对于平均值的偏移称为机会误差。

机会误差可以是绝对误差:

10000次抛硬币试验获得的头像总数 - 5000

也可以是相对误差:

absolute(10000次抛硬币试验获得的头像总数 - 5000)/ 5000

机会变异告诉我们:

当抛的次数增加时,头像数与抛的次数的一半之间的差变得较大,但是头像的百分比与50%之间的差异却变得较小。

也即,随着试验次数增加,绝对误差有增大的趋势,而相对误差有减小的趋势。

(机会过程的)期望值

随机放回地从盒子中抽取所得数之和的期望值等于(抽取次数)×(盒平均)

假如有这样一个盒子:

210659_TU5J_1047422.png

它的盒平均是:

(1+1+3+5)/ 4 = 2.5

如果做100次抽取,我们期望卡片和为:

100 × 2.5 = 250 

左右。

机会过程的期望值其实就是之前提到的平均值。

(机会过程的)标准误差SE

平均数律与机会变异定性地描述了机会误差与试验次数之间的关系。而标准误差可以定量地衡量机会误差。

一个和可能在它的期望值附近,但是偏离一个其大小与标准误差相似的机会误差。

在从装有标上数字的卡片的盒中作随机有放回的抽取时,抽得数之和的标准误差是:

                SquareRoot ( 抽取次数 ) ×(盒子的SD)

这里的机会误差是绝对误差,SD是盒子中卡片数字的标准差,显示了数字的离散程度。

可以看出机会误差随着抽取次数的增加而增加,但是增加的速度慢于抽取次数;盒子中卡片的数字差异(SD)越大,机会误差就越大。后者不难理解:

212606_MFvj_1047422.png

这两个盒子具有相同的盒平均(等于5),左边的盒子SD=0,无论抽取多少次都没有机会误差。右边盒子SD>0,它具有机会变异的可能。


程序验证

给出如下盒子模型:

232145_930x_1047422.png

有3种抽取方案,分别是抽取25次、100次和500次,每种方案执行100次。程序和结果如下:

#include <time.h>
#include <math.h>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

#define random(x) ( rand()%x )

//计算盒平均
double getBoxExpectation(double cards[], int cardNum)
{
	double boxExpectation = 0.0;

	for (int i = 0; i < cardNum; i++)
	{
		boxExpectation += cards[i];
	}

	boxExpectation /= cardNum;

	return boxExpectation;
}

//计算卡片标准差
double getBoxSD(double avg, double cards[], int cardNum)
{
	double boxSD = 0.0;

	for (int i = 0; i < cardNum; i++)
	{
		boxSD += pow((avg-cards[i]), 2);
	}

	boxSD /= cardNum;

	boxSD = sqrt(boxSD);

	return boxSD;
}


void main()
{
	int cardNum = 5;
	double cards[] = { 0, 2, 3, 4, 6 };
	double boxExpectation = getBoxExpectation(cards, cardNum);
	double boxSD = getBoxSD(boxExpectation, cards, cardNum);

	int trialTimes = 500;
	string dataFile = "Box_Experiment_Data_500.txt";

	int planTimes = 100;
	double planExpectation = boxExpectation * trialTimes;
	double planStdErr = sqrt(trialTimes)*boxSD;
	double planAvgErr = 0;	
	

	ofstream fout(dataFile);
	fout << "方案执行数\t和" << endl;

	srand((int)time(0));

	for ( int plan = 0; plan < planTimes; plan++ )
	{		
		int sum = 0;		

		for (int trial = 0; trial < trialTimes; trial++)
		{			
			int cardIndex = random(cardNum);
			int card = cards[cardIndex];

			sum += card;
		}

		fout << (plan + 1) << "\t" << sum << endl;

		planAvgErr += abs(sum - planExpectation);
	}

	planAvgErr /= planTimes;

	fout << "\n期望" << "\t" << planExpectation << endl;
	fout << "标准误差" << "\t" << planStdErr << endl;
	fout << "平均机会误差" << "\t" << planAvgErr << endl;	
	fout << "\t" << (planAvgErr / planExpectation)*100 << '%'<<endl;
}


110337_zUl0_1047422.gif

盒平均 = (0+2+3+4+6)/ 5 = 3

所以三个方案的期望分别是:3*25=75,  3*100=300,  3*500=1500

卡片标准差 = 2

所以三个方案的标准误差分别是:squareRoot(25)*2=10,  squareRoot(100)*2=20,  squareRoot(500)*2=44.72

最后分别求出了3种方案平均机会误差的绝对值和相对值。

从表格中可以看出,随着试验次数的增加,机会误差发生变异,变异的趋势是:

绝对误差增大,相对误差减小。

并且绝对误差在标准误差附近。


补充

  1. 【标准差SD】 和 【标准误差SE】 不同。前者衡量一系列数字的离散程度,后者衡量机会过程中的机会变异。

  2. 机会过程不是随机过程,因为机会过程的试验之间不具有时间相关性。举例而言,在一个盒子中有放回地抽取100次与同时在100个相同的盒子中抽取一次没有任何区别。

  3. 补偿对于平均数律不起作用。举例而言,抛了10次硬币之后获得了10次正面,但平均数律并没有对第11次抛掷获得反面的概率进行补偿,它依然是50%。

  4. 当试验次数充分大时,可以利用正态曲线计算机会过程之和落在一定范围内的概率。对于标准正态分布,随机变量落在 [-SD, +SD] 范围内的概率是68%,[-2SD, +2SD] 范围内的概率是95%。类比上面的第二个方案,期望值是300,标准误差是20,对应的1个标准误差范围是 [280, 320],2个标准误差范围是 [260, 340]。经过统计,落在 [280, 320] 内的方案执行数是72个,接近68%的比例;落在 [260, 340] 内的方案执行数是96个,接近95%的比例。

转载于:https://my.oschina.net/findbill/blog/499016

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值