Préparer votre poste

À faire avant la première matinée

Logiciels

Installez une version récente de R, RStudio Desktop et Quarto. Le matériel a été validé avec R 4.5.0 et Quarto 1.9.38.

Obtenir le matériel

La solution recommandée consiste à télécharger tout le projet avant la première matinée:

  1. téléchargez l’archive ZIP du projet;
  2. décompressez l’archive dans un dossier où vous avez le droit d’écrire;
  3. ouvrez le dossier eiom-2026-modelisation-main dans RStudio;
  4. vérifiez avec getwd() que le dossier courant contient _quarto.yml, scripts et data.

Si vous possédez déjà le projet, mais pas le fichier du jour 3, exécutez ce bloc depuis sa racine:

dir.create("data", showWarnings = FALSE)

download.file(
  paste0(
    "https://aureliennicosiaulaval.github.io/",
    "eiom-2026-modelisation/data/",
    "requetes_311_montreal_2024_eiom.csv"
  ),
  "data/requetes_311_montreal_2024_eiom.csv",
  mode = "wb"
)

Le fichier téléchargé doit contenir 18 000 lignes et 15 colonnes. Il s’agit d’un extrait pédagogique préparé à partir des données ouvertes 311 de Montréal.

Installer les paquets

Exécutez ensuite le script suivant depuis la racine du projet.

source("scripts/installer_paquets.R")

Le script installe uniquement les paquets manquants.

Tester l’environnement

# Load libraries
library(tidyverse)
library(tidymodels)
library(AmesHousing)
library(titanic)
library(rpart)

# Load the Day 1 data set
ames <- make_ames()

stopifnot(identical(
  levels(ames$Overall_Qual),
  c(
    "Very_Poor", "Poor", "Fair", "Below_Average", "Average",
    "Above_Average", "Good", "Very_Good", "Excellent",
    "Very_Excellent"
  )
))

