スタートページJavaScriptライブラリ目次

統計検定関連 JavaScript関数ライブラリ test.js の利用解説書

ご利用にあたって

Z検定

ここでの上側確率分布表の見方

分布表[i] に z = 0.01*i の上側確率 p が入っている。z=0 (i=0) のとき p=0.5、z= 4.0 (i=400) のとき p=0.00003 の一様減少であり、z> 4.0 のときは p=0 とする。

代表的なzとpの表
   z     p
  1.0   0.135
  1.65  0.05
  2.0   0.023
  2.32  0.01
  3.0   0.001


正規分布表(μ,σ)の参照

 xより大の上側確率pを得る。
   var p = testZxtop(x [,μ,σ]); 
 上側確率pのxを得る。
   var z = testZptox(p [,μ,σ]); 

μ,σを省略すると。μ=0、σ=1 の標準正規分布N(0,1) になります。
一方だけの省略はできません。

testZxtop(x,μ,σ)  正規分布表 x→p

z = (x - μ) / σ と変換することにより、標準正規分布での z → p になります。

x= μ= σ= p=

testZptox(p,μ,σ) 正規分布表 x→p

標準正規分布で p → z を行い、x = μ + z*σ により x を求めます。

p= μ= σ= x=

id="testZIE">testZIE 正規分布の区間推定
  var [下限, 上限] = testZIE(p,μ,σ); 

正規分布(μ,σ)に従う母集団において、下限~上限 の範囲に属するが確率pであるとき、下上限の値を求めます。
例題
「ある大規模の試験の成績は、平均点μは50点、標準偏差σは10点の正規分布であることが知られている。このことから、受験者の90%は何点から何点の間にあると推定できるか。」
解法
下上限間の確率が p ならば、上限よりも大きい部分の確率 p1 = (1-p)/2 になる。
x = testZptox(p1,μ,σ) より x が求められるが、これが上限になる。
下限は 2μ-x になる。

p= μ= σ= 下限 = 上限 =

testZtest 正規分布の点検定
  var p = testZtest(x,μ,σ); 

ある値 x が正規分布(μ,σ)に従う母集団に属する確率 p を求める。
例題
「ある生物の体重は平均μ=50、標準偏差σ=10である。たまたまX=70の個体が見つかった。この個体は生物よりも重いといえるか。」
答:p=0.023 有意水準5%ならば重いといえるが、1%ならば重いとはいえない。)
解法
このケースではx>μなので上側確率を使う。x<μの場合は x* = 2μ-x(=145) と変形して、x* の上側確率を用いればよい。
上側確率 p = testZxtop(x,μ,σ) がこの製品の出現確率である。
p < 0.01 ならば、有意水準1%(信頼度99%)で異常が生じたといえる。
p < 0.05 ならば、有意水準5%(信頼度95%)で異常が生じたといえる。
p > 0.05 ならば、有意水準5%(信頼度95%)で異常が生じたと断定することはできない

x= μ= σ= p =

t検定

参照:t分布と推定・検定


t値の計算
  var t = testTvalue(df, p)

t分布表から、自由度 df、有意水準 p に対応するt値を得ます。
p = 0.1, 0.05, 0.025, 0.01, 0.005 に対応しています。
片側での表記ですので、両側 0.1 のときは 0.05 を用います。
信頼係数(1-有意水準) 0.9 0.95 0.975 0.99 0.995 でも同じです。

自由度= 有意水準= t値=

t検定 平均の区間推定
  testTIETrace(表示場所, n, μ, σ, p)
  var [lower, upper] = testTIE(n, μ, σ, p)
  testTIExTrace(表示場所, x, p)
  var [lower, upper] = testTIEx(x, p)

例題「10人の平均身長が 170cm、標準偏差が 9cmであったとき、身長平均の有意水準 0.05 での信頼区間を求めよ。」
testTIEx では、各人の身長 x を入力して、平均、標準偏差を計算して信頼区間を求める。
●左と右の両側になるので、有意水準確率は 0.05/2= 0.025 を用いる。

testTIE

標本数n= 平均μ0= 標準偏差σ= 有意水準p=

testTIEx

標本x↓有意水準p=


t検定 標本平均と母集団平均の比較
  testTtest1Trace(表示場所, μ, n, μ0, σ, side) 
  var [t0, tp] = testTtest1(μ, n, μ0, σ, side) 
  testTtest1xTrace(表示場所, μ, x, side) 
  var [t0, tp] = testTtest1x(μ, x, side) 

