[金融]决策科学-(零)数理统计

P粉084495128
发布: 2025-07-29 09:29:00
原创
1072人浏览过
本文围绕概率、统计学和统计学习方法展开。概率部分介绍多种随机变量及分布、期望等概念;统计学涵盖假设检验、参数估计等;还以牛顿法为例讲解统计学习,涉及相关原理与计算过程,展现了统计领域的基础内容与应用方法。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

[金融]决策科学-(零)数理统计 - php中文网

0.1 概率

  • 0.1.1 抛硬币:伯努利随机变量
  • 0.1.2 掷飞镖:均匀随机变量
  • 0.1.3 均匀分布和伪随机数
  • 0.1.4 非离散型、非连续型随机变量
  • 0.1.5 期望和标准偏差
  • 0.1.6 独立概率、边际概率和条件概率
  • 0.1.7 重尾分布
  • 0.1.8 二项分布
  • 0.1.9 泊松分布
  • 0.1.A 正态分布
  • 0.1.B 多元正态分布
  • 0.1.C 指数分布
  • 0.1.D 对数正态分布
  • 0.1.E 熵

0.1.1 抛硬币:伯努利随机变量

最简单的概率模型就是抛硬币,假设掷到正面的概率是 pp,则掷反面的概率就是 1p1−p,从概率的角度来说,抛硬币就是“伯努利随机变量”,表示为 Bernoulli(p)Bernoulli(p)。 假设正面概率为0.7,反面概率为0.3,这样的分配称为“概率质量函数”。 在很多情况下,有些支出与随机的不同收入相关。例如每次抛出正面给5元,反面赔2元,那平均支出 CC就是 E[C]=0.7×5+0.3×(2)=¥2.9E[C]=0.7×5+0.3×(−2)=¥2.9 对这个结果的正确解释是,如果抛硬币 NN次,其中 NN是一个非常大的数字,那将赚取 2.9N2.9N元。

在随机事件的大量重复出现中,往往呈现几乎必然的规律,这个规律就是大数定律。 通俗地说,这个定理就是,在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率。偶然中包含着某种必然。

以下模拟之:

# https://github.com/sijichun/MathStatsCode/blob/master/notebook_python/LLN_CLT.ipynbimport numpy as npfrom numpy import random as nprd

True_P=0.5def sampling(N):
    ## 产生Bernouli样本
    x=nprd.rand(N)<True_P    return x

M=10000 #模拟次数xbar=np.zeros(M)
N=np.array([i+1 for i in range(M)])
x=sampling(M)for i in range(M):    if i==0:
        xbar[i]=x[i]    else:
        xbar[i]=(x[i]+xbar[i-1]*i)/(i+1)## 导入matplotlibimport matplotlib.pyplot as plt 
## 使图形直接插入到jupyter中%matplotlib inline# 设定图像大小plt.rcParams['figure.figsize'] = (10.0, 8.0)

plt.plot(N,xbar,label=r'$ar{x}$',color='pink') ## xbarxtrue=np.ones(M)*True_P
plt.plot(N,xtrue,label=r'$0.5$',color='black') ## true xbarplt.xlabel('N')
plt.ylabel(r'$ar{x}$')
plt.legend(loc='upper right', frameon=True)
plt.show() ## 画图
登录后复制

[金融]决策科学-(零)数理统计 - php中文网

简单来说,大数定律讲的是,样本容量极大时,样本的均值必然趋近于总体的期望。

0.1.2 掷飞镖:均匀随机变量

伯努利随机变量是离散型随机变量的最简单类型。与此相反的随机变量被称为“连续型”随机变量,可在数值范围内取任意值。 最简单的连续型随机变量是均匀随机变量,有时称为 Uniform(a,b)Uniform(a,b),  Uniform(a,b)Uniform(a,b)始终在数字 aa和 bb之间,也同样可能为取值范围内的任意位置。 对于离散随机变量,概率质量函数为每个可能的结果分配一个有限的概率。对于连续随机变量,其输出具体值的概率几乎为0,但其输出在特定区间的概率则大得多。

0.1.3 均匀分布和伪随机数

Uniform(0,1)Uniform(0,1)分布是最基本的概率分布。它是最简单的一个,但也是在数学理论和计算实践中构建更复杂概率分布的基础。例如:

  • 如果要模拟 Bernoulli(p)Bernoulli(p)随机变量 BB,可以通过模拟 Uniform(0,1)Uniform(0,1)分布中的随机值 uu来实现。如果 u<pu<p,则设置 BB=正面,否则设置 BB=反面。
  • 如果要模拟加权掷骰子,将[0.0, 1.0]取值范围分成6个区域,其中第 ii个区域的大小与骰子投出第 ii面的概率相同。然后再次从 Uniform(0,1)Uniform(0,1)分布中绘制 uu值。掷出的骰子即会落入 uu的 [0.0, 1.0]区间。
  • 如果要模拟指数随机变量,从 Uniform(0,1)Uniform(0,1)中绘制 uu,然后取 log(u)log(u)的倒数。

但是,技术上讲,用计算机程序模拟随机数是不可行的。它们是确定性的机器,只能遵循预定的规则——没有用于翻转硬币的子程序。一般会用“伪随机数”即某种固定生成算法来实现,比如早期的线性同余法。 当然伪随机数也有优点,可以在一开始就手动设置好部分参数,也被称为“种子/seed”。这样做可以使程序变得更加完全确定,并且可以在下次运行中精确地重现相同的结果。

如:

>>> import random>>> random.random()0.7006269308810754>>> random.random()0.4896124288257575>>> random.seed(10086)>>> random.random()0.043562757723543566>>> random.random()0.7994528936212764>>> random.seed(10086)>>> random.random()0.043562757723543566
登录后复制

同一种子10086时,输出随机数相同。