# Check the first observations and dimensions
glimpse(ames)
Rows: 2,930
Columns: 81
$ MS_SubClass        <fct> One_Story_1946_and_Newer_All_Styles, One_Story_1946…
$ MS_Zoning          <fct> Residential_Low_Density, Residential_High_Density, …
$ Lot_Frontage       <dbl> 141, 80, 81, 93, 74, 78, 41, 43, 39, 60, 75, 0, 63,…
$ Lot_Area           <int> 31770, 11622, 14267, 11160, 13830, 9978, 4920, 5005…
$ Street             <fct> Pave, Pave, Pave, Pave, Pave, Pave, Pave, Pave, Pav…
$ Alley              <fct> No_Alley_Access, No_Alley_Access, No_Alley_Access, …
$ Lot_Shape          <fct> Slightly_Irregular, Regular, Slightly_Irregular, Re…
$ Land_Contour       <fct> Lvl, Lvl, Lvl, Lvl, Lvl, Lvl, Lvl, HLS, Lvl, Lvl, L…
$ Utilities          <fct> AllPub, AllPub, AllPub, AllPub, AllPub, AllPub, All…
$ Lot_Config         <fct> Corner, Inside, Corner, Corner, Inside, Inside, Ins…
$ Land_Slope         <fct> Gtl, Gtl, Gtl, Gtl, Gtl, Gtl, Gtl, Gtl, Gtl, Gtl, G…
$ Neighborhood       <fct> North_Ames, North_Ames, North_Ames, North_Ames, Gil…
$ Condition_1        <fct> Norm, Feedr, Norm, Norm, Norm, Norm, Norm, Norm, No…
$ Condition_2        <fct> Norm, Norm, Norm, Norm, Norm, Norm, Norm, Norm, Nor…
$ Bldg_Type          <fct> OneFam, OneFam, OneFam, OneFam, OneFam, OneFam, Twn…
$ House_Style        <fct> One_Story, One_Story, One_Story, One_Story, Two_Sto…
$ Overall_Qual       <fct> Above_Average, Average, Above_Average, Good, Averag…
$ Overall_Cond       <fct> Average, Above_Average, Above_Average, Average, Ave…
$ Year_Built         <int> 1960, 1961, 1958, 1968, 1997, 1998, 2001, 1992, 199…
$ Year_Remod_Add     <int> 1960, 1961, 1958, 1968, 1998, 1998, 2001, 1992, 199…
$ Roof_Style         <fct> Hip, Gable, Hip, Hip, Gable, Gable, Gable, Gable, G…
$ Roof_Matl          <fct> CompShg, CompShg, CompShg, CompShg, CompShg, CompSh…
$ Exterior_1st       <fct> BrkFace, VinylSd, Wd Sdng, BrkFace, VinylSd, VinylS…
$ Exterior_2nd       <fct> Plywood, VinylSd, Wd Sdng, BrkFace, VinylSd, VinylS…
$ Mas_Vnr_Type       <fct> Stone, None, BrkFace, None, None, BrkFace, None, No…
$ Mas_Vnr_Area       <dbl> 112, 0, 108, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6…
$ Exter_Qual         <fct> Typical, Typical, Typical, Good, Typical, Typical, …
$ Exter_Cond         <fct> Typical, Typical, Typical, Typical, Typical, Typica…
$ Foundation         <fct> CBlock, CBlock, CBlock, CBlock, PConc, PConc, PConc…
$ Bsmt_Qual          <fct> Typical, Typical, Typical, Typical, Good, Typical, …
$ Bsmt_Cond          <fct> Good, Typical, Typical, Typical, Typical, Typical, …
$ Bsmt_Exposure      <fct> Gd, No, No, No, No, No, Mn, No, No, No, No, No, No,…
$ BsmtFin_Type_1     <fct> BLQ, Rec, ALQ, ALQ, GLQ, GLQ, GLQ, ALQ, GLQ, Unf, U…
$ BsmtFin_SF_1       <dbl> 2, 6, 1, 1, 3, 3, 3, 1, 3, 7, 7, 1, 7, 3, 3, 1, 3, …
$ BsmtFin_Type_2     <fct> Unf, LwQ, Unf, Unf, Unf, Unf, Unf, Unf, Unf, Unf, U…
$ BsmtFin_SF_2       <dbl> 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1120, 0…
$ Bsmt_Unf_SF        <dbl> 441, 270, 406, 1045, 137, 324, 722, 1017, 415, 994,…
$ Total_Bsmt_SF      <dbl> 1080, 882, 1329, 2110, 928, 926, 1338, 1280, 1595, …
$ Heating            <fct> GasA, GasA, GasA, GasA, GasA, GasA, GasA, GasA, Gas…
$ Heating_QC         <fct> Fair, Typical, Typical, Excellent, Good, Excellent,…
$ Central_Air        <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, …
$ Electrical         <fct> SBrkr, SBrkr, SBrkr, SBrkr, SBrkr, SBrkr, SBrkr, SB…
$ First_Flr_SF       <int> 1656, 896, 1329, 2110, 928, 926, 1338, 1280, 1616, …
$ Second_Flr_SF      <int> 0, 0, 0, 0, 701, 678, 0, 0, 0, 776, 892, 0, 676, 0,…
$ Low_Qual_Fin_SF    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
$ Gr_Liv_Area        <int> 1656, 896, 1329, 2110, 1629, 1604, 1338, 1280, 1616…
$ Bsmt_Full_Bath     <dbl> 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, …
$ Bsmt_Half_Bath     <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
$ Full_Bath          <int> 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 3, 2, …
$ Half_Bath          <int> 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, …
$ Bedroom_AbvGr      <int> 3, 2, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 3, 2, 1, 4, 4, …
$ Kitchen_AbvGr      <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
$ Kitchen_Qual       <fct> Typical, Typical, Good, Excellent, Typical, Good, G…
$ TotRms_AbvGrd      <int> 7, 5, 6, 8, 6, 7, 6, 5, 5, 7, 7, 6, 7, 5, 4, 12, 8,…
$ Functional         <fct> Typ, Typ, Typ, Typ, Typ, Typ, Typ, Typ, Typ, Typ, T…
$ Fireplaces         <int> 2, 0, 0, 2, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, …
$ Fireplace_Qu       <fct> Good, No_Fireplace, No_Fireplace, Typical, Typical,…
$ Garage_Type        <fct> Attchd, Attchd, Attchd, Attchd, Attchd, Attchd, Att…
$ Garage_Finish      <fct> Fin, Unf, Unf, Fin, Fin, Fin, Fin, RFn, RFn, Fin, F…
$ Garage_Cars        <dbl> 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, …
$ Garage_Area        <dbl> 528, 730, 312, 522, 482, 470, 582, 506, 608, 442, 4…
$ Garage_Qual        <fct> Typical, Typical, Typical, Typical, Typical, Typica…
$ Garage_Cond        <fct> Typical, Typical, Typical, Typical, Typical, Typica…
$ Paved_Drive        <fct> Partial_Pavement, Paved, Paved, Paved, Paved, Paved…
$ Wood_Deck_SF       <int> 210, 140, 393, 0, 212, 360, 0, 0, 237, 140, 157, 48…
$ Open_Porch_SF      <int> 62, 0, 36, 0, 34, 36, 0, 82, 152, 60, 84, 21, 75, 0…
$ Enclosed_Porch     <int> 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Three_season_porch <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
$ Screen_Porch       <int> 0, 120, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 140, …
$ Pool_Area          <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
$ Pool_QC            <fct> No_Pool, No_Pool, No_Pool, No_Pool, No_Pool, No_Poo…
$ Fence              <fct> No_Fence, Minimum_Privacy, No_Fence, No_Fence, Mini…
$ Misc_Feature       <fct> None, None, Gar2, None, None, None, None, None, Non…
$ Misc_Val           <int> 0, 0, 12500, 0, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, …
$ Mo_Sold            <int> 5, 6, 6, 4, 3, 6, 4, 1, 3, 6, 4, 3, 5, 2, 6, 6, 6, …
$ Year_Sold          <int> 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 201…
$ Sale_Type          <fct> WD , WD , WD , WD , WD , WD , WD , WD , WD , WD , W…
$ Sale_Condition     <fct> Normal, Normal, Normal, Normal, Normal, Normal, Nor…
$ Sale_Price         <int> 215000, 105000, 172000, 244000, 189900, 195500, 213…
$ Longitude          <dbl> -93.61975, -93.61976, -93.61939, -93.61732, -93.638…
$ Latitude           <dbl> 42.05403, 42.05301, 42.05266, 42.05125, 42.06090, 4…
dim(ames)
[1] 2930   81
# Load the Day 2 data set
data("titanic_train")
dim(titanic_train)
[1] 891  12
# Load the Day 3 data set
requetes_311 <- read_csv(
  "data/requetes_311_montreal_2024_eiom.csv",
  show_col_types = FALSE
)
dim(requetes_311)
[1] 18000    15

