【ウーバーイーツ】店舗データで因子分析【沖縄市】

ウーバーイーツ×沖縄市

ウーバーイーツ】店舗データで因子分析【沖縄市

書籍「Rによるデータサイエンス(第2版)」を読んでいると、以下の表を見つけた。

Rによるデータサイエンス(第2版)

各変数が2つの要素にまとめられており、対象者がどの分野を得意にしているかが一目で分かる。

店舗データを上記と同じように分析した場合、どのような結果になるか気になる。

ということで、今回は店舗データの共通因子を調べてみる。

参考書籍・資料

Rによるデータサイエンス(第2版):データ解析の基礎から最新手法まで
Amazonで金 明哲のRによるデータサイエンス(第2版):データ解析の基礎から最新手法まで。アマゾンならポイント還元本が多数。金 明哲作品ほか、お急ぎ便対象商品は当日お届けも可能。またRによるデータサイエンス(第2版):データ解析の基礎から最新手法までもアマゾン配送商品なら通常配送無料。

主な参考箇所 6 因子分析

概要

変量の標準化

因子分析について調べる

因子数を決める

因子分析を行う

使用するデータ

使用するデータは、私の配達データ。

期間は、2021年5月10日~10月31日。

上記期間の総配達件数は、1528件。※ ダブルピックも1件とカウント。

変量の標準化

今回扱うデータは、前回同様に注文数が多い20店舗となる。

このまま進めようと思ったが、以下の文章を見つけたため、変量の標準化を行うこととした。

変量の標準化
いま調べたように、古典的な因子分析では、変量を標準化します。

多変量解析がわかる

変量の標準化済み↓

因子分析について

共通因子を抽出する方法は因子分析と言うらしい。それについて、参考書籍で調べたところ、以下の文章を見つけた。

因子分析は、変数の間の相関関係から共通因子を求めることで、多くの変数を共通因子にまとめて説明することを目的としている。

Rによるデータサイエンス(第2版)

冒頭で示した表でいうと、理科と算数に正の相関が見られるのなら、理科と算数ができるようになる共通のスキルがあると予想できる。

因子数を決める

5教科を2つの因子(文系科目・理系科目)で分けているように、今回の店舗データもいくつの因子に分けるか決める必要がある。

決め方は、以下のやり方をまねる。

平行分析の関数fa.parallelで因子の数を求めてみよう。

Rによるデータサイエンス(第2版)

> fa.parallel(data)
Parallel analysis suggests that the number of factors = 2 and the number of components = 2

結果、「推奨される因子数は2である」となった。

因子分析を行う

書籍にならって、因子分析をしてみる。

> (data.fac <- factanal(data,factors=2)) #因子数2で因子分析

Call:
factanal(x = data, factors = 2)

Uniquenesses: #独自因子
[1] 0.005 0.005 0.046 0.200 0.686

Loadings: #因子負荷量
Factor1 Factor2
[1,] 0.994 
[2,] 0.895 0.442 
[3,]       0.972 
[4,]       0.890 
[5,] -0.559

Factor1 Factor2
SS loadings 2.118 1.941 #寄与度
Proportion Var 0.424 0.388 #寄与率
Cumulative Var 0.424 0.812 #累積寄与率

Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 1.08 on 1 degree of freedom.
The p-value is 0.298

項目を1つ1つ見てみる。

まずは、独自因子(Uniquenesses)↓

注文数チップ数配達10件当たりのチップ数配達料金1000円当たりのチップ額待機場所からの距離
0.0050.0050.0460.2000.686

書籍には、このように説明されていた。

返された独自因子(uniquenesses)はモデルで説明できなかった情報の比率である。

Rによるデータサイエンス(第2版)

今回の場合で見ると、注文数の独自因子は0.005のため、ほぼ共通因子で説明できていると分かる。一方、待機場所からの距離は0.686と約3割しか共通因子で説明できていないことが分かる。

次に、因子負荷量↓

Factor1Factor2
注文数0.994
チップ数0.8950.442
配達10件当たりのチップ数0.972
配達料金1000円当たりのチップ額0.890
待機場所からの距離-0.559

ネット(統計WEB)で調べると、このように説明されていた。