0.1.4 非离散型、非连续型随机变量

从数学角度而言,随机变量既不离散也不连续。例如以种植树木的高度为例,在给定的时间点中,其中不发芽的一部分高度为0,这是在该高度下的有限概率质量。而那些发芽树木的高度则为在一定范围内的任意值。

import numpy as npimport pandas as pdimport matplotlib.pyplot as plt

z = np.zeros(1000)
x = np.random.exponential(size=1000)
D = pd.Series(data)
X = pd.Series(x)

(D>0).value_counts().rename({True: ">0", False: "<0"}).plot(kind="pie")
X.hist(bins=100)
登录后复制

[金融]决策科学-(零)数理统计 - php中文网

[金融]决策科学-(零)数理统计 - php中文网

0.1.5 期望和标准偏差

通常使用大写字母 XX表示随机变量,小写字母 xx表示变量的特定值。 如果写作 E[X]E[X]是指随机变量 XX的平均值。这里的 EE是指期望值,是均值的另一种形式。

  • 不连续随机变量的预期值定义为:

E[X]=iipiE[X]=∑iipi

  • 连续随机变量的预期值定义为:

E[X]=xfx(x)dxE[X]=∫xfx(x)dx 通常由 μxμx表示随机变量 XX的期望值,根据期望值定义某个事物的关键例子是方差和标准偏差。 XX的方差定义为: var[X]=E[Xσx2]var[X]=E[∣X−σx∣2] 标准差是方差的二次方根: σx=var[X]σx=var[X] 标准差可以用来粗略衡量X与 μxμx的距离。

0.1.6 独立概率、边际概率和条件概率

通常需要同时考虑两个随机变量 XX和 YY。如果已知一个变量,能以此了解另一个变量吗? 具体来说,假设变量是离散随机变量,令 pxypxy表示 X=xX=x和 Y=yY=y的概率。 XX的边际概率为 Pr[X=x]=px=yPxyPr[X=x]=px=∑yPxy 如果重视一个随机变量而忽略另一个,那么就是概率分布。 另一方面,由已知的 XX值推断 YY的情况,那么就可以在给定的 X=xX=x时,得到每个 yy的条件概率: Pr[Y=yX=x]=PyX=x=pxygpxyPr[Y=y∣X=x]=Py∣X=x=∑gpxypxy 条件概率在贝叶斯统计中起着重要的作用。 给定 X=xX=x,通常想知道 YY的期望值,表达如下: E[YX=x]E[Y∣X=x] 这些关于 YY的统计值与 XX的取值条件相关, XX和 YY的相关性定义为: Corr[X,Y]=E[(Xμx)(Yμy)]σxσyCorr[X,Y]=σxσyE[(X−μx)(Y−μy)] 这是随机变量之间的线性关系的度量,其形式为 Y=mX+bY=mX+b。 如果已知随机变量 XX和 YY中的任一个,并不能获取另一个随机变量的相关信息,则 XX和 YY是独立随机变量。在数学上意味着: pxy=pxpypxy=pxpy

值得注意的是,独立性是一个非常强大的标准,这比仅仅说相关性为0要强得多。

0.1.7 重尾分布

关于概率分布最重要的理解之一就是“重尾”。直观地说,这是指最大值出现的概率。身高就是非重尾的一个很好的例子,因为没有人身高能超过10米。然而净资产是重尾分布,因为偶尔会出现比尔·盖茨。 了解重尾分布很重要,这是因为当事情为重尾分布时,通常用概率分布做的事情都不起作用。 举例,重尾分布的平均值很难估计,如果房间里有100个人,那么这些人的平均净资产可能会有很大的差异,像一个千万富翁就可能极大提高平均净资产。 以下通过帕累托分布中抽取重尾序列,模拟 NN次,可见平均值趋涨:

import numpy as npimport matplotlib.pyplot as plt
np.random.seed(10)
N = 1000sums, means = 0, []for i in range(1, N):
    sums += np.random.pareto(1)
    means.append(sums/i)

plt.plot(means)
登录后复制

[金融]决策科学-(零)数理统计 - php中文网

0.1.8 二项分布

二项式( nn, pp) 的分布是抛硬币 nn次得到正面的次数,其中每次抛掷正面的独立概率为 pp。 即 nn次抛掷硬币得到 kk次正面的特定序列概率为 pk(1p)nkpk(1−p)n−k。 如何在 nn次投掷硬币中抛出 kk次正面是一个组合问题,确切公式表示为 kn⟮kn⟯,即从 nn个元素中选择 kk个元素 kn=n!k!(nk)!⟮kn⟯=k!(n−k)!n! 以下模拟之:

import numpy as npimport pandas as pd

sample = np.random.binomial(200, 0.3)print(sample)

N = 100sample = []for _ in range(N):
    sample.append(np.random.binomial(1, 0.3))
pd.value_counts(sample)"""
55
0    73
1    27
dtype: int64
"""
登录后复制

0.1.9 泊松分布

泊松分布用于模拟可能发生许多事件的系统,并且所有事件都相互独立,但平均而言,只有少数时间会发生。一个很好的例子就是会有多少人在某一天访问一个网站,世界上有数十亿人可以访问这个网址,但平均而言,也许只有几百人会访问这个网站。 日常生活中,大量事件是有固定频率的,如:

  • 某医院平均每小时出生3个婴儿
  • 某公司平均每10分钟接到1个电话
  • 某超市平均每天销售4包xx牌奶粉
  • 某网站平均每分钟有2次访问

它们的特点就是,我们可以预估这些事件的总数,但是没法知道具体的发生时间。已知平均每小时出生3个婴儿,请问下一个小时,会出生几个?有可能一下子出生6个,也有可能一个都不出生。这是我们没法知道的。 泊松分布就是描述某段时间内,事件具体的发生概率。

