Mission 2: auditer une estimation

Deux propriétés, une affirmation contestable et une décision

Votre mandat

Une agence immobilière vous remet une estimation produite avec le modèle commun. Elle affirme que la propriété B « vaudra 21 000 dollars de plus » que la propriété A et propose de communiquer uniquement l’intervalle le plus étroit.

Votre équipe doit vérifier le calcul, expliquer d’où vient la différence estimée et corriger ce message avant qu’il soit transmis à une cliente.

Durée: 25 minutes.

Production: un tableau de deux prédictions, une décomposition de l’écart et un message corrigé de quatre phrases.

Ce que vous devez apprendre

À la fin de cette mission, vous devez pouvoir:

  1. appliquer plusieurs coefficients simultanément à deux profils différents;
  2. distinguer une différence de valeurs ajustées d’une différence certaine entre deux ventes;
  3. choisir l’intervalle adapté à une vente individuelle;
  4. repérer le langage causal ou trop affirmatif dans un message professionnel;
  5. expliquer une prédiction sans recopier la sortie R.

La théorie a montré comment lire un coefficient isolé. Ici, aucune caractéristique n’est maintenue constante: les deux propriétés diffèrent sur quatre dimensions. Vous devez donc raisonner sur l’ensemble du profil.

1. Reprendre le modèle commun

library(tidyverse)
library(AmesHousing)
library(broom)
library(scales)

ames_complet <- make_ames()

niveaux_qualite_attendus <- c(
  "Very_Poor", "Poor", "Fair", "Below_Average", "Average",
  "Above_Average", "Good", "Very_Good", "Excellent",
  "Very_Excellent"
)

stopifnot(identical(
  levels(ames_complet$Overall_Qual),
  niveaux_qualite_attendus
))

ames <- ames_complet |>
  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
  )

modele_prix <- lm(
  sale_price ~ gr_liv_area + overall_qual + year_built + garage_cars,
  data = ames
)

tidy(modele_prix, conf.int = TRUE)

Avant de poursuivre, prédisez le sens de l’écart. La propriété B est plus grande, plus récente et possède une place de garage supplémentaire, mais sa qualité globale est inférieure d’un point. Ces caractéristiques poussent-elles toutes l’estimation dans le même sens?

2. Prédire les deux propriétés

proprietes_auditees <- tribble(
  ~propriete, ~gr_liv_area, ~overall_qual, ~year_built, ~garage_cars,
  "Maison A", 1400, 7L, 1990L, 1,
  "Maison B", 1800, 6L, 2010L, 2
)

predictions_auditees <- bind_cols(
  proprietes_auditees,
  as_tibble(predict(
    modele_prix,
    newdata = proprietes_auditees,
    interval = "prediction"
  ))
)

predictions_auditees

Répondez:

  1. Quelle est la différence entre les deux valeurs ajustées?
  2. Les intervalles décrivent-ils des moyennes ou deux nouvelles ventes individuelles?
  3. Peut-on garantir que la maison B sera vendue plus cher?
  4. Pourquoi l’écart entre les valeurs centrales est-il beaucoup plus précis en apparence que le prix réel d’une vente?

3. Décomposer l’écart

Le modèle est additif. La différence entre les deux valeurs ajustées peut donc être répartie entre les quatre caractéristiques.

ecarts_profils <- proprietes_auditees |>
  select(-propriete) |>
  summarise(across(everything(), ~ .x[2] - .x[1])) |>
  pivot_longer(
    everything(),
    names_to = "variable",
    values_to = "ecart"
  )

contributions <- enframe(
  coef(modele_prix)[-1],
  name = "variable",
  value = "coefficient"
) |>
  left_join(ecarts_profils, by = "variable") |>
  mutate(contribution = coefficient * ecart)

contributions
sum(contributions$contribution)

Identifiez:

  1. les caractéristiques qui favorisent l’estimation de la maison B;
  2. la caractéristique qui réduit cet avantage;
  3. la raison pour laquelle il serait faux d’attribuer tout l’écart à la surface.

La décomposition est une propriété algébrique du modèle ajusté. Elle ne transforme pas les coefficients en effets causaux et ne prouve pas qu’une rénovation produirait le montant affiché.

4. Vérifier le domaine des données

ames |>
  select(gr_liv_area, overall_qual, year_built, garage_cars) |>
  summary()

Vérifiez si les valeurs des deux propriétés se trouvent dans les étendues marginales observées. Expliquez ensuite pourquoi cette vérification ne garantit pas que toutes les combinaisons de caractéristiques sont abondantes dans les données.

Une valeur située entre un minimum et un maximum n’est pas automatiquement un profil bien représenté. La proximité conjointe des propriétés observées et la population visée restent importantes.

5. Auditer le message de l’agence

Le message initial contient trois affirmations:

  1. « La maison B vaudra 21 000 dollars de plus. »
  2. « La surface explique à elle seule cet écart. »
  3. « L’intervalle de confiance étroit suffit pour annoncer le prix de chaque vente. »

Pour chacune, choisissez acceptable, à nuancer ou à refuser, puis donnez une raison fondée sur vos résultats.

Votre production

Remettez:

  1. le tableau des deux valeurs ajustées et de leurs intervalles de prédiction;
  2. la décomposition des quatre contributions;
  3. un message corrigé de quatre phrases qui nomme l’écart estimé, sa provenance, l’incertitude individuelle et une limite non causale.

Conservez le message pour la fiche finale.

Vérification avant de remettre

  • Les deux profils sont nommés et leurs caractéristiques sont visibles.
  • L’écart est présenté comme une différence estimée entre valeurs ajustées.
  • Les quatre contributions totalisent la différence entre les deux prédictions centrales.
  • L’intervalle communiqué est celui d’une nouvelle vente individuelle.
  • Aucun coefficient n’est décrit comme un effet causal.
  • Le message final peut être compris sans la sortie R.