見出し画像

SQL分析データ準備と基礎統計#15:質的変数の集計

統計的な定義はともかく、分析の際に意識する変数の種別としては量的な違いを示す量的変数と、単に違いを示す質的変数があります。ただ境目は不明瞭です。わかりやすい量的変数としては、売上金額のような、値が連続していてそのまま件数カウントしても意味がないくらいばらけているものです。そのため外形的には数値型のデータとなります。これに対して質的変数は外形的には文字型で、分かりやすい例としては性別などがあげられます。一方で年齢はそこそこ連続していますが、年齢別のカウントをしても、分布を理解するのはさほど苦労しないでしょう。そう考えるとそのまま件数をカウントして構成比をみるのが可能であるか、もしくは連続していてそのまま件数をカウントしても把握が難しそうかを基準に選り分けるのがよさそうです。
以降では量的、質的変数と分けたときの質的変数の集計について整理します。


質的変数のカウント

質的変数のカウントはしごく単純な話で、例えば100人の顧客データがあり、そのうち80人が社会人、20人が学生なら、それをそのままカウントするという話です。
構成比は80%と20%になります。そしてこの場合、データ列としては例えば「社会的地位」のような列名で社会人 or 学生というバリエーションで保持できます。さらに「社会人フラグ」のような列で、社会人の場合は1、学生の場合は0という形でも保持することにより、社会人フラグ=0で学生を特定することも可能です。このようなデータを2値と呼び、前者を縦持ち、後者を横持と呼びます。
これに対して、社会人 or 学生という選択肢に対して、無職という選択肢も含めた3値以上になる場合は、01のフラグデータの列1つで表現することはできなくなります。この場合は縦持ちの場合列内のバリエーションが増えるだけですが、横持の場合は「社会人フラグ」、「学生フラグ」、「無職フラグ」という3列で表現することになります。このとき各顧客で見た場合には3つのうちどれか1つに1のフラグがたち、それ以外は0となりますが、このような列表現により、例えば社会人で夜間に学校に通っているようなケースで、社会人と学生の両方にフラグを立てることもできるようになります。そしてこの場合の構成比の合計は100%を超えます。


リフト

件数と構成比ではどのような質=カテゴリーが多いか、カテゴリーの分布がどのようになっているかを理解できます。次に把握したいのは、データ全体をグループに分けたとき、そのグループ内の構成比がどのように偏っているかです。このグループを群と呼び、上述の100名の顧客を、「購入」と「未購入」の2群に分けるとします。わかりやすくそれぞれ50人ずついるとすると、80人の社会人と20人の学生がいずれかの群に所属します。
両群が同じ構成比であるとすると、40人と10人となりますが、実際には「購入」群は35人と15人、「未購入」群は45人と5人に分かれたとしましょう。そうするとそれぞれの構成比は70%と30%、90%と10%となります。もともとの分母は80%と20%ですので、「購入」群における学生は全体が20%なのに30%であることから、0.3/0.2=1.5倍の偏りがあることが分かります。この偏り、もしくは特定の群に入ったときにおける構成比の跳ね上がりをリフトと呼びます。構成比とは言い換えれば所属確率であり、ある特定の条件下で所属確率がどのように変わるのかをここでは見ています。通常20%の確率でしか発生しない学生が、「購入」群という条件下では30%に跳ね上がる = 学生の購入確率は通常よりも1.5倍跳ね上がるとみることができるのです。
リフトは全体(母集団)における確率を分母に、特定条件下における確率を分子にして得られます。したがってリフト1.0であるということは確率変動が起きないことを意味し、1より大きければその群との連動性が高いことを、小さければ連動性が低いことを意味します。群を機械学習における結果変数と考えると、結果との連動性が高いかどうかを判定する指標となるため、分析においては頻用されます。


2群の質的変数

以下は群が2群の場合の質的変数の集計サンプルです。ここで質的変数はcol1で、離反フラグが群を示し、01のフラグで表現されるとします。この場合、離反フラグをカウントすることにより、離反に反応する変数値をリフトとして炙り出すことができます。また01フラグの2群であるということは、0側か1側のどちらかだけを把握すれば良いということになります。複数変数が存在する場合は、これをunionして変数分取得する、もしくは空のテーブルを用意し、insertして変数分処理後都度書き込ませ、あとから参照します。


3群以上の質的変数

3群以上の場合は2群とは異なり、それぞれについて集計が必要です。まずは群と変数ごとに以下のようなSQLを用意します(/*★*/部分)。可変部分は変数ごとに作成が必要なため、Excelのconcatenateとオートフィルを利用するか、メタデータテーブルを参照してSQLを量産します。その後の処理を想定し、列名を統一しておくのがポイントです。また質的変数とは言え数値型で保持されているケースがあり、さらに別の変数では文字型で保持されている場合には、文字型に統一してあげる必要があります。

次に作成されたSQLをunionでまとめ、以降のSQLを上かぶせします。もちろん個別に上述のSQLに対して上かぶせしてinsertしてもかまいません。分母側では全体における各変数値の発生確率を算出し、分子側では特定の群という条件下における各変数値の発生確率を算出して、最後に比較しています。

///

#sql #teradata #analytics

この記事が気に入ったらサポートをしてみませんか?