統計学

数量化

2022年8月25日

数量化とは

数量化は
例えば性別などのデータを取る
男と女の2種類がある。

この時1と0を割り当てる分けですが、
性別のデータは男と女とあるので、
男と女の2つの説明変数(ディメンション)を考える。

y=a*男+b*女+c
として、
男のデータであれば、男を1に、女を0にします。y=a*1+b*0
女のデータであれば、男を0に、女を1にします。y=a*0+b*1
このようにしてフラグ付けをして、
 

そして例えば数量化データが4つあるとします。
それこそ血液型ですね!血液型のデータを説明変数にしたい場合もあると思います。
そういう場合、
A型データなら、Aを1にしてそれ以外のデータを0にします。
B型データなら、Bを1にしてそれ以外のデータは0に
AB型データなら、ABを1にしてそれ以外は0
O型データなら、Oを1にしてそれ以外は0
 

\(y=aA+bB+cAB+dO\)
とします。
そうすると、
それぞれ、
\(y=a*1+b*0+c*0+d*0\)
\(y=a*0+b*1+c*0+d*0\)
\(y=a*0+b*0+c*1+d*0\)
\(y=a*0+b*0+c*0+d*1\)
ということになります。
 

このように
数量化したい値分、説明変数を用意してそれを回帰分析に盛り込むことでできます。
これを数量化と言います。
 

数量化の中でも、
数量化I類から数量化6類までありますが、有名なものとして数量化1類から数量化3類を取り上げます。
数量化1類では、数量化を用いたデータが入る回帰分析
数量化2類では、数量化を用いたデータが入る判別分析
数量化3類は、数量化を用いたデータが入るコレスポンデンス分析(correspondence、corrなので、共分散
です。
 

プログラム実装

pythonで数量化の処理を書こうとすると、
pandasにあるget_dummiesメソッドで簡単に数量化処理をしてくれます。
 

import pandas as pd

df = pd.DataFrame(
                  [[19, 20, "男", "春"],
                   [20, 180, "女", "夏"],
                   [24, 0, "男", "秋"],
                   [29, 0, "女", "冬"],
                   [30, 5, "男", "冬"],
                   [39, 350, "男", "夏"],
                   [41, 1000, "男", "春"],
                   [43, 800, "女", "秋"]], columns=["年齢","貯金額","性別", "好きな季節"])

df = pd.get_dummies(df) 
df

 

性別と、好きな季節は文字列になっています。
性別は男と女、
好きな季節は春、夏、秋、冬
の値がそれぞれ入っています。

 
性別の列で、男には1を女には0が入るカラムになったとすると、同じ性別の重みづけを考えた時、
女は値は0になるので、どんな重みづけをしたとしても全て0になり、男の場合は重みづけに1倍したものになるので、回帰分析などの結果に影響を与える。
同じ性別のカラムでも、女は結果に影響を与えないとなると、分析結果に不都合が生じてしまいます。
 

同様に、
好きな季節の列で、春には0、夏には1、秋には2、冬には3と付与するようなことになった場合、
同じカラムになるので、重みづけ係数は同じものになり、
春は全ての値を0にしてしまい、分析結果に影響を与えない情報になってしまい、
冬の場合は他の季節の情報に比べて、分析結果にかなりの影響を与えるものとなってしまい、
分析結果に影響を及ぼします。
 

そのため、数量化では以下のように
別々の重みづけ係数になるように、男と女それぞれ
女なのであれば、男カラムは情報いらないので0にして、
逆に男なのであれば、女カラムの情報いらないので0にして
となります。
 


 

get_dummiesでは全体のデータフレームを引数に渡してしまうことで、
その中で自動的に文字列の値が入っているカラムを検知して、自動的にそのカラムに対して数量化処理を行います。
今回の例であれば、性別と好きな季節がいわゆる文字列の値が入ったカラムになります。
実行してみると、性別は、性別_男、性別_女に、好きな季節は、好きな季節_春、好きな季節_夏、好きな季節_秋、好きな季節_冬というように、それぞれのカラムごとに格納されてる値分のカラムが生成されています。

 

-統計学
-

© 2024 Yosshi Labo. Powered by AFFINGER5