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

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

ご利用にあたって

t検定

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

t値の計算
  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値=

t検定 平均の区間推定
  testTIETrace(表示場所, n, μ, σ, p)
  lower, upper = testTIE(n, μ, σ, p)
  testTIExTrace(表示場所, x, p)
  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) 
  [t0, tp] = testTtest1(μ, n, μ0, σ, side) 
  testTtest1xTrace(表示場所, μ, x, side) 
  [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) 
  [t0, tp] = testTtest2(nx, μx, σx, ny, μy, σy, side) 
  testTtest2xyTrace(表示場所, x, y, side) 
  [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値の計算(上側確率)
  χ2 = testChi2Value(自由度, 上側確率)

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

χ分布 有意水準の計算
  有意水準 = 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)
  [lower, upper] = testChi2IE(n, v, p)
  testChi2IExTrace(表示場所, x, p)
  [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

標本x↓有意水準p=


χ2検定 母分散との比較
  testChi2Test1Trace(表示場所, v0, n, vx)
  p = testChi2Test1(v0, n, vx)
  testChi2Test1xTrace(表示場所, v0, x)
  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)
  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)
  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値の計算
  [f5, f1] = testFvalue(横自由度, 縦自由度)

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

下側F値の計算
  [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)
  p = testFtest2(n1, v1, n2, v2)
  testFtest2xyTrace(表示場所, x, y)
  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]  dft=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

var x = [ [ 10, 12, 12, 14, 14, 16 ], [ 12, 10, 12, 13, 12, 12, 14, 11, 12 ], [ 10, 12, 11, 10, 10, 13, 11 ] ];
群0


群1


群2


群3



F検定 一元配置反復測定分散分析
  testFAnova1RepTrace(表示場所, x); 
  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);
Return での戻り値
 分散分析表  [i] は 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); 
  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   rtn[13]=0.05 差がある
  誤差   rtn[14]=7.00   rtn[15]=2  rtn[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); 
  rtn = testFAnova2Rep(x); 

ケース1

例題「ある反応の反応度は、圧力(因子0)と温度(因子1)が大きく関係している。
   圧力は高・低の2水準、温度は高・中・低の3水準がある。
      5つの異なる原料から標本をとり、それぞれの標本を6つの試料に分けて、
   この2×3のケースで実験を行った。因子・水準の影響を調べよ」
入力:
                       標 本
         A B C D E    因子1 因子0
    var x = [ [ [18, 22, 20, 18, 22],   水準0┐
                [18, 14, 18, 24, 16],      水準1├水準0
                [14, 18, 16, 14, 18] ],    水準2┘
              [ [21, 18, 17, 15, 19],      水準0┐
                [17, 19, 16, 17, 21],      水準1├水準1
                [15, 13, 14, 15, 18] ] ]   水準2┘

    x は3次元配列 [因子0水準][因子1水準][標本]

分散分析表    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