始める無料で始める

入力の変換: 「ホッケースティック」

この演習では、家の大きさ(床面積)の指標から価格を予測するモデルを作成します。すでに読み込まれている houseprice データセットには、次の列があります。

  • price: 住宅価格(単位は $1000)
  • size: 床面積

散布図を見ると、このデータはかなり非線形です。価格が小さな家ではほぼ横ばいで、家が大きくなるにつれて急に上がる「ホッケースティック」のような形になっています。ホッケースティックのような関係を表すには、二次式や三次式がうまく機能することがよくあります。pricesize の二乗と「物理的」に関係しているとは限らない点に注意してください。二次式は、観測された関係の閉形式での近似にすぎません。

scatterplot

ここでは、二乗した面積を説明変数として価格を予測するモデルを当てはめ、学習データに対する当てはまりを確認します。

^ は交互作用も表す記号なので、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")
コードを編集して実行