tidymodels-ames-04

ds1
tidymodels
prediction
yacsda
statlearning
num
Published

May 17, 2023

Aufgabe

Berechnen Sie ein lineares Modell mit tidymodels und zwar anhand des ames Datensatzes.

Modellgleichung: Sale_Price ~ Gr_Liv_Area, data = ames.

Berechnen Sie ein multiplikatives (exponenzielles) Modell.

Gesucht ist R-Quadrat als Maß für die Modellgüte im TEST-Sample.

Hinweise:

  • Fixieren Sie die Zufallszahlen auf den Startwert 42.
  • Verwenden Sie die Funktion last_fit.











Lösung

library(tidymodels)
data(ames)

Multiplikatives Modell:

ames <- 
  ames %>% 
  mutate(Sale_Price = log10(Sale_Price)) %>% 
  select(Sale_Price, Gr_Liv_Area)

Nicht vergessen: AV-Transformation in beiden Samples!

Datensatz aufteilen:

set.seed(42)
ames_split <- initial_split(ames, prop = 0.80, strata = Sale_Price)
ames_train <- training(ames_split)
ames_test  <-  testing(ames_split)

Modell definieren:

m1 <-
  linear_reg() # engine ist "lm" im Default

Rezept definieren:

rec1 <- 
  recipe(Sale_Price ~ Gr_Liv_Area, data = ames) 

Vorhersagen mit last_fit:

fit1_last <- last_fit(object = m1, preprocessor = rec1, split = ames_split)  
fit1_last
# Resampling results
# Manual resampling 
# A tibble: 1 × 6
  splits             id               .metrics .notes   .predictions .workflow 
  <list>             <chr>            <list>   <list>   <list>       <list>    
1 <split [2342/588]> train/test split <tibble> <tibble> <tibble>     <workflow>

Wir bekommen ein Objekt, in dem Fit, Modellgüte, Vorhersagen und Hinweise enthalten sind.

Ohne Rezept lässt sich last_fit nicht anwenden.

Vorhersagen:

fit1_last %>% collect_predictions() %>% 
  head()
# A tibble: 6 × 5
  id               .pred  .row Sale_Price .config             
  <chr>            <dbl> <int>      <dbl> <chr>               
1 train/test split  5.07     2       5.02 Preprocessor1_Model1
2 train/test split  5.18     3       5.24 Preprocessor1_Model1
3 train/test split  5.31    18       5.60 Preprocessor1_Model1
4 train/test split  5.11    26       5.15 Preprocessor1_Model1
5 train/test split  5.18    29       5.26 Preprocessor1_Model1
6 train/test split  5.10    30       4.98 Preprocessor1_Model1

Modellgüte im Test-Sample:

fit1_last %>% collect_metrics()
# A tibble: 2 × 4
  .metric .estimator .estimate .config             
  <chr>   <chr>          <dbl> <chr>               
1 rmse    standard       0.118 Preprocessor1_Model1
2 rsq     standard       0.517 Preprocessor1_Model1

R-Quadrat:

sol <- 0.517
sol
[1] 0.517

Categories:

  • ds1
  • tidymodels
  • prediction
  • yacsda
  • statlearning
  • num