假设采用二项式( nn, pp)分布。将 nn设置得非常大,将 pp设置得足够小,则 np=λnp=λ 式中, λλ是固定常数。 在使得 nn大而 pp小同时 λλ不变的约束下,二项分布将收敛于泊松分布。概率质量函数由下式给出: pk=eλλkk!pk=e−λk!λk 加入时间维度 tt,P(N(t)=n)=eλt(λt)kk!P(N(t)=n)=e−λtk!(λt)k 已知1小时内出生3个婴儿的概率,就表示为 P(N(1)=3)P(N(1)=3),那么接下来两个小时,一个婴儿都不出生的概率是0.25%,基本不可能发生。因为: P(N(2)=0)=(3×2)0e3×20!0.0025P(N(2)=0)=0!(3×2)0e−3×2≈0.0025 接下来一个小时,至少出生两个婴儿的概率是80%:

egin{align} P(N(1)ge2) &= 1-P(N(1)=1)-P(N(1)=0) \ &= 1 - rac{(3 imes1)^1e^{-3 imes1}}{1!} - rac{(3 imes1)^0e^{-3 imes1}}{0!}\ &= 1 - 3e^{-3} - e^{-3} \ &= 1 - 4e^{-3} \ &pprox 0.8009 end{align}

[金融]决策科学-(零)数理统计 - php中文网

以下模拟之:

import numpy as npimport pandas as pd

sample = np.random.poisson(lam=5, size=5)print(sample)

N = 100sample = []for _ in range(N):
    sample.append(np.random.poisson(5))
pd.value_counts(sample)"""
[9 4 5 5 4]
4     22
3     15
6     14
5     14
7      9
2      9
10     6
8      6
9      2
1      2
0      1
dtype: int64
"""
登录后复制

0.1.A 正态分布

正态分布是非常重要的一种概率分布,也称为高斯分布。它是典型的钟形曲线,其概率密度函数: f(x)=12πσ2e(xμ)/2σ2f(x)=2πσ21e−(x−μ)/2σ2 式中, μμ是其平均值, σσ是标准偏差。 这种正态分布通常称为 N(μ,σ2)N(μ,σ2)。 正态分布最重要的性质是其概率密度紧密聚集在均值附近,尾巴较小,并且不大可能会出现大量异常值。出于这个原因,简单的用正态分布来拟合数据可能会产生严重问题。通常在进行曲线拟合之前,识别并移除主要异常值是常用方法。

[金融]决策科学-(零)数理统计 - php中文网

从理论上,正态分布被作为最有名的概率分布,是因为如果有足够多的时间采样并对结果进行平均,许多分布将收敛于正态分布。这适用于二项分布、泊松分布以及任何可能遇到的其他分布。从技术上讲,任何一个分布的平均值和标准偏差都是有限的。 这被归结于“中心极限定理”中:

中心极限定理,设 XX是具有有限的均值 μμ和标准差 σσ的随机变量。令 X1X1, X2X2,..., XnXn是 XX的独立样本序列。然后当 nn趋向于无穷大时: n1nXiμN(0,σ2)n⟮n1∑Xi−μ⟯→N(0,σ2)

它是概率论中最重要的一类定理,有广泛的实际应用背景。在自然界与生产中,一些现象受到许多相互独立的随机因素的影响,如果每个因素所产生的影响都很微小时,总的影响可以看作是服从正态分布的。中心极限定理就是从数学上证明了这一现象。最早的中心极限定理是讨论重点,伯努利试验中,事件A出现的次数渐近于正态分布的问题。 以下模拟之:

# https://github.com/sijichun/MathStatsCode/blob/master/notebook_python/LLN_CLT.ipynbfrom numpy import random as nprddef sampling(N):
    ## 产生一组样本,以0.5的概率为z+3,0.5的概率为z-3,其中z~N(0,1)
    d = nprd.rand(N)<0.5
    z = nprd.randn(N)
    x = np.array([z[i]+3 if d[i] else z[i]-3 for i in range(N)])    return x

N = [2,3,4,10,100,1000] # sample sizeM = 2000MEANS = []for n in N:
    mean_x = np.zeros(M)    for i in range(M):
        x = sampling(n)
        mean_x[i] = np.mean(x)/np.sqrt(10/n) ## 标准化,因为var(x)=10
    MEANS.append(mean_x)## 导入matplotlibimport matplotlib.pyplot as pltimport matplotlib.mlab as mlab## 使图形直接插入到jupyter中%matplotlib inline# 设定图像大小plt.rcParams['figure.figsize'] = (10.0, 8.0)

x = sampling(1000)
plt.xlabel('x')
plt.ylabel('Density')
plt.title('Histogram of Mixed Normal')
plt.hist(x, bins=30, normed=1) ## histgramplt.show() ## 画图## 均值ax1 = plt.subplot(2,3,1)
ax2 = plt.subplot(2,3,2)
ax3 = plt.subplot(2,3,3)
ax4 = plt.subplot(2,3,4)
ax5 = plt.subplot(2,3,5)
ax6 = plt.subplot(2,3,6)## normal densityx = np.linspace(-3,3,100)
d = [1.0/np.sqrt(2*np.pi)*np.exp(-i**2/2) for i in x]def plot_density(ax,data,N):
    ax.hist(data, bins=30, normed=1) ## histgram
    ax.plot(x, d)
    ax.set_title(r'Histogram of $ar{x}$:N=%d' % N)

plot_density(ax1,MEANS[0],N[0])
plot_density(ax2,MEANS[1],N[1])
plot_density(ax3,MEANS[2],N[2])
plot_density(ax4,MEANS[3],N[3])
plot_density(ax5,MEANS[4],N[4])
plot_density(ax6,MEANS[5],N[5])

plt.show() ## 画图
登录后复制

[金融]决策科学-(零)数理统计 - php中文网