Vous devriez obtenir 2 930 lignes et 81 colonnes pour Ames, 891 lignes et 12 colonnes pour titanic_train, puis 18 000 lignes et 15 colonnes pour les demandes 311. Les 342 valeurs égales à 1 dans Survived correspondent aux passagers enregistrés comme ayant survécu dans l’échantillon Titanic (P. Hendricks, 2015).

Test de modélisation

# Prepare the variables shared by the Day 1 material
ames_modele <- ames |>
  transmute(
    sale_price = Sale_Price,
    gr_liv_area = Gr_Liv_Area,
    overall_qual = as.integer(Overall_Qual),
    year_built = Year_Built,
    garage_cars = Garage_Cars
  )

# Fit a reproducible linear model
modele_test <- lm(
  sale_price ~ gr_liv_area + overall_qual + year_built + garage_cars,
  data = ames_modele
)

summary(modele_test)

Call:
lm(formula = sale_price ~ gr_liv_area + overall_qual + year_built + 
    garage_cars, data = ames_modele)

Residuals:
    Min      1Q  Median      3Q     Max 
-368847  -22613   -2004   18428  292647 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -8.201e+05  6.006e+04  -13.66   <2e-16 ***
gr_liv_area   5.727e+01  1.817e+00   31.53   <2e-16 ***
overall_qual  2.396e+04  7.767e+02   30.85   <2e-16 ***
year_built    3.769e+02  3.157e+01   11.94   <2e-16 ***
garage_cars   1.472e+04  1.275e+03   11.55   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 38760 on 2925 degrees of freedom
Multiple R-squared:  0.7649,    Adjusted R-squared:  0.7646 
F-statistic:  2379 on 4 and 2925 DF,  p-value: < 2.2e-16

Si ce bloc s’exécute sans erreur, votre poste est prêt.

Rappels utiles

Note

Les tutoriels donnent du code complet et exécutable. Les pratiques proposent des blocs à compléter. Travaillez dans un nouveau script R ou une copie locale du document afin de conserver vos essais.

En cas de problème

  1. Vérifiez que le dossier courant est la racine du projet.
  2. Relancez source("scripts/installer_paquets.R").
  3. Redémarrez la session R.
  4. Exécutez quarto check dans le terminal.
  5. Gardez une copie de l’erreur complète pour le soutien en classe.

Les références

P. Hendricks. (2015). titanic: Titanic Passenger Survival Data Set. https://CRAN.R-project.org/package=titanic.