[この回答をまとめることで学んだ多くのことについて、John D Cook に心から感謝します!]
まず、平方和を使用しない理由は次のとおりです: http://www.johndcook.com/blog/2008/09/26/
代わりにすべきこと:
カウント (n)、平均 (u)、および数量 (s) を追跡して、そこからサンプル分散と標準誤差を決定できます。( http://www.johndcook.com/standard_deviation.htmlから適応。)
初期化しn = u = s = 0
ます。
新しいデータポイントごとに、次のようになりx
ます。
u0 = u;
n ++;
u += (x - u) / n;
s += (x - u0) * (x - u);
この場合、標本分散はs/(n-1)
、標本平均の分散は 、標本平均s/(n-1)/n
の標準誤差は ですSE = sqrt(s/(n-1)/n)
。
Student-tc
信頼区間 ( c
in (0,1))を計算する必要があります。
u [plus or minus] SE*g((1-c)/2, n-1)
ここg
で、確率と自由度 (データ ポイント数より 1 少ない数) を取る、平均 0、分散 1 のスチューデント t 分布の逆累積分布関数 (別名、分位数) です。
g(p,df) = sign(2*p-1)*sqrt(df)*sqrt(1/irib(1, -abs(2*p-1), df/2, 1/2) - 1)
ここirib
で、逆正則化された不完全ベータ関数は次のとおりです。
irib(s0,s1,a,b) = z such that rib(s0,z,a,b) = s1
正規化されrib
た不完全なベータ関数は次のとおりです。
rib(x0,x1,a,b) = B(x0,x1,a,b) / B(a,b)
ここB(a,b)
で、 はオイラー ベータ関数、B(x0,x1,a,b)
は不完全なベータ関数です。
B(a,b) = Gamma(a)*Gamma(b)/Gamma(a+b) = integral_0^1 t^(a-1)*(1-t)^(b-1) dt
B(x0,x1,a,b) = integral_x0^x1 t^(a-1)*(1-t)^(b-1) dt
典型的な数値/統計ライブラリには、ベータ関数 (またはスチューデント t 分布の逆累積分布関数) が直接実装されています。C の場合、事実上の標準は Gnu Scientific Library (GSL) です。多くの場合、ベータ関数の 3 引数バージョンが与えられます。4 つの引数への一般化は次のとおりです。
B(x0,x1,a,b) = B(x1,a,b) - B(x0,a,b)
rib(x0,x1,a,b) = rib(x1,a,b) - rib(x0,a,b)
最後に、Mathematica での実装を次に示します。
(* Take current {n,u,s} and new data point; return new {n,u,s}. *)
update[{n_,u_,s_}, x_] := {n+1, u+(x-u)/(n+1), s+(x-u)(x-(u+(x-u)/(n+1)))}
Needs["HypothesisTesting`"];
g[p_, df_] := InverseCDF[StudentTDistribution[df], p]
(* Mean CI given n,u,s and confidence level c. *)
mci[n_,u_,s_, c_:.95] := With[{d = Sqrt[s/(n-1)/n]*g[(1-c)/2, n-1]},
{u+d, u-d}]
比較する
StudentTCI[u, SE, n-1, ConfidenceLevel->c]
または、データポイントのリスト全体が利用可能な場合、
MeanCI[list, ConfidenceLevel->c]
最後に、ベータ関数などの数学ライブラリをロードしたくない場合は、 のルックアップ テーブルをハードコーディングできます-g((1-c)/2, n-1)
。ここに と がc=.95
ありn=2..100
ます:
12.706204736174698, 4.302652729749464, 3.182446305283708, 2.7764451051977934, 2.570581835636314, 2.4469118511449666, 2.3646242515927853, 2.306004135204168, 2.262157162798205, 2.2281388519862735, 2.2009851600916384, 2.178812829667226, 2.1603686564627917, 2.1447866879178012, 2.131449545559774, 2.1199052992212533, 2.1098155778333156, 2.100922040241039, 2.093024054408307, 2.0859634472658626, 2.0796138447276835, 2.073873067904019, 2.0686576104190477, 2.0638985616280254, 2.0595385527532963, 2.05552943864287, 2.051830516480281, 2.048407141795243, 2.0452296421327034, 2.042272456301236, 2.039513446396408, 2.0369333434600976, 2.0345152974493392, 2.032244509317719, 2.030107928250338, 2.0280940009804462, 2.0261924630291066, 2.024394163911966, 2.022690920036762, 2.0210753903062715, 2.0195409704413745, 2.018081702818439, 2.016692199227822, 2.0153675744437627,2.0141033888808457, 2.0128955989194246, 2.011740513729764, 2.0106347576242314, 2.0095752371292335, 2.0085591121007527, 2.007583770315835, 2.0066468050616857, 2.005745995317864, 2.0048792881880577, 2.004044783289136, 2.0032407188478696, 2.002465459291016, 2.001717484145232, 2.000995378088259, 2.0002978220142578, 1.9996235849949402, 1.998971517033376, 1.9983405425207483, 1.997729654317692, 1.9971379083920013, 1.9965644189523084, 1.996008354025304, 1.9954689314298386, 1.994945415107228, 1.9944371117711894, 1.9939433678456229, 1.993463566661884, 1.9929971258898527, 1.9925434951809258, 1.992102154002232, 1.9916726096446793, 1.9912543953883763, 1.9908470688116922, 1.9904502102301198, 1.990063421254452, 1.989686323456895, 1.9893185571365664, 1.9889597801751728, 1.9886096669757192, 1.9882679074772156, 1.9879342062390228, 1.9876082815890748, 1.9872898648311672, 1.9869786995062702, 1.986674540703777, 1.986377154418625, 1.9860863169510985, 1.9858018143458114, 1.9855234418666061, 1.9852510035054973, 1.9849843115224508, 1.9847231860139618, 1.98446745450849, 1.9842169515863888
これは、 の正規 (0,1) 分布の逆 CDF に漸近的に近づいてc=.95
います。
-sqrt(2)*InverseErf(-c) = 1.959963984540054235524594430520551527955550...
逆関数については、 http://mathworld.wolfram.com/InverseErf.htmlを参照してください。少なくとも 474 個のデータ ポイントが存在するまで、 は 1.96 に丸められないことにerf()
注意してください。g((1-.95)/2,n-1)
29 個のデータ ポイントがある場合、2.0 に丸められます。
経験則として、n
従来の通念による 30 ではなく、少なくとも 300 までは通常の近似の代わりに Student-t を使用する必要があります。参照。http://www.johndcook.com/blog/2008/11/12/ .
Cornell の Ping Li による「Improving Compressed Counting」も参照してください。