9.2 参数估计函数
参数估计的内容包括点估计和区间估计。MATLAB统计工具箱提供了很多与参数估计相关的函数,例如计算待估参数及其置信区间、估计服从不同分布的函数的参数。
9.2.1 常见分布的参数估计
MATLAB统计工具箱提供了多种具体函数的参数估计函数,如表9-1所示。
例如,利用normfit函数可以对正态分布总体进行参数估计。
● [muhat,sigmahat,muci,sigmaci]=normfit(x):对于给定的正态分布的数据x,返回参数μ的估计值muhat、σ的估计值sigmahat、μ的95%置信区间muci、σ的95%置信区间sigmaci。
● [muhat,sigmahat,muci,sigmaci]=normfit(x,alpha):进行参数估计并计算100(1-alpha)%置信区间。
表9-1 常见分布的参数估计函数及其调用格式
分布 |
调用格式 |
贝塔分布 |
phat = betafit(x) [phat, pci] = betafit(x, alpha) |
贝塔对数似然函数 |
logL = betalike(params, data) [logL, info] = betalike(params, data) |
二项分布 |
phat = binofit(x, n) [phat, pci] = binofit(x, n) [phat, pci] = binofit(x, n, alpha) |
指数分布 |
muhat = expfit(x) [muhat, muci] = expfit(x) [muhat, muci] = expfit(x, alpha) |
伽马分布 |
phat = gamfit(x) [phat, pci] = gamfit(x) [phat, pci] = gamfit(x, alpha) |
伽马似然函数 |
logL = gamlike(params, data) [logL, info] = gamlike(params, data) |
最大似然估计 |
phat = mle(‘dist’, data) [phat, pci] = mle(‘dist’, data) [phat, pci] = mle(‘dist’, data, alpha) [phat, pci] = mle(‘dist’, data, alpha, pl) |
正态对数似然函数 |
L = normlike(params, data) |
正态分布 |
[muhat, sigmahat, muci, sigmaci] = normfit(x) [muhat, sigmahat, muci, sigmaci] = normfit(x, alpha) |
泊松分布 |
lambdahat = poissfit(x) [lambdahat, lambdaci] = poissfit(x) [lambdahat, lambdaci] = poissfit(x, alpha) |
均匀分布 |
[ahat,bhat] = unifit(x) [ahat, bhat, aci, bci] = unifit(x) [ahat, bhat, aci, bci] = unifit(x, alpha) |
威布尔分布 |
phat = weibfit(x) [phat, pci] = weibfit(x) [phat, pci] = weibfit(x, alpha) |
威布尔对数似然函数 |
logL = weiblike(params, data) [logL, info] = weiblike(params, data) |
例9-4:观测20辆某型号汽车消耗10L汽油的行驶里程,具体数据如下所示。
59.6 55.2 56.6 55.8 60.2 57.4 59.8 56.0 55.8 57.4
56.8 54.4 59.0 57.0 56.0 60.0 58.2 59.6 59.2 53.8
假设行驶里程服从正态分布,请用normfit函数求解平均行驶里程的95%置信区间。根据题意在命令行窗口中依次输入:
clear all x1 = [59.6 55.2 56.6 55.8 60.2 57.4 59.8 56.0 55.8 57.4]; x2 = [56.8 54.4 59.0 57.0 56.0 60.0 58.2 59.6 59.2 53.8]; x = [x1 x2]'; a = 0.05; [muhat, sigmahat, muci, sigmaci] = normfit(x, a); [p, ci] = mle('norm', x, a); n = numel(x); format long muhat p1 = p(1) sigmahat sigmahat1 = var(x).^0.5 p2 = p(2) muci ci sigmaci mucil = [muhat - tinv(1 - a / 2, n - 1) * sigmahat / sqrt(n), muhat + tinv(1 - a / 2, n - 1) * sigmahat / sqrt(n)] sigmacil = [((n - 1).* sigmahat.^2 / chi2inv(1 -a / 2, n - 1)).^ 0.5, ((n - 1).*sigmahat.^2 / chi2inv(a / 2, n - 1)).^0.5]
运行结果如下:
muhat = 57.390000000000001 p1 = 57.390000000000001 sigmahat = 1.966535826750873 sigmahat1 = 1.966535826750873 p2 = 1.916742027503963 muci = 56.469632902339683 58.310367097660318 ci = 56.469632902339683 1.495531606349597 58.310367097660318 2.872266449964584 sigmaci = 1.495531606349597 2.872266449964584 mucil = 56.469632902339683 58.310367097660318 sigmacil = 1.495531606349597 2.872266449964584
9.2.2 点估计
点估计是用单个数值作为参数的估计,目前使用较多的方法是最大似然法和矩法。
1.最大似然法
最大似然法是在待估参数的可能取值范围内,挑选使似然函数值最大的那个参数值为最大似然估计量。由于最大似然法得到的估计量通常不仅仅能满足无偏性、有效性等基本条件,还能保证其为充分统计量,所以,在点估计和区间估计中,一般推荐使用最大似然法。
MATLAB用函数mle进行最大似然估计,其调用格式如下。
● phat=mle('dist',data):使用data矢量中的样本数据,返回dist指定的分布的最大似然估计。
例9-5:观测20辆某型号汽车消耗10L汽油的行驶里程,具体数据如下所示。
59.6 55.2 56.6 55.8 60.2 57.4 59.8 56.0 55.8 57.4
56.8 54.4 59.0 57.0 56.0 60.0 58.2 59.6 59.2 53.8
假设行驶里程服从正态分布,请用最大似然法估计总体的均值和方差。根据题意,编写最大似然估计求解程序,在命令行窗口中依次输入:
clear all x1 = [59.6 55.2 56.6 55.8 60.2 57.4 59.8 56.0 55.8 57.4]; x2 = [56.8 54.4 59.0 57.0 56.0 60.0 58.2 59.6 59.2 53.8]; x = [x1 x2]'; p = mle('norm', x); muhatmle = p(1) sigma2hatmle = p(2)^2
运行结果如下:
muhatmle = 57.390000000000001 sigma2hatmle = 3.673900000000002
2.矩法
待估参数经常作为总体原点矩或原点矩的函数,此时可以用该总体样本的原点矩或样本原点矩的函数值作为待估参数的估计,这种方法称为矩法。
例如,样本均值总是总体均值的矩估计量,样本方差总是总体方差的矩估计量,样本标准差总是总体标准差的矩估计量。
MATLAB计算矩的函数为moment(X,order)。
例9-6:观测20辆某型号汽车消耗10L汽油的行驶里程,具体数据如下所示。
59.6 55.2 56.6 55.8 60.2 57.4 59.8 56.0 55.8 57.4
56.8 54.4 59.0 57.0 56.0 60.0 58.2 59.6 59.2 53.8
试估计总体的均值和方差。根据题意,在命令行窗口中依次输入:
clear all x1 = [59.6 55.2 56.6 55.8 60.2 57.4 59.8 56.0 55.8 57.4]; x2 = [56.8 54.4 59.0 57.0 56.0 60.0 58.2 59.6 59.2 53.8]; x = [x1 x2]'; muhat = mean(x) sigma2hat = moment(x, 2) var(x, 1)
运行结果如下:
muhat = 57.390000000000001 sigma2hat = 3.673900000000002 ans = 3.673900000000002
9.2.3 区间估计
求参数的区间估计,首先要求出该参数的点估计,然后构造一个含有该参数的随机变量,并根据一定的置信水平求该估计值的范围。
在MATLAB中用mle函数进行最大似然估计时,有如下几种调用格式。
● [phat,pci]=mle('dist',data):返回最大似然估计值和95%置信区间。
● [phat,pci]=mle('dist',data,alpha):返回指定分布的最大似然估计值和100(1- alpha)%置信区间。
● [phat,pci]=mle('dist',data,alpha,p1):该形式仅用于二项分布,其中p1为实验次数。
例9-7:观测20辆某型号汽车消耗10L汽油的行驶里程,具体数据如下所示。
59.6 55.2 56.6 55.8 60.2 57.4 59.8 56.0 55.8 57.4
56.8 54.4 59.0 57.0 56.0 60.0 58.2 59.6 59.2 53.8
假设行驶里程服从正态分布,求平均行驶里程的95%置信区间。根据题意,在命令行窗口中依次输入:
clear all x1 = [29.8 27.6 28.3 27.9 30.1 28.7 29.9 28.0 27.9 28.7]; x2 = [28.4 27.2 29.5 28.5 28.0 30.0 29.1 29.8 29.6 26.9]; x = [x1 x2]'; [p, pci] = mle('norm', x, 0.05)
运行结果如下:
p = 28.695000000000000 0.958371013751981 pci = 28.234816451169841 0.747765803174798 29.155183548830159 1.436133224982292