対数変換した金額の出力をモデリングする
この演習では、金額データを対数変換してモデリングし、その「対数金額」から予測値を元の金額単位に戻す練習をします。読み込まれているデータには、被験者の2005年の収入(Income2005)と、被験者が1981年に受験した複数の適性検査の結果が含まれます。
ArithWordParagMathAFQT(Armed Forces Qualifying Test のパーセンタイル)
データはすでに学習用とテスト用(それぞれ income_train と income_test)に分割され、読み込まれています。入力変数から log(income) のモデルを作成し、その後に log(income) を income に戻します。
この演習はコースの一部です
R による Supervised Learning:回帰
演習の手順
- 学習用データにおける収入の要約統計量を見るため、
income_train$Income2005に対してsummary()を呼び出します。 - 5つの検査を説明変数として、
log(Income2005)を表す式を変数fmla.logに作成します。出力して確認します。 income_trainデータに対してlog(Income2005)の線形モデルmodel.logを当てはめます。model.logを使ってincome_testデータセットで収入を予測し、列logpredに格納します。logpredのsummary()を確認し、値のスケールがIncome2005と大きく異なることを確認します。
- 予測値を「金額単位」に戻すため、対数変換を逆にします:
exp(income_test$logpred)。pred.incomeのsummary()を確認し、スケールがIncome2005に近くなっていることを確かめます。
- テストセットにおける予測収入と実際の収入の散布図を描くため、空欄を埋めてコードを完成させます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Examine Income2005 in the training set
___
# Write the formula for log income as a function of the tests and print it
(fmla.log <- ___)
# Fit the linear model
model.log <- ___
# Make predictions on income_test
income_test$logpred <- ___
summary(income_test$logpred)
# Convert the predictions to monetary units
income_test$pred.income <- ___
summary(income_test$pred.income)
# Plot predicted income (x axis) vs income
ggplot(___, aes(x = ___, y = ___)) +
geom_point() +
geom_abline(color = "blue")