Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
使用學生t分佈計算均值的置信區間(Calculating confidence intervals on the mean with the Students-t distribution)

假設你有一個樣本均值,你可能想知道在這個均值之上的置信區間。通俗地說:"我想要有一個區間使得我們P%的把握,真實的均值在這個區間之內 "。 (在技術角度,這個區間要麼包含這個真實均值要麼不包含:置信區間的含義與這種通俗的說法有所不同,更多的背景信息可以在NIST 網站上找到)。

這個區間的方程可以表示為:

其中,Ys 是樣本均值,s 是樣本標準差,N 是樣本大小,[alpha] 是預期的顯著性水平,且 t(α/2,N-1) 是自由度為N-1的學生t分佈的上臨界值( upper critical value)。

[Note] 注意

α 的值是錯誤地否決虛假設的最大可接受風險值。α的值越小,測試的強度就越大。

測試的置信水平定義為 1 - α,且通常表示為百分數。例如顯著性水平為0.05等價於 95% 的置信水平。參考在NIST/SEMATECH e-Handbook of Statistical Methods. 中的 "置信區間是什麼?" 瞭解更多信息。

[Note] 注意

通常的假設獨立地且一致地分佈(independent and identically distributed) (i.i.d.) 的變量 以及 正態分佈(normal distribution) 當然也應用於這裡,就像它們應用在其它例子中那樣。

從這個方程可以知道:

下面的代碼取自於例子程序students_t_single_sample.cpp.

我們將定義一個針對於不同的置信水平計算置信區間的函數,這個函數將會把這些值打印為一個表:

// 需要的頭文件:
#include <boost/math/distributions/students_t.hpp>
#include <iostream>
#include <iomanip>
// 為了方便使用,將所有的名字引入全局作用域:
using namespace boost::math;
using namespace std;   

void confidence_limits_on_mean(
   double Sm,           // Sm = Sample Mean.
   double Sd,           // Sd = Sample Standard Deviation.
   unsigned Sn)         // Sn = Sample Size.
{
   using namespace std;
   using namespace boost::math;

   // Print out general info:
   cout << 
      "__________________________________\n"
      "2-Sided Confidence Limits For Mean\n"
      "__________________________________\n\n";
   cout << setprecision(7);
   cout << setw(40) << left << "Number of Observations" << "=  " << Sn << "\n";
   cout << setw(40) << left << "Mean" << "=  " << Sm << "\n";
   cout << setw(40) << left << "Standard Deviation" << "=  " << Sd << "\n";

我們定義了一個顯著性水平表,我們將會針對這個表中的值計算置信區間:

double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };

注意: 置信水平的補集為: 0.5, 0.75, 0.9 .. 0.99999)。

下一步我們將定義一個我們需要的分佈對象,注意:自由度比樣本大小少1.

students_t dist(Sn - 1);

下面接下來的代碼大部分都在打印結果,讓我們主要關注區間的計算。首先我們需要 t-statistic, 使用顯著性水平和分位點函數計算。注意:因為顯著性水平是概率的補集,我們將這些參數包裝在對函數complement(...)的調用之中 :

double T = quantile(complement(dist, alpha[i] / 2));

注意:將 alpha 的值除以了2,因為我們將要計算上邊界和下邊界:如果我們使用一個單側測試(single-sided test),那麼我們就可以省略這一步。

現在為了完成這個程序,我們將把從statistic中得到的區間寬度乘以標準差然後除以樣本大小的平方根:

double w = T * Sd / sqrt(double(Sn));

雙側區間( two-sided interval )就是樣本均值加上和減去這個寬度。

最後用一些用於打印的代碼來完成這個程序。

讓我們使用Heat flow data from the NIST site. The data set was collected by Bob Zarr of NIST in January, 1990 from a heat flow meter calibration and stability analysis. 的數據來查看一些樣本輸出。這些測試的對應輸出結果可以在section 3.5.2 of the NIST/SEMATECH e-Handbook of Statistical Methods.. 中找到。

   __________________________________
   2-Sided Confidence Limits For Mean
   __________________________________

   Number of Observations                  =  195
   Mean                                    =  9.26146
   Standard Deviation                      =  0.02278881


   ___________________________________________________________________
   Confidence       T           Interval          Lower          Upper
    Value (%)     Value          Width            Limit          Limit
   ___________________________________________________________________
       50.000     0.676       1.103e-003        9.26036        9.26256
       75.000     1.154       1.883e-003        9.25958        9.26334
       90.000     1.653       2.697e-003        9.25876        9.26416
       95.000     1.972       3.219e-003        9.25824        9.26468
       99.000     2.601       4.245e-003        9.25721        9.26571
       99.900     3.341       5.453e-003        9.25601        9.26691
       99.990     3.973       6.484e-003        9.25498        9.26794
       99.999     4.537       7.404e-003        9.25406        9.26886

如同你所看到的那樣,將大的樣本大小與小的標準差組合來獲得小的置信區間,事實上我們可以非常自信真實均值為 9.2。

為了作為比較,我們使用來自於P.K.Hou, O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. and from Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 J. C. Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907 的數據。The values result from the determination of mercury by cold-vapour atomic absorption.

   __________________________________
   2-Sided Confidence Limits For Mean
   __________________________________

   Number of Observations                  =  3
   Mean                                    =  37.8000000
   Standard Deviation                      =  0.9643650


   ___________________________________________________________________
   Confidence       T           Interval          Lower          Upper
    Value (%)     Value          Width            Limit          Limit
   ___________________________________________________________________
       50.000     0.816            0.455       37.34539       38.25461
       75.000     1.604            0.893       36.90717       38.69283
       90.000     2.920            1.626       36.17422       39.42578
       95.000     4.303            2.396       35.40438       40.19562
       99.000     9.925            5.526       32.27408       43.32592
       99.900    31.599           17.594       20.20639       55.39361
       99.990    99.992           55.673      -17.87346       93.47346
       99.999   316.225          176.067     -138.26683      213.86683

這一次,我們僅有3個測量數據,這就導致了非常寬的置信區間,實際上這麼大的置信區間導致很難確定均值的位置。


PrevUpHomeNext