(JAPLA 2006/01/28)
カテゴリカルデータの「散布度」につて
帝京平成大学 鈴木義一郎
順序尺度のあるカテゴリカルデータに対して、隣り合ったカテゴリー間には1、2つ離れていれば2というような数値を与えてやれば、連続型データに対する「平均差」に対応するもので散布度の尺度を与えることができる。また名目尺度のデータに対しても、異なるカテゴリー間全てに1の距離があるものと解釈すれば、同様の散布度の尺度を与えることができる。
n個の連続型データに対して、平均を媒体としないで
によって定義されるものが Giniによって導入された「平均差」で、この尺度は各データ間の(絶対差による)“ずれ”の平均である。これも、標準偏差や平均偏差などとどうように散布度の尺度として用いることができる。
順序尺度のカテゴリカルデータのi番目のカテゴリーの観測度数をとする。隣り合ったカテゴリー間の距離を1と考えると
といった対応になる。
そこで、第1、第2累積度数を次のように定義する。
このとき、散布度を表す尺度(v)は
のように与えられる。
さらに、絶対差の代わりに差の平方を考えると、連続型データの標準偏差に対応する
が、やはり散布度の尺度と考えることが出来る。
『日本人の国民性調査』のデータで、「お盆の頃、いつもは別々に住んでいる親族と一緒に過ごしたいとおもいますか」という質問に対する回答パターン
@ 必ず過ごしたいと思う、
A できれば過ごしたいと思う、
B あまり過ごしたいとは思わない、
C 過ごしたいとは思わない
について、男女別の回答のデータを
ordm=:194 516 73 41
ordf=:248 606 81 39
のように与える。さらに、年齢階級別のデータも次のように入力する。
Ord20=:20 104 13 7 ord25=:33 82 16 9 ord30=:21 97 19 6 ord35=:34 106 11 4 ord40=:49 163 17 12 ord45=:57 121 19 8 ord50=:42 106 20 6 ord55=:43 111 10 7 ord60=:59 107 10 9 ord65=:42 54 11 6 ord70=:42 71 8 6 |
ord_data 20 104 13 7 33 82 16 9 21 97 19 6 34 106 11 4 49 163 17 12 57 121 19 8 42 106 20 6 43 111 10 7 59 107 10 9 42 54 11 6 42 71 8 6 |
そこで、順序尺度データに対する散布度“v”を算出する関数を次のように定義する。
div_u=:[:+/}.*[:}:+/\^:2
div_n=:[:(*<:)+/
div_v=:+:@div_u%div_n
div_u ord35 6818 div_n ord35 23870 div_v ord35 0.571261 div_v"1 ordm,:ordf 0.693836 0.673193 |
div_u ord65 5256 div_n ord65 12656 div_v ord65 0.830594 |
div_v"1 ord_data
0.574883 0.779548 0.623855 0.571261
0.632918 0.708656 0.690984 0.637771 0.715159 0.830594 0.734658
さらに、絶対和や平方和を求める関数を
sum_ab=:[:+/^:2([:*/~])*[:|[:-/~i.@#
sum_sq=:[:+/^:2([:*/~])*[:*:[:-/~i.@#
のように定義すれば、
sum_ab ord35
13636
(sum_ab%div_n)ord35
0.571261
が散布度“v”を与える関数
sum_sq ord35
18460
div_s=:[:%:sum_sq%2:*[:*:+/
div_s ord35
0.619825
div_s ord65
0.808173
が散布度“s”を与える関数である。
次に、名目尺度データの場合は、便宜上カテゴリーに番号を付して、i番目のカテゴリーの観測度数をとする。カテゴリー間には距離のようなものがないから
といった対応になるから、
が平均差に対応する散布度の尺度を与えることになる。
div_d=:13 :'(n-(+/*:y.)%n)%<:n=.+/y.'
同じ『日本人の国民性調査』のデータで、人の暮らし方で「最も重視する項目」を
@ 一生懸命働き金持ちになること A まじめに勉強し名を上げる B 自分の趣味にあった暮らし C クヨクヨせずのんきに暮らす |
D清く正しく暮らす E社会のために全てささげる Fその他 GD.K. |
の中から1つ選択させる、男女別の回答のデータを
nomm=:323 55 695 363 126 90 28 44
nomf=:307 44 794 593 99 66 35 76
のように与える。さらに、年齢階級別のデータも次のように入力する。
nom20=:47 10 162 58 12 3 4 7 nom25=:55 11 131 58 12 7 1 5 nom30=:54 8 154 61 7 10 3 13 nom35=:52 10 133 89 16 11 7 11 nom40=:96 10 205 97 21 19 10 21 nom45=:74 10 178 95 23 18 9 15 nom50=:62 8 149 79 30 14 11 13 nom55=:65 11 128 86 29 25 7 13 nom60=:51 8 123 132 29 16 5 9 nom65=:37 5 65 89 28 15 3 5 nom70=:36 9 61 112 18 18 3 8 |
ord_data 47 10 162 58 12 3 4 7 55 11 131 58 12 7 1 5 54 8 154 61 7 10 3 13 52 10 133 89 16 11 7 11 96 10 205 97 21 19 10 21 74 10 178 95 23 18 9 15 62 8 149 79 30
14 11 13 65 11 128 86 29 25 7 13 51 8 123 132 29 16
5 9 37 5 65 89 28 15 3 5 36 9 61 112 18
18 3 8 |
div_d nom20 0.652132 div_d nom55 0.777147 div_d 6{.nom20 0.626018 div_d 6{.nom55 0.752119 |
div_d nomm 0.748483 div_d nomf 0.729313 div_d 6{.nomm 0.727045 div_d 6{.nomf 0.698709 |
div_d"1(6{."1 nom_data)
0.626018 0.684634 0.64858 0.704595
0.694871 0.704188 0.716143 0.752119 0.720235 0.748427 0.719336
div_d f=:23 2 21 1 8 15 1 3 0.77786 |
div_d 6{.f 0.752795 |