[8.1] 2つの分散の差の検定 |
[8.2] 2つの平均値の差の検定と区間推定(独立データの場合) |
[8.3] 2つの平均値の差の検定と区間推定(関連データの場合) |
[8.4] 2つの割合の差の検定と区間推定 |
独立データのt検定を行う前に、2つの母分散が等しいかどうかをF検定します。その結果に応じて、「等分散を仮定したt検定」あるいは「非等分散を仮定したt検定」に進みます。
等分散性のF検定は、同じ母集団から2つの標本を抽出するとき、その標本分散の比を検定量Fとし、Fが、自由度1と自由度2のF分布に従うことを利用します。検定の手順は、他の検定と同様です。
標本1の分散
検定量 F0 = ---------------
標本2の分散
Rでは、subset( )関数を使って、ある条件を満たすデータだけを抽出することができます。あるいは、変数1 ~ 変数2という式を使うと、変数2のカテゴリを使って、別の変数1のデータを分割することができます。F検定を行う際には、var.test( )関数に、引数として2つのデータを渡してもよいし、あるいはチルダ ~ 式(formula)を渡すこともできます。
標本サイズ(N) | 平 均(Xbar) | 分散(var) | 標準偏差(SD) | |
男性の基本語彙使用率 | 102 | 29.49 | 36.71 | 6.06 |
女性の基本語彙使用率 | 96 | 30.05 | 32.62 | 5.71 |
上のデータに基づいて、あるいは、元のデータを読み込んで、男女の基本語彙使用率の母分散が等しいかどうかを有意水準5%で検定しなさい。
var.test( )にフォーミュラを渡すと、たった1行でF検定を行えます。
先ほどのF検定と比較すると、分母と分子が入れ替わっているため、F値(と信頼区間の値)が異なっていますが、結果のP値はまったく同じ(0.5625)です。
(※注1)この理由は、sample$sexのカテゴリは"F"と"M"という値を取りますが、アルファベット順で先行するFの方を第1のデータと扱うためです。先ほどのF検定では、basic.Mの方を第1引数として渡していました。basic.Fの方を第1引数とすると、ここと同じ分析結果が得られます。
(※注2)変数カテゴリはデフォルトではアルファベット順ですが、factor( )関数を使って順序を並べ替えることができます。asashi.df$$sexで、"M"を先にして、
asahi.df$sex &;lth- factor( asahi.df$sex, levels = c( "M", "F" ) ) var.test( asahi.df$basic ~ asahi.df$sex )を実行すれば、う結果が得られます。
F検定の結果、帰無仮説「2つの母分散が等しい」を棄却できません。このような場合は、等分散を仮定したt検定へと進みます。
R の関数を使いこなそう | |
qf( alpha, df1, df2 ) | 有意水準αのF分布境界値 両側検定のときは、第1引数をalpha/2とする |
lower.tail=T/F | Fのとき、上側の境界値 Tのとき、下側の境界値(デフォルト) |
pf( F0, df1, df2 ) | F0の下側確率(デフォルト) |
lower.tail=F | F0の上側確率 |
var.test( データ1, データ2 ) | 等分散性のF検定を行う |
alternative="検定の型" | "two.sided"(両側検定) "greater"(右片側検定) "less"(左片側検定) |
var.test( データ1 ~ データ2 ) | データ1をデータ2のカテゴリで分割して、F検定を行う (注)データ2に含まれるカテゴリ数は2であること |
F検定の結果、等分散を仮定できるかどうかが判明します。等分散を仮定できるかどうかによって、検定量や自由度の計算のしかたが異なります。
等分散を仮定できる場合、次の検定量が自由度(n1+n2-2)のt分布に従うことを利用して、t検定を行います。
標本1の平均 - 標本2の平均
検定量 T= ------------------------------------------- ,
sqrt( 共通の分散 * ( 1 / n1 + 1 / n2 ) )
標本1の分散*標本1の自由度+標本2の分散*標本2の自由度
共通の分散 V = ----------------------------------------------------------- ,
標本1の自由度+標本2の自由度
標本1の自由度 = n1 - 1
標本1の自由度 = n1 - 1
Rを使って、等分散を仮定する、2平均値の差のt検定を行うには、t.test( )関数に2データを渡し、オプションとしてvar.equal=TRUEを指定します。
標本サイズ(N) | 平 均(Xbar) | 分散(var) | 標準偏差(SD) | |
女性の基本語彙使用率 | 96 | 30.05 | 32.62 | 5.71 |
男性の基本語彙使用率 | 102 | 29.49 | 36.71 | 6.06 |
また、平均値差の95%信頼区間を推定しなさい。
検定量t0=0.669が境界値1.972よりも小さいので、帰無仮説を棄却できます。有意確率P(t>t0は0.504です。95%信頼区間が(-1.089, 2.209)で、間に0を含んでいます。
Rに組み込まれている t.test( )を使っても、同じ結果が得られます。今の場合のように、「2つの母分散が等しいとできる」ケースでは、t.test( ) を実行する際、忘れずにvar.equal=TRUEを指定します。t.test( )はデフォルト(何も指定しない場合)では、2分散が等しくないと仮定しているからです。
F検定の結果、2つの母分散が等しくないと結論されるときは、いわゆるウェルチの検定(Welch's test)を行います。これは、次の式によって検定量Tを求め、それが以下の式で算出される自由度dfのt分布に従うことを利用します。たいへん複雑な式ですが、検定の手順は今までとまったく同じです。
標本1の平均 - 標本2の平均
検定量 T = ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
sqrt( ( 標本1の分散 / 標本1の標本数 + 標本2の分散 / 標本2の標本数 ) )
( 標本1の分散 / 標本1の標本数 + 標本2の分散 / 標本2の標本数 )2
自由度 df = ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
(標本1の分散2/(標本数12*標本1の自由度) + (標本2の分散2/(標本数22*標本2の自由度) )
Rでは、t.test( )関数に2つのデータを渡し、var.equal=FALSEを指定して、検定を行います。
標本サイズ(N) | 平 均(Xbar) | 分散(var) | 標準偏差(SD) | |
男性の漢字使用率 | 102 | 35.54 | 48.69 | 6.98 |
女性の漢字使用率 | 96 | 29.02 | 28.21 | 5.31 |
もとのデータを読み込んで、漢字使用率の平均が男女間で等しいかどうか有意水準5%で検定しなさい。また、平均値の差の95%信頼区間を推定しなさい。
平均値の差が0である(平均値の等しい)2つの母集団から1対を抽出し、その差を D = X1-X2とする。N 個の対からなる標本があるとき、次の検定量Tが自由度(N-1)のt分布に従うことを利用して検定を行います。
差Dの平均
検定量 T = ----------------------------------
差Dの標準偏差 / sqrt(標本サイズ)
Rでは、t.test( )関数に、引数として2データを渡し、オプションとして paired=TRUE を指定します。等分散に関するF検定を行う必要がないので、var.equalに関するオプション指定も必要ありません。
標本サイズ(N) | 平 均(Xbar) | 標準偏差(SD) | |
漢字使用率 | 200 | 28.51 | 5.07 |
過去形使用率 | 200 | 31.27 | 22.10 |
このデータをRで読み込んで、漢字使用率と過去形使用率の平均が等しいと見なしてよいか、有意水準5%で検定しなさい。また、差の95%信頼区間を推定しなさい。
P値(有意確率)が0.088ですので、5%レベル有意でないことがわかります。また、平均値差の95%信頼区間が0を含んでいることからも、有意でないことが確認できます。
確認のために、上の公式に従って、検定を行ってみます。
R の関数を使いこなそう | |
t.test( データ1、データ2 ) | 2つの母平均の差のt検定を行う |
paired=T/F | TRUE(対応のあるt検定) FALSE(対応のないt検定、デフォルト) |
var.equal=T/F | TRUE(等分散を仮定するt検定) FALSE(非等分散を仮定するt検定=ウェルチの検定) |
alternative="検定の型" | "two.sided"(両側検定、デフォルト) "greater"(右片側検定) "less"(左片側検定) |
2つの標本においてあるイベントの発生する割合に基づいて、2つの母割合が同じかどうかを検定します。割合πの母集団から標本抽出されるとき、標本サイズが30以上の場合、次の検定量Tが標準正規分布に近似することを利用します。検定の手順は今までとまったく同様です。
| 標本1での割合 - 標本2での割合 |
検定量 T = ---------------------------------------------------------------------------------,
sqrt( 標本全体での割合 * ( 1 - 標本全体での割合 ) * ( 1/標本数1+1/標本数2 ) )
Rでは、まずxtabs( )で分割表を作成し、必要とされる情報をprop.test( )関数に渡します。Rでは、デフォルトの場合、イェーツの補正(Yates' correction)を行った次の式で検定量を算出します。この補正を行わないときは、correction=FALSEを指定します。
| 標本1での割合 - 標本2での割合 | - 0.5 * ( 1/標本数1+1/標本数2 )
検定量 T = ---------------------------------------------------------------------------------,
sqrt( 標本全体での割合 * ( 1 - 標本全体での割合 ) * ( 1/標本数1+1/標本数2 ) )
明喩の使用あり | 明喩の使用なし | 標本サイズ | |
男性 | 36(35.3%) | 66(64.7%) | 102 |
女性 | 27(28.1%) | 69(71.9%) | 96 |
男性と女性の間で、擬音語を使用する割合が同じと言えるかどうか、有意水準5%で検定しなさい。また、割合の差の95%信頼区間を推定しなさい。
表面的には男性の明喩使用が女性よりも約7ポイント多いのですが、割合の差の検定の結果は有意となりませんでした。95%信頼区間が0を含んでいることによっても確認されます。
R の関数を使いこなそう | |
xtabs( ~ カテゴリデータ ) | データのカテゴリごとの頻度集計 |
xtabs( ~ カテゴリデータ1+カテゴリデータ2 ) | 2元分割表を作成 データ1が表側、データ2が表頭の変数 |
addmargins( 表データ ) | 行と列の合計を追加表示する |
prop.table( 表データ, margin ) | 行と列の合計を追加表示する margin=1: 行パーセント、margin=2: 列パーセント |
prop.test( yesの頻度ベクトル, 全体の頻度ベクトル ) | 割合の差の検定を行う 3つ以上の割合の差の検定も可能 |
correction=T/F | T:イェーツの補正を行う(デフォルト) F: 補正を行わない |