入力の変換: 「ホッケースティック」
この演習では、家の大きさ(床面積)の指標から価格を予測するモデルを作成します。すでに読み込まれている houseprice データセットには、次の列があります。
price: 住宅価格(単位は $1000)size: 床面積
散布図を見ると、このデータはかなり非線形です。価格が小さな家ではほぼ横ばいで、家が大きくなるにつれて急に上がる「ホッケースティック」のような形になっています。ホッケースティックのような関係を表すには、二次式や三次式がうまく機能することがよくあります。price が size の二乗と「物理的」に関係しているとは限らない点に注意してください。二次式は、観測された関係の閉形式での近似にすぎません。

ここでは、二乗した面積を説明変数として価格を予測するモデルを当てはめ、学習データに対する当てはまりを確認します。
^ は交互作用も表す記号なので、x^2 をそのまま二乗として扱うために I() 関数(docs)を使ってください。つまり、x と自分自身の交互作用ではなく、x の二乗として扱います。
exampleFormula = y ~ I(x^2)
この演習はコースの一部です
R による Supervised Learning:回帰
演習の手順
- 二乗した面積を用いて価格を表す数式
fmla_sqrを作成し、表示してください。 fmla_sqrを使ってデータにモデルmodel_sqrを当てはめてください。- 比較のため、数式
price ~ sizeを使って線形モデルmodel_linも当てはめてください。 - 次の空欄を埋めて、
- 2つのモデルから学習データに対する予測値を作成し、
pivot_longer()を使って予測値を 1 列predに縦持ち化し、- 2つのモデルの予測と元データをグラフで比較してください。どちらがよりよく当てはまりますか?
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# houseprice is available
summary(houseprice)
# Create the formula for price as a function of squared size
(fmla_sqr <- ___)
# Fit a model of price as a function of squared size (use fmla_sqr)
model_sqr <- ___
# Fit a model of price as a linear function of size
model_lin <- ___
# Make predictions and compare
houseprice %>%
mutate(pred_lin = ___(___), # predictions from linear model
pred_sqr = ___(___)) %>% # predictions from quadratic model
pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>% # pivot the predictions
ggplot(aes(x = size)) +
geom_point(aes(y = ___)) + # actual prices
geom_line(aes(y = ___, color = modeltype)) + # the predictions
scale_color_brewer(palette = "Dark2")