科学の箱

科学・IT・登山の話題

機械学習

独立性の検定 2つ

投稿日:2014年6月3日 更新日:

ニートの年齢別割合が1996年と2012年で関連性があるか独立性の検定をしてみる。

ニートの割合

 1996 2012
15~19歳 9 9
20~24歳 12 17
25~29歳 10 18
30~34歳 9 18
合計 40 63

http://www.shiruporuto.jp/finance/tokei/stat/stat003.html

データを作成する。

> neet_1 <- matrix(c(9,9,12,17,10,18,9,18),ncol=2, byrow=T)
> neet_1
     [,1] [,2]
[1,]    9    9
[2,]   12   17
[3,]   10   18
[4,]    9   18

Χ二乗検定

> chisq.test(neet_1)

        Pearson's Chi-squared test

data:  neet_1 
X-squared = 1.4711, df = 3, p-value = 0.689

調査年度の違いによるニート年齢層の割合に違いは見られないようだ。ついでにフィッシャーの正確性検定も実行してみる。

> fisher.test(neet_1)

        Fisher's Exact Test for Count Data

data:  neet_1 
p-value = 0.6977
alternative hypothesis: two.sided

 

 

下記の検定は計数ではなく、平均値でありχ二乗検定にはそぐわないというコメントをいただいた。

次に正社員の年収とパートタイム労働者の年収が年齢に関連するかを調べる。

  18~19歳 60~64歳
正社員の年収 233 330
パートタイム労働者の年収 57 130
正社員/パートタイム労働者の年収格差 4.1 2.5

http://www.shiruporuto.jp/finance/tokei/stat/stat003.html

予想では年齢が若いと正社員の年収が低い割にはフリーターなどでもある程度稼げる。それに対して、年齢が増えると正社員の年収は高くなり、パートタイムの収入は抑えられるために差が出ると考えられる。

> x <- matrix(c(233, 330,57,130),ncol=2, byrow=T)
> chisq.test(x)

        Pearson's Chi-squared test with Yates' continuity correction

data:  x 
X-squared = 6.5856, df = 1, p-value = 0.01028

有意水準5%で帰無仮説は棄却された。よって年齢で関連性があるといえる。

なぜ計数では利用できるが、平均では利用できないかを考えてみる。ちなみに文章として書いてみたもののかなりうさんくさくなっているのであくまでメモ代わりである。

χ二乗検定では観測データと期待値からχ二乗値を計算し、この値についてχ二乗分布から発生確率を求める。χ二乗分布は観測データと期待値に差がないと仮定したときのχ二乗値について確率をプロットしている。

ここでポイントとなるのがχ二乗検定での入力値は観測値と期待値である。観測値は実際にデータから得られた数値である。”年収”という数値も観測値になりうる。しかし年収の平均値を観測値としてとりあつかえるかというとまた別問題である。

次に期待値である。データから得られた年収については期待値はない。例えば下記の例では正社員の年収と尾パートタイムの年収では期待値がない。このデータをχ二乗検定にかけるときに利用する期待値の計算にかけると何が起きるか。

217.6933 345.3067 563
72.30667 114.6933 187
290 460 750

問 題の一つ目は、サンプル数が異なることを考えると単純に年齢別の正社員の年収の平均を足しても正しい数値にはならない。例えば18~19歳については 233万円、60~64歳では330万円になっている。これを単純に足して563万円としているがこの値は正しくない。この値が何を意味しているかという と、今18歳~から一人、60歳~から一人選び、収入を合計したときに平均すると563万円になるという意味と考えられる。

しかし例えば18歳~については500人、60歳~については1000人調べたとする。このときこのデータにおける平均は以下のようになる。

 ( 233 x 500 + 330 x 1000 ) / 1500 = 297万円

そうすると平均値の合計は297万円 x 2となり値が異なる。

問 題の2つ目は全体の収入の合計から割合を出したとしても期待値にはならない。期待値はΣ得られる値 x 確率で求める値である。上記の計算だと 確率としては正社員では563 / 750を利用しているが、これは確率ではない、全体に占める正社員の金額の割合である。しかも問題の一つ目を考えると母数も怪しい。

書いていてだんだんわからなくなってきたが平均値を足すとか平均値から割合を計算するという行為はなにを計算しているかを考えると何の意味もない。意味がない数字を利用することはできないので、計数値ではない場合にΧ二乗検定は成り立たないと考えられる。

メタ情報

inarticle



メタ情報

inarticle



-機械学習

執筆者:


  1. foo-bar-baz より:

    これは,いけません。

    chisq.test(neet_1)
    数値の単位は,「万人」なのです。
    では,数値を10000倍すればよいかという問題でもありません(10000万倍すれば,高度に有意となりますが)。
    そもそもこれは,全数調査なので,検定にはなじまないデータです。

    chisq.test(x)
    こちらは,数値は,計数データではないので,全く不適切です。
    (平均値なので,小数点以下の数字があるこをを考えても,不適切であることはわかるでしょう…)

  2. […] こちらでサンプル数について指摘をいただいたのでサンプル数によりp値がどのように変わるかをみてみる。 […]

  3. admin より:

    コメントありがとうございます。
    ちなみに10000万倍にすると問題があるというのは有意になってしまうからでしょうか。サンプルが大きいほうがよい結果が得られる傾向があるという理解でいたのですが。

  4. foo-bar-baz より:

    有意になってしまうからではなく,「全数調査なので,検定にはなじまない」ということです。

    > サンプルが大きいほうがよい結果が得られる傾向がある

    そのとおりではあるが,大きすぎるとなんでもかんでも有意になる。統計学的に有意というのと,実質的に意味があるというのは違う。実質的に意味がないのに,サンプルサイズが大きいために統計学的に有意になってもそれこそ意味がない。実質的に意味がないなら,検定しない。データを採るときにはサンプリングサイズ設計しておく。

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Pythonではじめる機械学習 – Chap02

2.1 Classification and Regression 分類問題の目的 クラスがどのようなラベルであるかを予測 分類問題 2つのクラスに分類するバイナリクラシフィケーション 例)Yes/N …

no image

Mahout in Action/chap2

2.1 レコメンドには2種類ある。 collaborative filtering contents based filtering collaborative filteringではコンテンツの内容 …

no image

仕事で始める機械学習 – 2.機械学習で何ができるか – 分類 – パーセプトロン

パーセプトロン 判別式 それぞれのデータに対して重みづけした値 ヒンジ損失 パーセプトロンの損失関数をヒンジ損失という。パーセプトロン基準とも呼ばれる。 sum(wx) 状態 ラベル label*su …

no image

線形回帰とリッジ回帰とラッソ回帰の違い

用語 線形回帰 データから平均二乗誤差を最低にするパラメータΘを求めて、直線で回帰すること $$ y = Θ_0 + Θ_1 \times x $$ コスト関数 損失関数とも呼ばれる。実際のデータと予 …

no image

多変量解析

多変量解析の分類 回帰分析 ロジスティック分析 判別分析 主成分分析 因子分析 共分散 クラスタリング 共分散 Sxy = Σ(Xi – X~)(Yi – Y~) / n 共分 …

2014年6月
« 5月   7月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

side bar top



アーカイブ

カテゴリー