简单来说,中心极限定理讲的是,样本容量极大时,样本均值的抽样分布趋近于正态分布。这和样本所属的总体的分布的类型无关,样本所属总体的分布可以是正态分布,也可以不是。

0.1.B 多元正态分布

如果我们以显著的方式推广上述分布变量到更高维度,如正态分布,正态分布可以定义任意维度dd。密度函数类似于一个山丘,它在分布的平均值处达到峰值,并且总体呈现为椭圆形。

[金融]决策科学-(零)数理统计 - php中文网

应该注意到,椭圆体可以向任意方向伸展,不必沿着某一个轴伸展。

0.1.C 指数分布

指数分布在其模拟某些事件发生的时间或事件之间的时间长度时最有用。比方说,对于进入商店的人,每个时刻人们走进商店的概率是一个较小的固定值,并且每个时刻都是相互独立的。在这种情况下,事件之间的时间量将呈指数分布。 指数分布是事件的时间间隔的概率。

  • 婴儿出生的时间间隔
  • 来电的时间间隔
  • 奶粉销售的时间间隔
  • 网站访问的时间间隔

指数分布由其平均值 θθ(事件之间的平均时间)进行参数化。有时会使用 λ=1/θλ=1/θ(事件发生的平均速率)对其进行参数化,其概率密度函数:

