見出し画像

[Rによるデータ分析入門]ggplotによる図の作成(3):Chat GPTの活用

本コラムではggplot2で回帰分析の係数使ったグラフの作成方法を紹介します。推計結果をもとにChat GPTで図を描くスクリプトを作成しています。ggplot2の基本的な使い方を知りたい方は以下を参照してください。


事例紹介

具体例として、厚生労働省賃金構造基本調査の年齢階級別職種別賃金データを用いて、キャビンアテンダント(航空客室乗務員)の賃金関数を推定します。航空業界では1990年代の終わりから2000年代にかけてLCCの参入などの規制緩和により競争が激しくなり、客室乗務員の待遇が悪くなったと言われています。そこで年収と賃金の関係が時間を通じてどのように変化しているかを調べます。具体的な推計式は以下の式で、ここでIncomeは年収(単位千円)、$${age_i}$$は年齢階級、$${YD_t}$$は2004, 2009, 2014, 2019年の年ダミー、SMEは従業員1000人未満の航空会社ダミーです。

$$
Income_i =\alpha +\beta age_i +\Sigma_t  \gamma_t (age_i *YD_t)+\Sigma_t  \lambda_t YD_t +\eta SME_it +\epsilon_{it} 
$$

これをlm()関数で回帰分析して係数を求めます。

library(tidyverse)
dataf <- readr::read_csv("wage-census-ca.csv")
result <- lm(income~age+age*factor(year)+factor(sme),data=dataf)
summary(result)

スクリプトとデータは以下からダウンロードできます。

次のような結果を得ました。

ageの係数ですが、この推計式ではageと年ダミーの交差項が入っていますので、交差項なしの係数はダミー変数の基準となっている2004年の年収と年齢の関係を示します。ageの係数は31.63ですので、これは2004年においては年齢が1歳があがると3.16万円年収が上昇することを意味します。一方、age:factor(yearr)2009はageと2009年ダミーの交差項なので、2009年のageの係数は31.63-12.94で18.69となります。同様に、age:factor(yearr)2014、age:factor(yearr)2019の係数もマイナスですので、ageの係数は時間の経過とともに低くなっていることが示唆されます。

では、これをグラフにして可視化してみましょう。以下では今回の係数を用いて2004, 2009, 2014, 2009年の年齢25, 30, 35, 40, 45, 50, 55のときの年収のの予測値を計算し、グラフにしてみました。2004年以降に年収と年齢の関係がフラットになっていることが分かります。

Chat GPTによる図の作成

さて、このグラフの作り方ですが、実はChat GPTで作成しました。 

以下のRの回帰分析の結果を用いて、その結果からグラフを作成してください。
・新しいデータフレームnew_dataを作成し、yearに2004, 2009, 2014, 2019を、ageに25, 30, 35, 40, 45, 50, 55を、smeはすべて0とする
・resultを使用してnew_dataに対する予測値を計算し、predictions列に追加する
・ggplot2パッケージを読み込んでageとpredictionsを用いて、年ごとの予測された年収を可視化する。年ごとに色分けし、線の種類も年ごとに設定する。x軸には'Age'、y軸には'Income'とラベルを付け、x軸の刻みを調整してください。
・グラフの背景を白色にしてください。
library(tidyverse)
dataf <- readr::read_csv("wage-census-ca.csv")
result <- lm(income~age+age*factor(year)+factor(sme),data=dataf)
summary(result)

Chat GPTの作成したスクリプトは以下の通りです。

#新しいデータフレームを作成
new_data <- expand.grid(
year = c(2004, 2009, 2014, 2019),
age = c(25, 30, 35, 40, 45, 50, 55),
sme = 0
)
#予測値を計算し、new_dataに追加
new_data$predictions <- predict(result, newdata = new_data)
#パッケージを読み込む
library(ggplot2)
 #グラフの作成 ggplot(new_data, aes(x = age, y = predictions, group = factor(year), color = factor(year), linetype = factor(year))) +
geom_line(size = 1) +  # 線を太くする
labs(x = "Age", y = "Income") +
scale_x_continuous(breaks = seq(25, 55, 5)) +  # x軸の刻みを調整
theme_minimal() +
theme_classic()

ついでに、Chat GPTに「以下のRのスクリプトを初心者にも分かりやすく解説してください。」と入力し、このスクリプトの意味を説明させてみました。

さらに、最初の方に出てくるexpand.grid関数について、「具体例をあげながら説明してください」と入力してみると、

という具合に丁寧に解説してくれます。Rでのグラフ作成のオプションは複雑なのでChat GPTを活用してみてください。

なお本コラムは「Rによるデータ分析入門」のWEBサポートページとして作成されました。WEBサポートの一覧は以下を参照してください。

WEBサポートの一覧は以下を参照してください。


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