因子負荷量
factor loading
因子分析において、得られた共通因子が分析に用いた変数(観測変数)に与える影響の強さを表す値で、観測変数と因子得点との相関係数に相当する。

-1以上1以下の値をとり、因子負荷量の絶対値が大きいほど、その共通因子と観測変数の間に(正または負の)強い相関があることを示し、観測変数をよく説明する因子であると言える。

因子負荷量 | 統計用語集 | 統計WEB (bellcurve.jp)

今回の場合で見ると、注文数はFactor1に強く影響されていると分かる。

次に、寄与度、寄与率、累積寄与率を見てみる。

Factor1Factor2
寄与度2.1181.941
寄与率0.4240.388
累積寄与率0.4240.812

ネット(統計WEB)で調べると、このように説明されていた。※寄与度の説明は見当たらなかった。

寄与率
contribution ratio
データの全情報の中で、各要素のもつ情報が占める割合のこと。

寄与率 | 統計用語集 | 統計WEB (bellcurve.jp)

今回の場合で見ると、Factor1が全データの約42%を説明していると分かる。累積寄与率がFactor2で約80%となっていることから、Factor1、2で全データの約80%を説明していることになる。

次に、この一文の意味を考える。

Test of the hypothesis that 2 factors are sufficient.

翻訳機にかけると、「2因子で十分であるという仮説の検定。」となった。

設定した因子数は、妥当だったと分かる。

最後に、出力の一番下にある文章の意味を考える。

The chi square statistic is 1.08 on 1 degree of freedom. The p-value is 0.298

書籍では、上記の文章について、このように説明されていた。

適合度の検定を行っている部分です。この場合、今回指定した2因子モデルが、このデータに当てはまっているかどうか、ということを示しています。カイニ乗値が0.08、自由度1、p値が0.782と書かれていますので、2因子モデルはデータと適合していると考えられます。適合度の検定は、「モデルとデータが有意に異なっているか」について調べるもので、検定結果が有意である場合は「適合していない」と判断します。

Rによるやさしい統計学

今回の場合で見ると、P値が0.298となり、有意水準5%で有意といえないため、適合していないとはいえないという結果と分かる。

因子負荷量の可視化

参考書籍では、因子負荷量を棒グラフで可視化することを推奨していた。

やってみる。

> barplot(data.fac$loading[,1],col="lightblue") #Factor1
> barplot(data.fac$loading[,2],col="lightblue") #Factor2

Factor1↓

Factor2↓

5教科の点数を用いて因子分析を行っていた書籍では、上記のようなグラフを作成して、Factor1・2を文系・理系と意味づけていた。

今回の場合は、簡単に解釈できそうにない。が、せっかくなので、多少強引に意味づけてみる。

Factor1は注文数と強い正の相関があるため、単純にFactor1を”頻度”と捉えても良いかもしれない。そう捉えると、待機場所からの距離がFactor1と負の相関関係にあることも理解できる。Factor2はチップ関連の指標と正の相関があるため、”チップ率”と捉えても良いかもしれない。

回転とバイプロット

参考書籍では、バリマックス回転を行ったバイプロットを作成していた。

やってみる。

> data.fac3<-factanal(data,factors=2,scores="regression") 
> biplot(data.fac3$scores,data.fac3$loading)

上記の図で、特徴のある1番と5番と9番の店舗データを見てみる。ちなみに、1番はペリペリチキン、5番はカレーハウスCoCo壱番屋沖縄美里店、9番はマクドナルド具志川メインシテイ店となる

注文数チップ数配達10件当たりのチップ数配達料金1000円当たりのチップ額待機場所からの距離
13.362.930.250.33-0.94
50.661.612.082.70-0.70
9-0.07-0.94-2.25-1.94-0.50

1番は、図で見るとFactor1がかなり高い数値と分かる。データで見ても注文数がかなり高い数値となっていると分かる。

5番は、図で見るとFactor2が高い数値と分かる。データで見てもチップに関する指標が高い数値となっていると分かる。

9番は、図で見るとFactor2が低い数値と分かる。データで見てもチップに関する指標が低い数値となっていると分かる。

まとめ

今回は、店舗データを因子分析することで共通因子を抽出してみた。

結果、チップに関する指標と頻度の指標が共通因子として表れた。

コメント

タイトルとURLをコピーしました