Pythonではじめる数理最適化

4章 割引クーポンキャンペーンの効果最大化

【問題】 限られたキャンペーン予算で最大の来客増加数を最大にする

・ダイレクトメールの種類。1.セールのチラシのみ 2.セールのチラシと1000円のクーポン 3.セールのチラシと2000円のクーポン
・各会員に対してどのパターンのダイレクトメールを送付するかを決定
・各会員に対して送付するダイレクトメールはいずれかの1パターン
・会員の予算消費期待値の合計は100万円以下
・各パターンのダイレクトメールをそれぞれのセグメントに属する会員の10%以上に送付

◆会員データ
f:id:bitop:20220110090759p:plain
customer_id 会員ID
age_cat 年齢層(20-34,35-49,50-)
freq_cat 来店頻度(freq0,freq1,freq2,freq3-)
f:id:bitop:20220110091157p:plain
f:id:bitop:20220110091227p:plain
最適化計算の結果、約326人の増加が見込めるとのこと
f:id:bitop:20220110091813p:plain
各セグメントに対するそれぞれのダイレクトメールの送付率
傾向としてはクーポン付きメールは、いまだ来店していない顧客に送るのが有効との解釈ができる
f:id:bitop:20220110092003p:plain

Pythonではじめる数理最適化

2.3 規模の大きな数理最適化問題Pythonの数理最適化ライブラリで解く

【問題】 工場でp1,p2,p3,p4の製品を作っている。製品を製造するには原材料m1,m2,m3が必要でその情報はcsvファイルに記録されている。

m1 m2 m3
p1 2 0 1
p2 3 2 0
p3 0 2 2
p4 2 2 2

f:id:bitop:20220109083400p:plain

f:id:bitop:20220109083428p:plain
解  
f:id:bitop:20220109083640p:plain

3章 学校のクラス編成

【制約条件、目的】
・学年の全生徒をそれぞれ1つのクラスに割り当てる。学年で318人でクラス数は8
・各クラスの人数は39人以上、40人以下とする
・男子が158人、女子は160人
・各クラスの男子生徒、女子生徒は20人以下
・学力試験は500点満点で平均点は303.6点、各クラスの学力テストの平均点は学年平均±10点とする
・リーダー気質の生徒が17人おり、各クラスにリーダー気質の生徒を2人以上割り当てる
・学年に特別な支援が必要な生徒が4人おり、各クラスに一人以下とする
・学年に特定ペアが3組いる。特定ペアの生徒は同一クラスに割り当てない。(特定ペアとは双子ペアとか)

◆生徒名簿
f:id:bitop:20220109094354p:plain
◆生徒の性別確認
f:id:bitop:20220109094503p:plain
◆学年試験の点数の分布
f:id:bitop:20220109094619p:plain
◆解(studentの番号が生徒番号)、クラスはAからHまである。 f:id:bitop:20220109094732p:plain

Pythonではじめる数理最適化

2.1 連立方程式Pythonの数理最適化ライブラリで解く

【問題】 1個120円のりんごと1個150円のなしを合わせて10個買ったら代金の合計が1440円でした、りんごとなしはそれぞれ何個買ったでしょうか。
f:id:bitop:20220108105902p:plain

2.2 線形計画問題Pythonの数理最適化ライブラリで解く

【問題】 ある工場で製品p,qを作っている。製品p,qを作るには原料m,nが必要
p[kg]=1m[kg]+2n[kg]
q[kg]=3m[kg]+1n[kg]
mの在庫30[kg],nの在庫40[kg]
pは1万円、qは2万円で売れる。
f:id:bitop:20220108111343p:plain

Pythonによる経済経営分析のデータサイエンス

6.10 テキスト分析(1)Twitterからデータを取得し、MeCab分かち書きをする

Twitterで集めてきたデータ
f:id:bitop:20210314130134p:plain
MeCab分かち書きしたもの
f:id:bitop:20210314130230p:plain

6.11 テキスト分析(2) Wordcloud

一橋大学
f:id:bitop:20210314135856p:plain

慶応義塾大学
f:id:bitop:20210314140434p:plain

早稲田大学
f:id:bitop:20210314141137p:plain  

Pythonによる経済経営分析のデータサイエンス

5.7 パネルデータ分析(1) データ構築

https://bashtage.github.io/linearmodels/doc/panel/examples/examples.html
組合は誰の賃金を上げるのか?若い男性のユニオニズムと賃金率決定の動的モデルの例題
f:id:bitop:20210312083308p:plain

5.8 パネルデータ分析(2) Pooled OLS

f:id:bitop:20210312083438p:plain

5.9 パネルデータ分析(3) 固定効果モデル

f:id:bitop:20210312083551p:plain

5.10パネルデータ分析(4) 変動効果モデル

f:id:bitop:20210312083851p:plain

5.11 パネルデータ分析(5) モデルの比較

f:id:bitop:20210312083951p:plain

Pythonによる経済経営分析のデータサイエンス

5.6 回帰分析(4) 操作変数法

linearmodelsをinstallする
pip install linearmodels (Relesed Mar 8,2021) 操作変数法(隠れた要因をあぶりだすための方法?)
データセットは教育歴の既婚女性の給与への効果に関するデータ
f:id:bitop:20210311060226p:plain

データセットの変数の意味  
nlf        1 if in labor force, 1975
hours      労働時間
kidslt6    6歳未満の子供
kidsge6    6歳以上から18歳までの子供
age        女性の年齢
educ       教育年数
wage       賃金からの推定賃金
repwage    1976年のインタビューでrepwageが賃金を報告した
hushrs     夫が働いた時間
husage     夫の年齢
huseduc    夫の学校教育の年
huswage    夫の時給
faminc     家族の収入
mtr        女性が直面している限界税率
motheduc   母親の学校教育の年
fatheduc   父の学校教育の年
unem       unem. rate in county of resid.
city       =1 if live in SMSA
exper      actual labor mkt exper
nwifeinc   (faminc - wage*hours)/1000
lwage      log(wage)
expersq    exper^2

通常の線形回帰
f:id:bitop:20210311061011p:plain  

父親が教育を受けた年数を操作変数として分析をする
f:id:bitop:20210311061305p:plain

通常の回帰分析と操作変数による分析を比較巣r
f:id:bitop:20210311063339p:plain

Pythonによる経済経営分析のデータサイエンス

Airbnbの価格分析 空間情報の活用

データはkaggleの www.kaggle.com
から取得。本とは違いcsvファイルであったが一部カラムがないがほぼ同じと思われる。
f:id:bitop:20210307083026p:plain
f:id:bitop:20210307082856p:plain
単回帰分析と散布図を描画
f:id:bitop:20210307083056p:plain
f:id:bitop:20210307083143p:plain
f:id:bitop:20210307083258p:plain 重回帰分析をする、各変数の相関係数をヒートマップで表現、number_of_reviewとreviews_per_monthが近すぎるので
reviews_per_monthは除くことにする
f:id:bitop:20210310050432p:plain
このモデルのR自乗値を求める
f:id:bitop:20210310050614p:plain
VIF値を求める
f:id:bitop:20210310050707p:plain
どの変数も10は超えてないので問題はない
Seabornを使ってpairplotを描画してみる
f:id:bitop:20210310050851p:plain
ランドマークとAirbnbホストとの距離を測ってみる
自由の女神との距離が近いと価格が高くなる傾向が若干見て取れる
f:id:bitop:20210310051045p:plain
ホストの位置をマップ上にプロット f:id:bitop:20210310051424p:plain  

f:id:bitop:20210310051607p:plain