f(x) = \left \{\begin{array}{rcl}\frac{1}{\theta}e^{-x/\theta} & & {x\ge0}\\0 & & {other}\\\end{array} \right.

[金融]决策科学-(零)数理统计 - php中文网

指数分布的公式可以从泊松分布推断出来,引用上例, 如果下一个婴儿要间隔时间 t ,就等同于 t 之内没有任何婴儿出生。

egin{align} P(X > t) &= P(N(t)=0) = rac{(lambda t)^0e^{-lambda t}}{0!}\ &= e^{-lambda t} end{align}

[金融]决策科学-(零)数理统计 - php中文网

反过来,事件在时间 t 之内发生的概率,就是1减去上面的值。 P(Xt)=1P(X>t)=1eλtP(X≤t)=1−P(X>t)=1−e−λt 接下来15分钟,会有婴儿出生的概率是52.76%

egin{align} P(X le 0.25 ) &= 1 - e^{-3 imes0.25}\ &pprox 0.5276 end{align}

[金融]决策科学-(零)数理统计 - php中文网

接下来的15分钟到30分钟,会有婴儿出生的概率是24.92%

egin{align} P(0.25 le X le 0.5) &= P(X le 0.5) - P(X le 0.25)\ &= (1-e^{-3 imes0.5})-(1-e^{-3 imes0.25}) \ &= e^{-0.75} - e^{-1.5} \ &pprox 0.2492 end{align}

[金融]决策科学-(零)数理统计 - php中文网

以下模拟之:

import numpy as npimport pandas as pd

sample = np.random.exponential(10)print(sample)

N = 10sample = []for _ in range(N):
    sample.append(np.random.exponential(1))
pd.value_counts(sample)"""
34.293011008718764
1.426454    1
0.205591    1
0.119978    1
0.404349    1
0.220207    1
0.463974    1
0.495403    1
0.301081    1
2.966221    1
0.009234    1
dtype: int64
"""
登录后复制

在很多应用中,指数分布的关键属性是“无记忆”。无论等待事件发生的时间有多久,剩余的等待时间仍然遵循相同的指数分布。一个事件在下一个时刻是否发生,与之前已发生的其他时间无关。 指数分布的无记忆特性通常被认为是重尾分布与非重尾分布的分界线。如果已经等待了一个事件发生的时间为 xx,那么期望等待的时间比刚开始的时间长还是短呢?指数随机变量不会有任何结果。相比之下,20岁的人可能倾向于再等20多年,但90岁的人可能不会。因此年龄并不是重尾的。街上随机的一个人不太可能是百万富翁,但是如果碰巧挑选到的人都至少有80万元,那么百万富翁的可能性就大很多。因此,净资产是重尾的。

AI大学堂
AI大学堂

科大讯飞打造的AI学习平台

AI大学堂87
查看详情 AI大学堂

0.1.D 对数正态分布

重尾分布是对数正态分布,对其理解和模拟很简单。同时,对数正态分布的平均值和标准差都是有限的。对于所有现实世界的现象都是如此。 该分布中有一个明显的峰值,且峰值大于0,峰值的左侧迅速下降,在 x=0x=0时变为0.0,在右边逐渐变窄,会使其有规律地出现大的异常值。对数正态分布最好这样考虑,从正态( μμ, σ2σ2)中抽取一个 xx值,则 exex是对数正态分布的。 以下模拟之:

import numpy as npimport pandas as pd

sample = np.random.lognormal(1, 2)print(sample)

N = 10sample = []for _ in range(N):
    sample.append(np.random.lognormal(1, 2))
pd.value_counts(sample)"""
18.761595456554964
0.232312     1
9.743775     1
18.472365    1
21.047856    1
61.887021    1
13.400393    1
37.689687    1
5.035124     1
0.026245     1
0.156932     1
dtype: int64
"""
登录后复制

这就是说,财富的对数值满足正态分布。如果平均财富是10,000元,那么1000元~10,000元之间的穷人(比平均值低一个数量级,宽度为9000)与10,000元~100,000元之间的富人(比平均值高一个数量级,宽度为90,000)人数一样多。因此,财富曲线左侧的范围比较窄,右侧出现重尾。

0.1.E 熵

熵是一种衡量随机变量“随机性”的方法,概念来自信息论领域。直观地说,公平硬币的随机性要高于99%出现正面的硬币。同样,如果一个正态分布的标准差很小,那么它的概率质量将紧紧地围绕它的平均值分布,且它比更大标准差的分布随机性更差。 如果随机变量 XX是离散的,熵即 H[X]=E[Surpise[X]]=xpxln(px)H[X]=E[Surpise[X]]=−∑xpxln(px) 如果随机变量 XX是连续的,熵即 H[X]=f(x)ln(f(x))dxH[X]=−∫f(x)ln(f(x))dx 我们很少直接计算熵,但概念无处不在。

全文目录


0.2 统计学

  • 0.2.1 统计学透视
  • 0.2.2 贝叶斯与概率论
  • 0.2.3 假设检验
  • 0.2.4 多重假设检验
  • 0.2.5 参数估计
  • 0.2.6 假设检验: tt检验
  • 0.2.7 置信区间
  • 0.2.8 ⻉叶斯统计学
  • 0.2.9 朴素⻉叶斯统计学
  • 0.2.A 贝叶斯网络
  • 0.2.B 先验概率选择

0.2.1 统计学透视

统计学的基本理论是关于如何处理数据人员通常不需担心的数据约束问题。 这些约束中最重要的是样本量。面对大数据,核心任务就是找出解析它的正确方法,一旦完成了从大量数据中提取特征的工作,抽取深层信息就像查看直方图一样简单。 但事实情况并非总是如此。统计学是关于处理这些极其有限的情况,在这种情况下很难判断观察到的模式究竟是事实的真相还是数据的例外。由于分析结果事关巨额财富甚至生命健康,所以统计学往往对每一个细节都非常挑剔。 但往往可能犯下的最严重错误之一就是在需要更严格方法的情况下病危采取措施,故而需要对应急方法的使用范围保持敏感。如果能够在发生这些问题之前学会发现这些缺陷,即可随时学习所需的统计学知识。

0.2.2 贝叶斯与概率论

贝叶斯统计和频率统计(经典统计)在统计学上有巨大分歧,尽管这些差异多是哲学范畴的,在大多数问题中,它们会给出几乎相同的答案。

  • 经典统计

在这里,模型应该是数据的“最佳拟合”。为了解决问题,有必要对模型的形式作出一些假设,然而在其他方面,将模型参数设置为与数据最匹配。经典统计学中最重要的范例是询问为数据给出的特定模型或特定的一组参数的合理程度,并设定参数以使数据尽可能合理。如果必须进行统计预测,那么则使用这个拟合效果最好的模型。

  • 贝叶斯统计

贝叶斯模型以所谓“先验”开始,它存在于没有任何数据的情况下。随着数据的出现,改进了置信分布,希望能够调整真实世界的“真实”参数。即人们不仅仅拥有真实世界模型的最佳拟合参数,而且对这些最适合的参数可能会有一个置信度分布。

0.2.3 假设检验

统计学的一个重要领域称为假设检验。基本的想法是,思考数据的趋势,评估它称为现实世界现象的可能性。假设检验不能解决趋势有多强的问题。它的设计适用于数据过于稀疏而无法可靠地量化趋势的情况。 假设检验的一个典型例子是这样的:有一个可能公平或不公平的硬币,扔了10次,得到9次正面。那么这枚硬币被动手脚的可能性有多大? 为了回答这个问题,可以首先假设硬币是公平的,从而计算这个偏斜数据的可能性,并用它来衡量这个硬币是否是公平的,以下计算能得到9/10个正背面概率: (1+101)2/210=22/1024=0.0215(1+10−1)∗2/210=22/1024=0.0215 所以只有2%的机会从公平的硬币中得到类似这样的数据,我们倾向认为硬币是不公平的。 这里公平硬币的概念被称为“零假设”,如果将零假设作为给定数据,那么可能会看到数据中极端的模式,这个数字被称为 pp值。如果 pp值低于某个指定的阈值(通常使用0.05),则结果称为统计显著性。

关于假设检验需要特别注意的是,它只是告诉人们存在一种模式,但并不告诉人们该模式实际有多强。毕竟抛硬币1百万次,我们就会发现它是否公平。在大数据情况下,如果模式足够弱,甚至不得不诉诸 pp值,那么该模式肯定太弱,而无法具有任何商业价值。

0.2.4 多重假设检验

在多重假设检验中,我们知道需要对错误率进行控制,因为小概率事件在一次试验中不会发生。比如我们经常把显著性水平 αα设为0.05,也就是说,我们认为概率小于0.05的事件在一次试验中不会发生。但如果我们试验非常多次,那么小概率事件就极有可能发生了,所以在多重假设检验中,我们如果仍然把显著性水平设为0.05,那么假阳性(错误测试)事件会大大增多。 因为P值的阈值是人为规定的,无论是多小的P值,也仅仅能代表结果的低假阳性,而非保证结果为真。即使P值已经很小(比如0.05),也会被检验的总次数无限放大。比如检验10000次,得到假阳性结果的次数就会达到 5% ×× 10000=500次。 这时候我们就需要引入多重检验来进行校正,从而减低假阳性结果在我们的检验中出现的次数。

  • BonferroniBonferroni校正

BonferroniBonferroni校正法可以称作是“最简单粗暴有效”的校正方法,它拒绝了所有的假阳性结果发生的可能性,通过对p值的阈值进行校正来实现消除假阳性结果。 BonferroniBonferroni校正的公式为 p×(1/n)p×(1/n),其中 pp为原始阈值, nn为总检验次数。 如果像我们举的例子一样,原始的P值为0.05,检验次数为10000次,那么在 BonferroniBonferroni校正中,校正的阈值就等于5%/10000 = 0.000005,所有P值超过0.00005的结果都被认为是不可靠的。这样的话假阳性结果在10000次检验中出现的次数为0.000005 ×× 10000=0.5,还不到1次。 但是这也存在问题: BonferroniBonferroni 太过严格,被校正后的阈值拒绝的不只有假阳性结果,很多阳性结果也会被它拒绝。

  • FDR(FalseDiscovery Rate) 校正

相对而言FDR温和得多,这种校正方法不追求完全没有假阳性结果,而是将假阳性结果和真阳性的比例控制在一定范围内。 举个例子,我们最开始设定的情况中进行了10000次检验,这次我们设定FDR<0.05,如果我们的检验对象为差异表达的基因,那么在10000次检验中假如得到了500个基因,那么这500个基因中的假阳性结果小于 500 ×× 5% = 25 个。 具体的,BH-Benjaminiand Hochberg法将总计 mm次检验的结果按由小到大进行排序, kk为其中一次检验结果的 pp值所对应的排名。找到符合原始阈值 αα的最大的 kk值,满足 p(k)αk/mp(k)≤αk/m,认为排名从1到 kk的所有检验存在显著差异,并计算对应的 qq值公式为 q=p×(m/k)q=p×(m/k)。

0.2.5 参数估计

假设检验是用来判定效果是否存在,而不是量化其大小。后者属于参数估计的范畴,即对表征分布的基本参数进行估计。 在参数估计中,假设数据服从某些函数形式,例如具有平均值 μμ和标准差 αα的正态分布。然后有一些方法来估计这些参数,给出以下数据:

μ^=1Ni=1Nxiσ^=1Ni=1N(xiμ^)2μ^=N1i=1∑Nxiσ^=N1i=1∑N(xi−μ^)2

在这种情况下,这些数字称为样本均值和样本方差。 这样有术语:

  • 一致性:在数据集中包含很多不同的数据点的条件下,估计量 μ^μ^收敛到实数 μμ,那么这个估计量 μ^μ^是一致的。
  • 偏差:如果 μ^μ^的期望值是实数 αα,则该估计量是无偏的。

标准差的无偏估计量是 σ^=1N1i=1N(xiμ^)2σ^=N−11∑i=1N(xi−μ^)2 这总会比原是表达式稍微大些,但是随着 NN趋于无穷,它们会收敛到同一个数值。

0.2.6 假设检验: tt检验

tt检验是假设检验的更复杂版本。当需要测量的是一个连续的数字,而不是二元的硬币翻转,并且想评估两个分布的真实平均值是否相同时,它是有用的。例如,如果对曾服用或未服用降血压药物的患者进行血压测量,是否能够自信地宣称其有效性? 这次先模拟之:

from scipy.stats import ttest_ind
t_score, p_value = ttest_ind([1, 2, 3, 4], [2, 2.2, 3, 5])print(t_score, p_value)

t_score, p_value = ttest_ind([1, 2, 3, 4], [2, 2.2, 3, 5], equal_var=False)print(t_score, p_value)"""
-0.5843683421954862 0.580264402955629
-0.5843683421954862 0.5803365979495375
"""
登录后复制

再回顾下假设检验过程,设定零假设,选择一个检验统计量来获取发现的模式的强度,然后计算检验统计量为异常值的可能性大小。如果检验统计量非常大,则零假设可能为假。     tt检验给出了零假设的两个选择:

  • 两个数据集来自相同的正态分布;
  • 服从正态分布的两个数据集,但标准差可能不同;

重要的一点是,这些假设并没有给出一个概率分布。这与硬币翻转形成对比,通过假设硬币是公平的即可获得抛掷的概率分布。在 tt检验中,会对一些无法计算的事件产生兴趣,因为这些事件由那些无法指定的参数所决定。 在设定检验统计量量,需要遵循如下规则:

  • 计算两个数据集的平均值 μ^Aμ^A和 μ^Bμ^B,并观察它们之间的距离;
  • 如果数据集中有更多的点,期望 μ^Aμ^A和 μ^Bμ^B更接近真实的和。在这种情况下,如果零假设为真,那么 μ^Aμ^A和 μ^Bμ^B之间的差异应该很小;
  • 如果数据集本身具有很大的方差,则 μ^Aμ^A和 μ^Bμ^B会是真实和的更差近似值,所以 μ^Aμ^A和 μ^Bμ^B可能会更大;

即 tt统计量: T=μ^Aμ^BsA2NA+sB2NBT=NAsA2+NBsB2μ^A−μ^B 式中, sA2sA2、 sB2sB2分别是 AA和 BB的样本方差。 如果零假设为真,则 TT将遵循所谓的 TT分布。 TT分布看起来非常像均值为0、标准差为1的正态分布,但尾部较厚。如果数据的 tt统计量特别大或特别小,那么零假设可能为假。

0.2.7 置信区间

当试图从数据中估计真实世界分布的参数时,通常还需要给出置信区间,而不只是一个最佳拟合数。置信区间最常见的用途是计算基本分布的平均值。如果需要计算其他信息,则可以通过分析数据,将其转换为关于平均值的计算。 置信区间最常见的用途是计算基本分布的平均值。如果需要计算其他信息,则可以通过分析数据,将其转换为关于平均值的计算。例如,如果想估计随机变量 XX的标准差。那么,可以发现如下关系:

σx=E[(XE[X])2]σx2=E[(XE[X])2]σx=E[(X−E[X])2]σx2=E[(X−E[X])2]

因此可以通过找到均值并取二次方根来估计XX的标准差 (XE[X])2(X−E[X])2。如果可以将置信区间用于均值,则也可以将置信区间用于一系列拟估计的其他量。典型指标是“平均值的标准误差SEM”,如果看到 4.1±0.24.1±0.2的平均值,那么通常4.1是通过平均所有数字得到的最佳拟合均值,而0.2是 SEMSEM。

from scipy.stats import sem
sed_err = sem([1, 2, 1, 1])print(sed_err)"""
0.25
"""
登录后复制

如果 μ^μ^是样本均值,那么间隔 [μ^zSEM,μ^+zSEM][μ^−z∗SEM,μ^+z∗SEM] 将以95%、99%或者任何其他置信度阈值包含均值,这取决于如何设置系数 zz。增加这个系数即可增加置信度。

置信度(%) 系数
99 2.58
95 1.96
90 1.64

“均值以95%的置信度在给定的区间内”不一定对,毕竟真正的均值是否在给定的区间内,更严谨的解释是,如果分布是正态的,并且从NN个样本中计算出置信区间,则该置信区间将以95%的置信度包含真实均值。

0.2.8 ⻉叶斯统计学

与经典统计类似,贝叶斯统计学假定世界的某些方面遵循具有一些参数的统计模型:类似于正面概率为 pp的硬币。经典统计学选择最拟合数据的参数值(也可以添加置信区间),不能人工干预。在贝叶斯统计学中,从参数的所有可能值的概率分布开始,表示对每个值是“正确”的置信度。随着新的数据点加入,随即更新置信度。从某个意义上说,贝叶斯统计学是一种如何根据数据来完善猜测的科学。 贝叶斯统计学的数据基础是贝叶斯定理。对于任何随机变量 XX和 TT,其公式如下: P(TD)=P(T)P(DT)P(D)P(T∣D)=P(D)P(T)P(D∣T)

[金融]决策科学-(零)数理统计 - php中文网

举例,问:现分别有 A、B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出了一个红球,问这个球来自容器 A 的概率是多少? 答:假设选中容器 A 为事件 A,已经抽出红球为事件 B,B|A即容器A中抽出红球,则有:

P(A)=(7+3)/(7+3+1+9)=0.5P(B)=(7+1)/(7+3+1+9)=0.4P(BA)=7/(7+3)=0.7P(A)=(7+3)/(7+3+1+9)=0.5P(B)=(7+1)/(7+3+1+9)=0.4P(B∣A)=7/(7+3)=0.7

按照公式,则有: P(AB)=P(A)P(BA)P(B)=0.7×0.5/0.4=0.875P(A∣B)=P(B)P(A)P(B∣A)=0.7×0.5/0.4=0.875

贝叶斯定理给出了经典统计学中所不具备的东西:给定收集的数据,真实参数等于某个特定值的“概率”。

0.2.9 朴素⻉叶斯统计学

贝叶斯统计中最棘手的部分通常是计算 P(DT)P(D∣T)。这主要是因为 DD本身通常是一个多部分随机变量,通常是一个 dd维向量,并且其中的不同数字可能具有非常复杂的依赖结构。例如,如果想知道是否有人患有糖尿病,可能会测量他们的血糖和糖水平,而这两个数字有复杂的依赖关系,需要深入了解生物学模型。或者如果模型必须自动学习这些关系,则需要大量的实验数据,因为必须查看所有共现事件。 由于这个原因,会经常看到人们使用“朴素贝叶斯”方法。在朴素贝叶斯方法中,简单地假设所有不同的变量都以 TT为条件相互独立,即: P(DT)=P(D1T)×P(D2T)×...×P(DdT)P(D|T)=P(D1|T)×P(D2|T)×...×P(Dd|T) 现在计算 P(DT)P(D∣T)只需要用已经观察到的足够数据来描述每个变量与 TT的关系。 朴素贝叶斯假设是数据科学领域中最戏剧性、最细微的过度简化之一,但在实践中非常有效。它倾向于做的主要事情是,如果几个密切相关,它们将集体分类推向某一个方向。例如假设试图确定某人的性别,然后可能会告诉读者,他们长发,他们使用发带,并且他们的头发需要很长时间才能晾干。这些事实中的每一个都适度地支持性别为女性的可能性,所以朴素贝叶斯分类器的置信度将会变得非常高。但实际上,这些事实只是一些描述这个人头发长的替代方式,而且还有很多长头发的男性。所以分类器可能是对的,但是会具有过高的置信度。

0.2.A 贝叶斯网络

如果数据中有很多特征,完全拟合 P(DT)P(D∣T)的模型是不现实的,因为变量之间存在所有可能的相关性。然而在这个不可能的任务和朴素贝叶斯过度简化中,存在一种折中办法, 被称为贝叶斯网络。 在实际应用中使用贝叶斯网络时,可以通过选择如何构建网络来利用领域专业知识。哪些变量可能会相互影响,或者是独立的,或者是有条件独立的?一般来说,贝叶斯网络的拓扑是由人工构建的,然后在真实世界的数据上进行训练和评估。 贝叶斯网络可以解决三门问题。

三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。 问题是:换另一扇门会否增加参赛者赢得汽车的机率。如果严格按照上述的条件,那么答案是会。不换门的话,赢得汽车的几率是1/3。换门的话,赢得汽车的几率是2/3。

以下模拟之:

from IPython.display import Image
Image('images/monty.png')
登录后复制

[金融]决策科学-(零)数理统计 - php中文网

from pgmpy.models import BayesianModelfrom pgmpy.factors.discrete import TabularCPD# Defining the network structuremodel = BayesianModel([('C', 'H'), ('P', 'H')])# Defining the CPDs:cpd_c = TabularCPD('C', 3, [[0.33], [0.33], [0.33]])
cpd_p = TabularCPD('P', 3, [[0.33], [0.33], [0.33]])
cpd_h = TabularCPD('H', 3, [[0, 0, 0, 0, 0.5, 1, 0, 1, 0.5], 
                            [0.5, 0, 1, 0, 0, 0, 1, 0, 0.5], 
                            [0.5, 1, 0, 1, 0.5, 0, 0, 0, 0]],
                  evidence=['C', 'P'], evidence_card=[3, 3])# Associating the CPDs with the network structure.model.add_cpds(cpd_c, cpd_p, cpd_h)# Some other methodsmodel.get_cpds()"""
[<TabularCPD representing P(C:3) at 0x7f423cc88a58>,
 <TabularCPD representing P(P:3) at 0x7f4310676198>,
 <TabularCPD representing P(H:3 | C:3, P:3) at 0x7f423cc88ac8>]
"""model.check_model()# Infering the posterior probability from pgmpy.inference import VariableElimination

infer = VariableElimination(model)
posterior_p = infer.query(['P'], evidence={'C': 0, 'H': 2})print(posterior_p)"""
+-----+----------+
| P   |   phi(P) |
|-----+----------|
| P_0 |   0.3333 |
| P_1 |   0.6667 |
| P_2 |   0.0000 |
+-----+----------+
"""
登录后复制

0.2.B 先验概率选择

如果试图训练贝叶斯分类器,从实验数据中提取基线先验知识将容易些。然而在其他情况下,忽视的是真实完整的,所以不想将任何不切实际的内容作为先验知识。在诸如确定某人性别等事情的情况下,处理这种情况的基本方式是设定相等的基线:50%的机会是女性,50%的机会是男性。 有一个数学理论证明了这种方法的正确性:使用具有最大熵的先验分布。在概率分布的熵衡量的是概率分布中的不确定性,所以选择使熵最大化的先验知识意味着没有任何先验知识。 那么如果 TT是一个具有 nn个可能状态的离散变量,那么熵定义为: H[T]=t=1nptln(pt)H[T]=−∑t=1nptln(pt)

在这种情况下, ln(pi)−ln(pi)测量得到特定结果 tt, piln(pi)−piln(pi)是 tt对整体熵的贡献。如果 ptpt为1,那么 ln(pt)ln(pt)将为0,那么 tt对熵没有贡献。相反,如果 ptpt非常小,那么事件 tt的信息量则很大,但是由于事件 tt的发生概率很低,所以事件 tt对熵的贡献也很小。直观地说,应该有一个使熵最大化的“最佳点”,事实证明,可以通过将每个点 ptpt设置为常数 1/n1/n来获取此点。 这个概念对连续概率分布具有类似的意义: H[T]=f(t)ln(f(t))dtH[T]=−∫f(t)ln(f(t))dt 与离散情况类似,如果存在一个有限的间隔,则最大熵分布是连贯的,并且它是一个常数值: f(x)=1xmaxxminf(x)=xmax−xmin1

全文目录


0.3 统计学习⽅法

  • 0.3.1 关键书籍
  • 0.3.2 学习示例
    • 0.3.2.1 牛顿法原理
    • 0.3.2.2 计算过程

0.3.1 关键书籍

  • 《2012.李航.统计学习方法》
  • 第1章 统计学习方法概论
  • 第2章 感知机
  • 第3章 k近邻法
  • 第4章 朴素贝叶斯法
  • 第5章 决策树
  • 第6章 逻辑斯谛回归与最大熵模型
  • 第7章 支持向量机
  • 第8章 提升法
  • 第9章 EM算法及其推广
  • 第10章 隐马尔可夫模型
  • 第11章 条件随机场
  • 第12章 统计学习方法总结
  • 附录A 梯度下降法
  • 附录B 牛顿法与拟牛顿法
  • 附录C 拉格朗日对偶性

...

0.3.2 学习示例

以下风险定价中求解无约束最优化问题时,为加快收敛速度所用牛顿法为例:

0.3.2.1 牛顿法原理

[金融]决策科学-(零)数理统计 - php中文网

0.3.2.2 计算过程

构建示例: f(x)=x22,f(x)=0?f(x)=x2−2,f(x)=0?

据上述牛顿法,下一个 xx取值 x1x1为:

x1=x0f(x0)f(x0)=x0x0222x0=(x0+2/x0)/2x1=x0−f‘(x0)f(x0)=x0−2x0x02−2=(x0+2/x0)/2

  • 代码明细(SAS)
%macro fcal(x=,t=,);
    data &t.;
    &t. = (&x.) ** 2 - 2;
    run;
%mend;

%macro fcal_x(b=,fl=0.000001);
    %let bf = 1;

    %do i = 0 %to 100;
        %fcal(x=&b., t=f);
        %fcal(x=&b.-&fl., t=f_0);
        %fcal(x=&b.+&fl., t=f_1);

        data f_all;
        merge f f_0 f_1;
        x0 = &b.;
        f_ = (f_1 - f_0)/(&fl.*2); # 导函数模拟/*         f_ = 2 * x0; */
        x1 = x0 - f/f_;
        run;

        data _null_;        set f_all;
        call symput("bb", x1);
        run;
        
        %fcal(x=&bb., t=f1);

        data _null_;        set f1;
        f1_ = f1 < 0.01;
/*         f1_ = abs(&bb. - &b.) < 0.01; */
        call symput("brf", f1);
        call symput("bf", f1_);
        run;
        %put --------------------------- &bb. &brf. &bf.;
        
        %if &bf. = 1
            %then %let i = 100;
        %else %let b = &bb.;
    %end;
%mend;

%fcal_x(b=4);
/*
  --------------------------- 2.2500000001 3.0625000005            0
  --------------------------- 1.5694444446 0.4631558647            0
  --------------------------- 1.4218903638 0.0217722067            0
  --------------------------- 1.4142342859 0.0000586154            1*/
登录后复制
  • 代码明细(Python)
def sqrt_by_bisection(n):
    low, last = 0, 0
    up = n
    mid = (low + up)/2
    while abs(mid - last) > eps:        if mid * mid > n:
            up = mid        else:
            low = mid
        last = mid
        mid = (up + low)/2
    return midprint(sqrt_by_bisection(2))

%timeit sqrt_by_bisection(2)# 1.4142135605216026# 6.26 µs ± 6.98 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
登录后复制

如上,快速计算 21.4142≈1.414.

以上就是[金融]决策科学-(零)数理统计的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号