参数估计是利用样本对总体进行统计推断的一类方法,即假设总体的概率分布类型已知,但其中含有未知参数,由样本估计未知参数的值。
参数估计的方法主要有点估计和区间估计,其中点估计中有矩估计和极大似然估计等方法。
一、点估计
依据样本估计总体分布中所含的未知参数或未知参数的函数。
1、矩估计
矩估计是基于一种简单的“替换”思想,即用样本矩估计总体矩。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import numpy as np from scipy.stats import norm import matplotlib.pyplot as plt
μ = 30 σ = 2 h = μ + σ * np.random.randn(10000) plt.hist(h, bins=100) plt.show()
def ub_me(x): ''' 无偏矩估计(unbiased moment estimator) ''' u = np.mean(x) return u, np.sqrt(np.dot(x - u, (x - u).T) / (x.shape[0] - 1))
print(ub_me(h))
|
2、极大似然估计
有点类似于”贝叶斯方法”的思路。样本已经出现了,它们同时发生的概率(即似然函数)取最大值的时候最符合对事实的估计。通过使似然函数取最大值 ,就可以估算参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import numpy as np from scipy.stats import norm import matplotlib.pyplot as plt
μ = 30 σ = 2 h = μ + σ * np.random.randn(10000) plt.hist(h, bins=100) plt.show()
def norm_mle(x): ''' 极大似然估计 (Maximum Likelihood Estimate,MLE) ''' u = np.mean(x) return u, np.sqrt(np.dot(x - u, (x - u).T) / x.shape[0])
print(norm.fit(h)) print(norm_mle(h))
|
二、区间估计
依据抽取的样本,根据一定的正确度与精确度的要求,构造出适当的区间,作为总体分布的未知参数或参数的函数的真值所在范围的估计。例如人们常说的有百分之多少的把握保证某值在某个范围内,即是区间估计的最简单的应用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import numpy as np from scipy.stats import t
a = np.array([506, 508, 499, 503, 504, 510, 497, 512, 514, 505, 493, 496, 506, 502, 509, 496])
mu = a.mean() s = a.std(ddof=1) print(mu, s)
alpha = 0.05 n = len(a) val = (mu - s/np.sqrt(n)*t.ppf(1 - alpha/2, n-1), mu + s/np.sqrt(n)*t.ppf(1 - alpha/n, n-1)) print('置信区间为:', val)
|