例題「母平均はμ=50点である。標本n=16人での結果は、平均はμ0=55点、標準偏差はσ=5点であった。標本の平均点数は母平均より高いといえるか、高いならば有意水準(0.01, 0.05 など)を示せ。」
 上側検定では side="upper"、下側検定では side="lower" とする。例題では "upper"
標本から計算したt値が t0. t分布表から得られた有意水準0.05の値が t であり、
 上側検定で t < t0 あるいは下側検定で t > t0 ならば「有意水準0.05で有意差がある」とする。
(有意水準 0.1 でも有意差がないときは、 tp=-1 を戻す。

testTtest1

母平均μ= 標本数n= 標本平均μ0= 標準偏差σ= 上下側side=

testTtest1x

標本x↓母平均μ= side=


t検定 2変数の平均の比較
  testTtest2Trace(表示場所, nx, μx, σx, ny, μy, σy, side) 
  var [t0, tp] = testTtest2(nx, μx, σx, ny, μy, σy, side) 
  testTtest2xyTrace(表示場所, x, y, side) 
  var [t0, tp] = testTtest2xy(x, y, side) 

例題「製品Xの標本数(nx)10個の特性の平均(μx)は37、標準偏差σxは4
   製品Yの標本数(ny) 6個の特性の平均(μy)は32、標準偏差σyは3
   であった。Xの特性値ははYよりも大といえるか。」
解法
①標本X、Yから、次式により t0 を算出する
 t0 = (μx - μy)/(σ√(1/nx + 1/ny) 
   ただし σ=√[(dfxσx2 + dfyσy2) / (dfx + dfx)]、  dfx、dfyは自由度 nx-1, ny-1
②t分布表から、自由度df=dfx + dfx = nx + ny - 2 から有意水準p(0.01,0.05など)のt値 t を調べる。
③t0 と t の大小により有意水準 tp=0.05など を戻す。
  上側検定で t < t0 あるいは下側検定で t > t0 ならば「有意水準0.05で有意差がある」とする。
  (有意水準 0.1 でも有意差がないときは、 tp=-1 を戻す。

testTtest2

nx= μx= σx=
ny= μy= σy= 上下側side=

testTtest2xy

side=
X系列


Y系列


χ2検定

参照:χ2分布と推定・検定


χ2値の計算(上側確率)
  var χ2 = testChi2Value(自由度, 上側確率)

自由度 df(1~120 の整数)、有意水準(上側確率)p の χ2値を χ2分布表から求めます。
この関数は、χ2検定の多くの関数で用いられます。
下側確率の場合は、1-p とします。
両側確率のときは、p/2 で上側、1-p/2 で下側確率になります。

自由度 df = 有意水準 p = χ2値=

χ2分布 有意水準の計算
  var 有意水準 = testChi2Pvalue(自由度, χ2)

この関数は、χ2検定の多くの関数で用いられます。
自由度 dfでの分布表がχ2のときの有意水準 p を戻します。
df=10 のときのχ2
     p= 0.995,  0.99,  0.975, 0.95,  0.9,  0.1   0.05,   0.025, 0.01,  0.005
  χ2[10] = [2.156, 2.558, 3.247, 3.940, 4.865, 15.99, 18.31, 20.48, 23.21, 25.19]
結果の p
  chi2 = 1.5 → p = 0.995 有意水準 0.995 で有意差があるといえる
  chi2 = 3.0 → p = 0.95  有意水準 0.95 で有意差があるといえる
  chi2 = 4.5 → p = -1   有意水準 0.9 または 0.1 でも有意差があるといえない
  chi2 = 17  → p = 0.05  有意水準 0.05 で有意差があるといえる
  chi2 = 24  → p = 0.01  有意水準 0.01 で有意差があるといえる

自由度 df = chi2 = 有意水準 p =

χ2検定 分散の区間推定
  testChi2IETrace(表示場所, n, v, p)
  var [lower, upper] = testChi2IE(n, v, p)
  testChi2IExTrace(表示場所, x, p)
  var [lower, upper] = testChi2IEx(x, p)

上の引数では、v=s2 と表示しています。
母分散σ2 の正規分布に従うn個の標本分散をs2 とすると、
   χ2 = (n-1)s2 / σ2
は、自由度 df = n-1 のχs2分布に従がいます。
有意水準を p とすれば、上側確率は p/2、下側確率は 1-p/2 であり、信頼区間は
  下限 lower = df*s2 / χ2[df][p/2]
  下限 upper = df*s2 / χ2[df][1-p/2]
で求められます。
χ2[][] は、testChi2Value(df, p) で求めます。

testChi2IET


標本数 n = 標本分散 s2 = 有意水準 p =

testChi2IEx

有意水準p=
標本


χ2検定 母分散との比較
  testChi2Test1Trace(表示場所, v0, n, vx)
  var p = testChi2Test1(v0, n, vx)
  testChi2Test1xTrace(表示場所, v0, x)
  var p = testChi2Test1x(v0, x)

母分散が v0 = σ2であり、n個(自由度df=n-1)の標本の標本分散が vx=s2 であるとき、
vx は v0 に比べて大きい(小さい)といえるか、そのときの有意水準 p を求めます。
  vx > x0 のときは、p = 0.005 ~ 0.1、vx < x0 のときは、p = 0.995 ~ 0.9 になります。
計算によるχ2=chi2=df(vx/v0) とχ2[df]分布表の値との比較になります。
  そのときの有意水準は p = testChi2Pvalue(df, chi2) で得られます。
(分散は標準偏差2ですから、標準偏差が小ならば分散も小になるので、標準偏差の比較でもあります。
標準偏差の比較では正規分布による検定(Z検定)が用いられます。)

testChi2Test1

母分散 v0 = 標本数 n = 標本分散 vx =

testChi2Test1x

標本x↓母分散 σ2=


χ2検定 適合度検定
  testChi2fitTrace(表示場所, x, y)
  var p = testChi2fit(x, y)

本来は多数の変数を扱えますが、ここでは2変数に限定します。
理論値 x と 実測値 y とが一致しているかどうかを n 個の組 (xi, yi) のデータで比較し、適合度(一致度)の有意水準 p を戻します。
製品xと製品yについてn個の特性値を比較して、xとyに違いがあるかないかを検定するにも適用できます。
標本からのχ2 = Σ[(xi - yi)2 / xi] で求めます。 自由度 df は、(組数-1)(変数-1) になるので、df=(n-1)(2-1) = n-1 です。
分布表のχ2[df] から有意水準 p を求めます。

x=
y=
x=
y=

χ2検定 2x2分割表
  testChi2cont2x2Trace(表示場所, a, b, c, d)
  var p = testChi2cont2x2(a, b, c, d)

下表のように2x2の分割表が与えられたとき、層や特性に差があるかどうかの有意水準pを戻します。
χは次のように計算できます。
      (ad-bc)2 (a+b+c+d)
  χ = ─────────────
      (a+b)(c+d)(a+c)(b+d)
a~dに10よりも小さい値があるときは、Yatesの補正をします。
  上の (ad-bc)2 → [((ad-bc)±(a+b+c+d)/2]2  ±は、[ ]2の値が小になるよう選択
単純には、χが大きければ、有意差があることになります。
自由度 df=(2-1)(2-1)=1 なので、χ分布表から 有意水準 p を求めます。

特性A特性B
層X a b  計算を単純にするために、ad>bc
層Y c d  となるように設定してください

F検定

参照:F分布と推定・検定


F値の計算
  var [f5, f1] = testFvalue(横自由度, 縦自由度)

F分布表から、上側累積確率
  f5 = F0.05(横自由度, 縦自由度)
  f1 = F0.01(横自由度, 縦自由度)
を求めます。

横自由度= 縦自由度= f5= f1=

下側F値の計算
  var [f5, f1] = testFvalueLower(横自由度, 縦自由度)

F分布表から、下側累積確率が 0.95, 0.99 のF値を求めます。
 F分布表は、通常は上側 0.05, 0.01 しかないので、次の公式を用います。
  F1-p[横自由度, 縦自由度」= 1/Fp(縦自由度, 横自由度)
例:F0.05(10, 5) = 4.735 は F分布表から求められます。
f5 = F0.95(5, 10) = 1/F0.05(10, 5) = 1/4.735 = 0.211

横自由度= 縦自由度= f5=F0.95= f1=F0.99=

F検定 2変数分散比の検定
  testFtest2Trace(表示場所, na, v1, n2, v2)
  var p = testFtest2(n1, v1, n2, v2)
  testFtest2xyTrace(表示場所, x, y)
  var p = testFtest2xy(x, y)

下の入力データで、工程1の分散 v1 が、工程2の分散 v2 よりも大きい(小さい)といえるかを
  分散比 = v1/v2 >< Fp(n1-1, n2-1) により、有意水準 p=0.05, 0.01
で検定します。
通常は、v1/v2 > 1 として上側確率を用いるので、分散が大きいほうを v1(工程1=分子側)にします。
すなわち、大きいかどうかの検定です。 ここでは、v1 < v2 のときも、下側確率を用いて、小さいかどうかの検定もできます。

testFtest2

 標本数 分散
工程1 n1 v1
工程2 n2 v2

testFtest2xy

工程1 x


工程2 y



ANOVA F検定による分散分析

F分布による分散分析 ANOVA(analysis of variance)
  二つの平均値の相違を検討するにはt検定を用いるが、 三つ以上の平均値の相違を検討する場合にはF検定を用います。
  結果は、全ての群に差があるとはいえない/どれかに差があるといえるの有意水準を求めることです。
F検定の流れ
  自由度を加味した群間変動2の総和を(群内変動2)の総和で割り算し、F値を算出する
  F値が大きいかどうかを判断する閾値を2種類の自由度を使用したF分布から算出する
  F値と閾値の大きさを比較する
F検定には4種類の方法があります。
  分散分析の種類           名称            ここでの関数名
  一元配置要因分散分析(対応なし)  one way factorial ANOVA  testFAnova1Fact
  一元配置反復測定分散分析(対応あり)one way repeated ANOVA  testFAnova1Rep
  二元配置要因分散分析(対応なし)  two way factorial ANOVA  testFAnova2act
  二元配置反復測定分散分析(対応あり)two way repeated ANOVA  testFAnova2Rep
参照:分散分析


F検定 一元配置要因分散分析
  testFAnova1FactTrace(表示場所, x); 
  rtn = testFAnova1Fact(x); 

ケース1

例題「ある製品を3つの工程で生産した。各工程の標本の製品特性を「入力」に示した。
   3つの工程で特性平均に差があるといえるか」
特徴:1 対象とする特性は1つ(一元配置)
   2 工程間の標本は独立(対応なし)同じ標本に異なる加工をしたのではない。
   3 どの工程が他の工程と異なるかではなく、全体として差があるかないかを求めている。
入力:
    var x = [ [ 10, 12, 12, 14, 14, 16 ],        // 群(工程)0
       [ 12, 10, 12, 13, 12, 12, 14, 11, 12 ],  // 群1
       [ 10, 12, 11, 10, 10, 13, 11 ] ];     // 群2
  var rtn = testFAnova1Fact(x);
結果:
 分散分析表 [i] は戻り値 rtn[i] を示します。
  群間変動 群間偏差平方和  群間自由度     群間分散
       Sa=12.95[4]   dfa=m-1=2[5]  Va=Sa/dfa=6.48[6]
  群内変動 群内偏差平方和  群内自由度     群内分散
       Se=40 [7]    dfe=m-n=19[8]  Ve=Ss/dfs=2.11[9]
  全体変動 全体偏差平方和  体自由度     全体分散
       St=52.95[10]   ft=n-1=21[11]  Vt=St/dft=2.52[12]
 分散比 = F値 = Va/Ve=3.077[3]
 F分布表から、F0.05(dfa, dfe) = 3.522[2]  F0.05 = 5.926[1] を得る
  分散比 > F0.05、F0.01 ならば、有意水準 p = 0.05[0] で異なる平均の群があるとし
  分散比 < ならば、異なる平均の群があるとはいえない この例での検定結果 p=-1[0] を戻す。

ケース2

群0


群1


群2


群3



F検定 一元配置反復測定分散分析
  testFAnova1RepTrace(表示場所, x); 
  var rtn = testFAnova1Rep(x); 

ケース1

例題「4つの材料があり加工1とさらに加工2の工程を加えてみた。追加工程により特性の平均に差があるといえるか」
特徴:1 対象とする特性は1つ(一元配置)
   2 同じ標本を用いる(対応あり)
   3 加工1、加工2のどれが効果があったかではなく、全体として差が生じたかどうかを求めている。

入力
    標本  A  B  C  D    群
  var x = [ [ 3, 2, 2, 5],   // 0 加工0 加工前
       [ 7, 4, 1, 4],   // 1 加工1をした
       [ 11, 6, 6, 9 ] ]; // 2 さらに加工2を追加
  var rtn = testFAnova1Rep(x);
出力
 rtn[i]
      自由度 偏差平方和  分散
  標本間   [4] 3  [5] 30  [6] 10.00
  群間    [7] 2  [8] 56  [9] 28.00
  標本*群 [10] 6  [11] 12  [12] 2.00
 分散比 =[3] 14.00  F0.05 =[2] 5.143 F0.01 =[1] 10.92  p =[0] 0.01

ケース2

標本0標本1標本2標本3標本4 標本5標本6標本7標本8標本9
群0
群1
群2
群3
群4

F検定 二元配置要因分散分析
  testFAnova2FactTrace(表示場所, x); 
  vae rtn = testFAnova2Fact(x); 

ケース1

例題「ある反応の反応度は、圧力(因子0)と温度(因子1)が大きく関係している。
   圧力は高・低の2水準、温度は高・中・低の3水準がある。
   この2×3のケースでの反応度を与えて分析することにより、因子・水準の影響を調べよ」

入力:
        温度(因子1)
        高  中  低
  var x = [ [ 30, 18, 16 ],   // 圧力高 ┬ 因子0
       [ 25, 18, 15 ] ];  // 圧力低 ┘
  var rtn = testFAnova2Fact(x);
結果:
 rtn = testFAnova2Fact(x)
  変動要因 変動      自由度   分散     分散比      F0.05     F0.01    有意水準
  因子0  rtn[0]=6.00   rtn[1]=1  rtn[2]=6.00  rtn[3]=1.71   rtn[4]=18.51 rtn[5]=98.5 rtn[6]=-1 差があるとはいえない
  因子1  rtn[7]=160.33  rtn[8]=2 rtn[9]=80.17 rtn[10]=22.90 rtn[11]=19  rtn[12]=99 br> rtn[13]=0.05 差がある
  誤差   rtn[14]=7.00  rtn[15]=2 rtbr>n[16]=3.50
  全変動  rtn[17]=173.33 rtn[18]=5
 結果「圧力による違いがあるとはいえないが、温度による違いは有意水準 0.05 であるといえる」

ケース2

   因子1→ 水準0 水準1 水準2 水準3 水準4
因子0水準0
   水準1
   水準2
   水準3
   水準4

F検定 二元配置反復測定分散分析
  testFAnova2RepTrace(表示場所, x); 
  var rtn = testFAnova2Rep(x); 

ケース1

例題「ある反応の反応度は、圧力(因子0)と温度(因子1)が大きく関係している。
   圧力は高・低の2水準、温度は高・中・低の3水準がある。
5つの異なる原料から標本をとり、それぞれの標本を6つの試料に分けて、
   この2×3のケースで実験を行った。因子・水準の影響を調べよ」

入力
:   (x は3次元配列 [因子0水準][因子1水準][標本])
         標本→         因子1 因子0
  var x = [ [ [18, 22, 20, 18, 22],   高温 ┐
        [18, 14, 18, 24, 16],   中温 ├高圧
        [14, 18, 16, 14, 18] ],  低温 ┘
       [ [21, 18, 17, 15, 19],   高温 ┐
        [17, 19, 16, 17, 21],   中温 ├低圧
        [15, 13, 14, 15, 18] ] ]  低温 ┘
 var rtn = testFAnova2Rep(x);
出力

 rtn = testFAnova2Rep(x)
  変動要因     変動       自由度      分散        分散比          F005          F001        有意水準
  因子0    rtn[0] =  7.5  rtn[1] = 1  rtn[2] = 7.5  rtn[3] =1.304  rtn[4] =4.260  rtn[5] =7.823  rtn[6] = -1  
  因子1    rtn[7] = 65.0  rtn[8] = 2  rtn[9] =32.5  rtn[10]=5.652  rtn[11]=3.403  rtn[12]=5.614  rtn[13]= 0.01
  交互作用  rtn[14]=  5.0  rtn[15]= 2  rtn[16]= 2.5  rtn[17]=0.435  rtn[18]=3.403  rtn[19]=5.614  rtn[20]= -1 
  誤差      rtn[21]=138.0  rtn[22]=24  rtn[23]= 5.5
  全変動    rtn[24]=215.5  rtn[25]=29                有意水準 -1 は「有意差があるとはいえない」を示す

ケース2

因子0水準数=  因子1水準数=  標本数=
  水準    標本→
因子0 因子1