Ch. 35 livré et validé (compilation isolée, tests, fusion des registres)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
33 changed files +378 −99
modified
analysis/python/figures/ch39_figures.py
+3 −2
@@ -112,7 +112,7 @@ def fig_retrecissement(r): | |||||
| 112 | def fig_predictive(r): | 112 | def fig_predictive(r): | ||
| 113 | hi = r["hier"]; pr = hi["pred"]; ex = r["conjugue"]; pt = ex["pred600"] | 113 | hi = r["hier"]; pr = hi["pred"]; ex = r["conjugue"]; pt = ex["pred600"] | ||
| 114 | P = pr["tirages"] | 114 | P = pr["tirages"] | ||
| 115 | − fig, ax = plt.subplots(figsize=(LARGEUR, 3.3)) | 115 | + fig, ax = plt.subplots(figsize=(LARGEUR, 3.2)) | ||
| 116 | g = np.linspace(430_000, 900_000, 600) | 116 | g = np.linspace(430_000, 900_000, 600) | ||
| 117 | kde = stats.gaussian_kde(P, bw_method=0.12) | 117 | kde = stats.gaussian_kde(P, bw_method=0.12) | ||
| 118 | ax.fill_between(g, kde(g), color=palette.cat[0], alpha=0.15, lw=0) | 118 | ax.fill_between(g, kde(g), color=palette.cat[0], alpha=0.15, lw=0) | ||
@@ -132,7 +132,8 @@ def fig_predictive(r): | |||||
| 132 | ax.annotate(f"{_k(pr['haut90'])}", (pr["haut90"], ymax * 0.05), ha="left", fontsize=7, color=palette.ink2) | 132 | ax.annotate(f"{_k(pr['haut90'])}", (pr["haut90"], ymax * 0.05), ha="left", fontsize=7, color=palette.ink2) | ||
| 133 | ax.set_ylim(0, ymax * 1.15); ax.set_yticks([]); ax.grid(False); ax.spines["left"].set_visible(False) | 133 | ax.set_ylim(0, ymax * 1.15); ax.set_yticks([]); ax.grid(False); ax.spines["left"].set_visible(False) | ||
| 134 | ax.xaxis.set_major_formatter(FuncFormatter(_k)); ax.set_xlabel("Prix du sujet (milliers de dollars)") | 134 | ax.xaxis.set_major_formatter(FuncFormatter(_k)); ax.set_xlabel("Prix du sujet (milliers de dollars)") | ||
| 135 | − ax.legend(fontsize=7.5, loc="upper left") | 135 | + h, l = ax.get_legend_handles_labels() | ||
| 136 | + fig.legend(h, l, loc="lower center", ncol=2, fontsize=7.5, bbox_to_anchor=(0.5, -0.1), frameon=False) | ||||
| 136 | fig.tight_layout(); savefig(fig, "ch39/ch39-fig-predictive.pdf") | 137 | fig.tight_layout(); savefig(fig, "ch39/ch39-fig-predictive.pdf") | ||
| 137 | 138 | ||||
| 138 | def main(): | 139 | def main(): | ||
modified
analysis/python/figures/ch40_figures.py
+7 −7
@@ -25,7 +25,7 @@ def fig_distribution(D): | |||||
| 25 | ymax = a1.get_ylim()[1] | 25 | ymax = a1.get_ylim()[1] | ||
| 26 | for q, lab in [(st["q05"], "q₅"), (st["mediane"], "médiane"), (st["q95"], "q₉₅")]: | 26 | for q, lab in [(st["q05"], "q₅"), (st["mediane"], "médiane"), (st["q95"], "q₉₅")]: | ||
| 27 | a1.axvline(q / 1e6, color=palette.ink, lw=0.9, ls="--"); a1.text(q / 1e6, ymax * 0.98, f"{lab}\n{fr(q/1e6)}", ha="center", va="top", fontsize=7) | 27 | a1.axvline(q / 1e6, color=palette.ink, lw=0.9, ls="--"); a1.text(q / 1e6, ymax * 0.98, f"{lab}\n{fr(q/1e6)}", ha="center", va="top", fontsize=7) | ||
| 28 | − a1.axvline(D["dcf"]["valeur"] / 1e6, color=palette.cat[1], lw=1.5); a1.text(D["dcf"]["valeur"] / 1e6 + 0.04, ymax * 0.45, "DCF\ndéterministe", fontsize=7, color=palette.ink) | 28 | + a1.axvline(D["dcf"]["valeur"] / 1e6, color=palette.cat[1], lw=1.5); a1.text(D["dcf"]["valeur"] / 1e6 + 0.3, ymax * 0.62, "DCF déterministe\n" + fr(D["dcf"]["valeur"] / 1e6), fontsize=7, color=palette.ink) | ||
| 29 | a1.set_xlabel("Valeur simulée (millions de dollars)"); a1.set_ylabel("Densité"); a1.set_title("Histogramme (10 000 tirages)", loc="left") | 29 | a1.set_xlabel("Valeur simulée (millions de dollars)"); a1.set_ylabel("Densité"); a1.set_title("Histogramme (10 000 tirages)", loc="left") | ||
| 30 | Vs = np.sort(V); F = np.arange(1, len(Vs) + 1) / len(Vs) | 30 | Vs = np.sort(V); F = np.arange(1, len(Vs) + 1) / len(Vs) | ||
| 31 | a2.plot(Vs / 1e6, F, color=palette.cat[0], lw=1.6) | 31 | a2.plot(Vs / 1e6, F, color=palette.cat[0], lw=1.6) | ||
@@ -46,7 +46,7 @@ def fig_convergence(D): | |||||
| 46 | for col, k in [("q95", 2), ("mediane", 0), ("q05", 1)]: | 46 | for col, k in [("q95", 2), ("mediane", 0), ("q05", 1)]: | ||
| 47 | a1.scatter([10_000], [st[col] / 1e6], marker="D", s=22, color=palette.cat[k], edgecolor=palette.ink, linewidth=0.5, zorder=5) | 47 | a1.scatter([10_000], [st[col] / 1e6], marker="D", s=22, color=palette.cat[k], edgecolor=palette.ink, linewidth=0.5, zorder=5) | ||
| 48 | a1.text(10_000, st["mediane"] / 1e6 - 0.07, "graine\n20261031", ha="center", va="top", fontsize=6.8, color=palette.ink2) | 48 | a1.text(10_000, st["mediane"] / 1e6 - 0.07, "graine\n20261031", ha="center", va="top", fontsize=6.8, color=palette.ink2) | ||
| 49 | − a1.set_xscale("log"); a1.set_xlabel("Nombre de tirages N (échelle log)"); a1.set_ylabel("Quantile cumulé (M$)"); a1.legend(loc="center right", fontsize=7); a1.set_title("Quantiles cumulés d'une suite de 100 000 tirages", loc="left") | 49 | + a1.set_xscale("log"); a1.set_xlabel("Nombre de tirages N (échelle log)"); a1.set_ylabel("Quantile cumulé (M$)"); a1.legend(loc="center right", fontsize=7); a1.set_title("Quantiles cumulés (suite de 100 000 tirages)", loc="left") | ||
| 50 | a1.yaxis.set_major_formatter(FuncFormatter(lambda x, p: fr(x, 1))) | 50 | a1.yaxis.set_major_formatter(FuncFormatter(lambda x, p: fr(x, 1))) | ||
| 51 | for col, lab, k in [("se_mediane", "médiane", 0), ("se_q05", "quantile 5 %", 1), ("se_q95", "quantile 95 %", 2), ("se_moyenne", "moyenne", 3)]: | 51 | for col, lab, k in [("se_mediane", "médiane", 0), ("se_q05", "quantile 5 %", 1), ("se_q95", "quantile 95 %", 2), ("se_moyenne", "moyenne", 3)]: | ||
| 52 | a2.plot(s["N"], s[col], marker="o", ms=3, color=palette.cat[k], label=lab) | 52 | a2.plot(s["N"], s[col], marker="o", ms=3, color=palette.cat[k], label=lab) | ||
@@ -92,13 +92,13 @@ def fig_rcd(D): | |||||
| 92 | rcd = rne[:, :10] / sd; annees = np.arange(1, 11) | 92 | rcd = rne[:, :10] / sd; annees = np.arange(1, 11) | ||
| 93 | fig, ax = plt.subplots(figsize=(LARGEUR, 3.0)) | 93 | fig, ax = plt.subplots(figsize=(LARGEUR, 3.0)) | ||
| 94 | for lo, hi, a in [(0.05, 0.95, 0.18), (0.25, 0.75, 0.32)]: | 94 | for lo, hi, a in [(0.05, 0.95, 0.18), (0.25, 0.75, 0.32)]: | ||
| 95 | − ax.fill_between(annees, np.quantile(rcd, lo, axis=0), np.quantile(rcd, hi, axis=0), color=palette.cat[0], alpha=a, lw=0, label=f"bande {int((hi-lo)*100)} %") | 95 | + ax.fill_between(annees, np.quantile(rcd, lo, axis=0), np.quantile(rcd, hi, axis=0), color=palette.cat[0], alpha=a, lw=0, label=f"bande {round((hi-lo)*100)} %") | ||
| 96 | ax.plot(annees, np.median(rcd, axis=0), color=palette.cat[0], lw=1.8, label="médiane") | 96 | ax.plot(annees, np.median(rcd, axis=0), color=palette.cat[0], lw=1.8, label="médiane") | ||
| 97 | rng = np.random.default_rng(3) | 97 | rng = np.random.default_rng(3) | ||
| 98 | for i in rng.choice(len(rcd), 12, replace=False): ax.plot(annees, rcd[i], color=palette.ink2, lw=0.5, alpha=0.6) | 98 | for i in rng.choice(len(rcd), 12, replace=False): ax.plot(annees, rcd[i], color=palette.ink2, lw=0.5, alpha=0.6) | ||
| 99 | ax.axhline(1.20, color=palette.cat[1], lw=1.0, ls="--"); ax.text(10.1, 1.20, "covenant 1,20", va="center", fontsize=7, color=palette.ink) | 99 | ax.axhline(1.20, color=palette.cat[1], lw=1.0, ls="--"); ax.text(10.1, 1.20, "covenant 1,20", va="center", fontsize=7, color=palette.ink) | ||
| 100 | ax.axhline(1.00, color=palette.cat[3], lw=1.0, ls="--"); ax.text(10.1, 1.00, "défaut 1,00", va="center", fontsize=7, color=palette.ink) | 100 | ax.axhline(1.00, color=palette.cat[3], lw=1.0, ls="--"); ax.text(10.1, 1.00, "défaut 1,00", va="center", fontsize=7, color=palette.ink) | ||
| 101 | − ax.axvline(terme + 0.5, color=palette.ink2, lw=0.7, ls=":"); ax.text(terme + 0.6, ax.get_ylim()[1] * 0.98 if ax.get_ylim()[1] > 1 else 2.2, "renouvellement\nà +200 pb", fontsize=7, va="top", color=palette.ink2) | 101 | + ax.set_ylim(0.9, 2.15); ax.axvline(terme + 0.5, color=palette.ink2, lw=0.7, ls=":"); ax.text(terme + 0.6, 2.12, "renouvellement\nà +200 pb", fontsize=7, va="top", color=palette.ink2) | ||
| 102 | ax.set_xlabel("Année d'exploitation"); ax.set_ylabel("Ratio de couverture de la dette"); ax.set_xticks(annees); ax.set_xlim(0.8, 11.2); ax.legend(loc="upper left", fontsize=7) | 102 | ax.set_xlabel("Année d'exploitation"); ax.set_ylabel("Ratio de couverture de la dette"); ax.set_xticks(annees); ax.set_xlim(0.8, 11.2); ax.legend(loc="upper left", fontsize=7) | ||
| 103 | ax.yaxis.set_major_formatter(FuncFormatter(lambda v, p: fr(v, 2))) | 103 | ax.yaxis.set_major_formatter(FuncFormatter(lambda v, p: fr(v, 2))) | ||
| 104 | savefig(fig, "ch40/ch40-fig-rcd.pdf") | 104 | savefig(fig, "ch40/ch40-fig-rcd.pdf") | ||
@@ -107,9 +107,9 @@ def fig_lhs(D): | |||||
| 107 | rng = np.random.default_rng(5); n = 12 | 107 | rng = np.random.default_rng(5); n = 12 | ||
| 108 | fig, (a1, a2, a3) = plt.subplots(1, 3, figsize=(LARGEUR, 2.6), gridspec_kw={"wspace": 0.35, "width_ratios": [1, 1, 1.6]}) | 108 | fig, (a1, a2, a3) = plt.subplots(1, 3, figsize=(LARGEUR, 2.6), gridspec_kw={"wspace": 0.35, "width_ratios": [1, 1, 1.6]}) | ||
| 109 | U1 = rng.random((n, 2)); U2 = m.hypercube_latin(n, 2, rng) | 109 | U1 = rng.random((n, 2)); U2 = m.hypercube_latin(n, 2, rng) | ||
| 110 | − for ax, U, t in [(a1, U1, "Échantillonnage simple"), (a2, U2, "Hypercube latin")]: | 110 | + for ax, U, t in [(a1, U1, "Simple"), (a2, U2, "Hypercube latin")]: | ||
| 111 | for g in np.arange(0, 1.0001, 1 / n): ax.axhline(g, color=palette.grid, lw=0.5); ax.axvline(g, color=palette.grid, lw=0.5) | 111 | for g in np.arange(0, 1.0001, 1 / n): ax.axhline(g, color=palette.grid, lw=0.5); ax.axvline(g, color=palette.grid, lw=0.5) | ||
| 112 | − ax.scatter(U[:, 0], U[:, 1], s=18, color=palette.cat[0], zorder=3); ax.set_xlim(0, 1); ax.set_ylim(0, 1); ax.set_aspect("equal"); ax.set_title(t + f" (n = {n})", loc="left", fontsize=8) | 112 | + ax.scatter(U[:, 0], U[:, 1], s=18, color=palette.cat[0], zorder=3); ax.set_xlim(0, 1); ax.set_ylim(0, 1); ax.set_aspect("equal"); ax.set_title(t + f", n = {n}", loc="left", fontsize=8) | ||
| 113 | ax.set_xticks([0, 0.5, 1]); ax.set_yticks([0, 0.5, 1]); ax.grid(False); ax.set_xlabel("u₁"); ax.set_ylabel("u₂") | 113 | ax.set_xticks([0, 0.5, 1]); ax.set_yticks([0, 0.5, 1]); ax.grid(False); ax.set_xlabel("u₁"); ax.set_ylabel("u₂") | ||
| 114 | l = D["lhs"].set_index("statistique"); noms = {"moyenne": "moyenne", "ecart_type": "écart-type", "mediane": "médiane", "q05": "quantile 5 %", "q95": "quantile 95 %", "p_V_2M": "P(V < 2 M$)"} | 114 | l = D["lhs"].set_index("statistique"); noms = {"moyenne": "moyenne", "ecart_type": "écart-type", "mediane": "médiane", "q05": "quantile 5 %", "q95": "quantile 95 %", "p_V_2M": "P(V < 2 M$)"} | ||
| 115 | ordre = ["moyenne", "ecart_type", "mediane", "p_V_2M", "q95", "q05"]; vals = [min(l.loc[k, "ratio_variance"], 300) for k in ordre] | 115 | ordre = ["moyenne", "ecart_type", "mediane", "p_V_2M", "q95", "q05"]; vals = [min(l.loc[k, "ratio_variance"], 300) for k in ordre] | ||
@@ -126,7 +126,7 @@ def fig_portefeuille(D): | |||||
| 126 | VP = m.simuler_portefeuille(pf, 10_000, m.GRAINE, rho_rmr=rr, rho_prov=rp, croissance=cr)["valeur_portefeuille"] | 126 | VP = m.simuler_portefeuille(pf, 10_000, m.GRAINE, rho_rmr=rr, rho_prov=rp, croissance=cr)["valeur_portefeuille"] | ||
| 127 | Vs = np.sort(VP); ax.plot(Vs / 1e6, np.arange(1, len(Vs) + 1) / len(Vs), color=palette.cat[k], lw=1.6, label=nom) | 127 | Vs = np.sort(VP); ax.plot(Vs / 1e6, np.arange(1, len(Vs) + 1) / len(Vs), color=palette.cat[k], lw=1.6, label=nom) | ||
| 128 | det = D["portefeuille"]["stats"]["valeur_deterministe"] | 128 | det = D["portefeuille"]["stats"]["valeur_deterministe"] | ||
| 129 | − ax.axvline(det / 1e6, color=palette.ink, lw=0.9, ls="--"); ax.text(det / 1e6 + 0.8, 0.08, f"valeur déterministe\nà un an : {fr(det/1e6,1)} M$", fontsize=7) | 129 | + ax.axvline(det / 1e6, color=palette.ink, lw=0.9, ls="--"); ax.text(det / 1e6 + 14, 0.12, f"valeur déterministe\nà un an : {fr(det/1e6,1)} M$", fontsize=7) | ||
| 130 | ax.axhline(0.05, color=palette.ink2, lw=0.6, ls=":") | 130 | ax.axhline(0.05, color=palette.ink2, lw=0.6, ls=":") | ||
| 131 | ax.set_xlabel("Valeur du portefeuille de 48 immeubles à un an (millions de dollars)"); ax.set_ylabel("Fonction de répartition empirique"); ax.legend(loc="upper left", fontsize=7) | 131 | ax.set_xlabel("Valeur du portefeuille de 48 immeubles à un an (millions de dollars)"); ax.set_ylabel("Fonction de répartition empirique"); ax.legend(loc="upper left", fontsize=7) | ||
| 132 | ax.xaxis.set_major_formatter(FuncFormatter(lambda v, p: f"{v:.0f}")) | 132 | ax.xaxis.set_major_formatter(FuncFormatter(lambda v, p: f"{v:.0f}")) | ||
modified
analysis/python/figures/ch42_bloc_piece.py
+2 −2
@@ -21,10 +21,10 @@ def main(): | |||||
| 21 | ax.scatter([cas.ROTATION * 100], [vo], color=palette.cat[i], marker="D", s=22, zorder=5) | 21 | ax.scatter([cas.ROTATION * 100], [vo], color=palette.cat[i], marker="D", s=22, zorder=5) | ||
| 22 | ax.annotate(f"vente occupée dès l'an 1 (δ = {d:.0%})", xy=(cas.ROTATION * 100, vo), xytext=(cas.ROTATION * 100 + 1.5, vo + 6000), fontsize=7, color=palette.ink2) | 22 | ax.annotate(f"vente occupée dès l'an 1 (δ = {d:.0%})", xy=(cas.ROTATION * 100, vo), xytext=(cas.ROTATION * 100 + 1.5, vo + 6000), fontsize=7, color=palette.ink2) | ||
| 23 | ax.axhline(v_bloc, color=palette.ink2, lw=1.2, ls="--") | 23 | ax.axhline(v_bloc, color=palette.ink2, lw=1.2, ls="--") | ||
| 24 | − ax.text(40, v_bloc + 8000, f"Valeur en bloc (RNE / 5,25 %) : {v_bloc:,.0f} $".replace(",", " "), ha="right", fontsize=7.8, color=palette.ink) | 24 | + ax.text(40, v_bloc + 8000, f"Valeur en bloc (RNE / 5@25 %) : {v_bloc:,.0f} $".replace(",", " ").replace("@", ","), ha="right", fontsize=7.8, color=palette.ink) | ||
| 25 | base = cas.faisabilite() | 25 | base = cas.faisabilite() | ||
| 26 | ax.scatter([cas.ROTATION * 100], [base["v_conv"]], color=palette.ink, s=26, zorder=6) | 26 | ax.scatter([cas.ROTATION * 100], [base["v_conv"]], color=palette.ink, s=26, zorder=6) | ||
| 27 | − ax.annotate(f"cas de base : ρ = 12 %, δ = 20 % → {base['v_conv']:,.0f} $".replace(",", " "), xy=(cas.ROTATION * 100, base["v_conv"]), | 27 | + ax.annotate(f"cas de base : ρ = 12 %@ δ = 20 % → {base['v_conv']:,.0f} $".replace(",", " ").replace("@", ","), xy=(cas.ROTATION * 100, base["v_conv"]), | ||
| 28 | xytext=(cas.ROTATION * 100 + 1.5, base["v_conv"] - 55000), fontsize=7.2, color=palette.ink, | 28 | xytext=(cas.ROTATION * 100 + 1.5, base["v_conv"] - 55000), fontsize=7.2, color=palette.ink, | ||
| 29 | arrowprops=dict(arrowstyle="-", color=palette.ink2, lw=0.7)) | 29 | arrowprops=dict(arrowstyle="-", color=palette.ink2, lw=0.7)) | ||
| 30 | ax.set_xlabel("Rotation annuelle des locataires ρ (% des logements occupés libérés par année)") | 30 | ax.set_xlabel("Rotation annuelle des locataires ρ (% des logements occupés libérés par année)") | ||
modified
analysis/python/figures/ch42_grille.py
+5 −3
@@ -22,7 +22,7 @@ def main(): | |||||
| 22 | for k in ORDRE: | 22 | for k in ORDRE: | ||
| 23 | v = a.ajustements[k] | 23 | v = a.ajustements[k] | ||
| 24 | if v >= 0: | 24 | if v >= 0: | ||
| 25 | − ax.barh(yi, v, left=pos, height=0.5, color=COUL[k], label=k if yi == 0 else None); pos += v | 25 | + ax.barh(yi, v, left=pos, height=0.5, color=COUL[k]); pos += v | ||
| 26 | else: | 26 | else: | ||
| 27 | neg += v; ax.barh(yi, -v, left=neg, height=0.5, color=COUL[k], alpha=0.55, label=None) | 27 | neg += v; ax.barh(yi, -v, left=neg, height=0.5, color=COUL[k], alpha=0.55, label=None) | ||
| 28 | ax.plot([a.prix], [yi], marker="o", color=palette.ink, ms=5, zorder=5) | 28 | ax.plot([a.prix], [yi], marker="o", color=palette.ink, ms=5, zorder=5) | ||
@@ -32,9 +32,11 @@ def main(): | |||||
| 32 | ax.text(rec["valeur_ponderee"], -0.75, f"valeur pondérée {rec['valeur_ponderee']:,.0f} $".replace(",", " "), ha="center", fontsize=7.6, color=palette.ink) | 32 | ax.text(rec["valeur_ponderee"], -0.75, f"valeur pondérée {rec['valeur_ponderee']:,.0f} $".replace(",", " "), ha="center", fontsize=7.6, color=palette.ink) | ||
| 33 | ax.set_yticks(y); ax.set_yticklabels([f"{c['nom']} — {c['immeuble']}" for c in comps]); ax.invert_yaxis() | 33 | ax.set_yticks(y); ax.set_yticklabels([f"{c['nom']} — {c['immeuble']}" for c in comps]); ax.invert_yaxis() | ||
| 34 | ax.xaxis.set_major_formatter(plt.FuncFormatter(fmt_dollars)) | 34 | ax.xaxis.set_major_formatter(plt.FuncFormatter(fmt_dollars)) | ||
| 35 | − ax.set_xlim(300_000, 450_000); ax.set_xlabel("Prix observé (cercle) → prix ajusté (losange) ; ajustements positifs en couleur pleine, négatifs en teinte pâle") | 35 | + ax.set_xlim(300_000, 450_000); ax.set_xlabel("Prix observé (cercle) et prix ajusté (losange) ; ajustements positifs en teinte pleine, négatifs en teinte pâle") | ||
| 36 | ax.grid(axis="y", visible=False) | 36 | ax.grid(axis="y", visible=False) | ||
| 37 | − ax.legend(loc="upper center", bbox_to_anchor=(0.45, -0.22), ncol=4, fontsize=7.2, title="Ajustements (du point de vue du sujet)", title_fontsize=7.4) | 37 | + from matplotlib.patches import Patch | ||
| 38 | + handles = [Patch(color=COUL[k], label=k) for k in ORDRE] | ||||
| 39 | + ax.legend(handles=handles, loc="upper center", bbox_to_anchor=(0.45, -0.22), ncol=4, fontsize=7.2, title="Ajustements (du point de vue du sujet)", title_fontsize=7.4) | ||||
| 38 | out = savefig(fig, "ch42/ch42-fig-grille-fraction.pdf"); print("OK", out) | 40 | out = savefig(fig, "ch42/ch42-fig-grille-fraction.pdf"); print("OK", out) | ||
| 39 | 41 | ||||
| 40 | if __name__ == "__main__": | 42 | if __name__ == "__main__": | ||
modified
analysis/python/figures/ch43_carte_cas4.py
+5 −2
@@ -21,12 +21,15 @@ def main(): | |||||
| 21 | ax.scatter(fl["lon"], fl["lat"], s=s[fl.index], facecolor="none", edgecolor=palette.cat[1], linewidths=1.8, label="zone inondable (3)", zorder=4) | 21 | ax.scatter(fl["lon"], fl["lat"], s=s[fl.index], facecolor="none", edgecolor=palette.cat[1], linewidths=1.8, label="zone inondable (3)", zorder=4) | ||
| 22 | so = pf[pf["contamination_sol"] == 1] | 22 | so = pf[pf["contamination_sol"] == 1] | ||
| 23 | ax.scatter(so["lon"], so["lat"], s=s[so.index], facecolor="none", edgecolor=palette.cat[2], linewidths=1.8, linestyle="--", label="contamination du sol (2)", zorder=4) | 23 | ax.scatter(so["lon"], so["lat"], s=s[so.index], facecolor="none", edgecolor=palette.cat[2], linewidths=1.8, linestyle="--", label="contamination du sol (2)", zorder=4) | ||
| 24 | + decal = {"P20": (-62, 22), "P21": (-62, 40), "P41": (-62, -22), "P36": (9, 4), "P43": (9, -10)} | ||||
| 24 | for _, r in pf[(pf["zone_inondable"] == 1) | (pf["contamination_sol"] == 1)].iterrows(): | 25 | for _, r in pf[(pf["zone_inondable"] == 1) | (pf["contamination_sol"] == 1)].iterrows(): | ||
| 25 | − ax.annotate(f"{r['id_immeuble']} · {r['valeur_2026']/1e6:.1f} M$", (r["lon"], r["lat"]), xytext=(7, 5), textcoords="offset points", fontsize=7, color=palette.ink) | 26 | + ax.annotate(f"{r['id_immeuble']} · {r['valeur_2026']/1e6:.1f} M$", (r["lon"], r["lat"]), xytext=decal[r["id_immeuble"]], textcoords="offset points", fontsize=7, color=palette.ink, | ||
| 27 | + arrowprops=dict(arrowstyle="-", color=palette.ink2, lw=0.6, shrinkA=0, shrinkB=3)) | ||||
| 26 | centres = {"Montréal": (45.52, -73.60), "Québec": (46.81, -71.22), "Gatineau": (45.47, -75.70), "Sherbrooke": (45.40, -71.89), "Trois-Rivières": (46.35, -72.55), "Saguenay": (48.43, -71.07)} | 28 | centres = {"Montréal": (45.52, -73.60), "Québec": (46.81, -71.22), "Gatineau": (45.47, -75.70), "Sherbrooke": (45.40, -71.89), "Trois-Rivières": (46.35, -72.55), "Saguenay": (48.43, -71.07)} | ||
| 27 | for nom, (la, lo) in centres.items(): | 29 | for nom, (la, lo) in centres.items(): | ||
| 28 | g = pf[pf["rmr"] == nom] | 30 | g = pf[pf["rmr"] == nom] | ||
| 29 | − ax.text(lo, la + 0.22, f"{nom}\n{len(g)} imm. · {g['valeur_2026'].sum()/1e6:.0f} M$", ha="center", fontsize=7.5, color=palette.ink2) | 31 | + dx, dy, ha = (-0.25, -0.05, "right") if nom == "Saguenay" else ((0.0, -0.42, "center") if nom == "Montréal" else (0.0, 0.22, "center")) | ||
| 32 | + ax.text(lo + dx, la + dy, f"{nom}\n{len(g)} imm. · {g['valeur_2026'].sum()/1e6:.0f} M$", ha=ha, fontsize=7.5, color=palette.ink2) | ||||
| 30 | ax.set_xlabel("Longitude (°, coordonnées fictives)"); ax.set_ylabel("Latitude (°)") | 33 | ax.set_xlabel("Longitude (°, coordonnées fictives)"); ax.set_ylabel("Latitude (°)") | ||
| 31 | ax.set_xlim(-76.4, -70.4); ax.set_ylim(44.9, 49.1); ax.set_aspect(1.35) | 34 | ax.set_xlim(-76.4, -70.4); ax.set_ylim(44.9, 49.1); ax.set_aspect(1.35) | ||
| 32 | ax.legend(loc="upper left", fontsize=7.5, markerscale=0.6) | 35 | ax.legend(loc="upper left", fontsize=7.5, markerscale=0.6) | ||
modified
analysis/python/figures/ch43_carte_riverain.py
+20 −14
@@ -30,20 +30,26 @@ def main(): | |||||
| 30 | for i, (c, col) in enumerate(couleurs.items()): | 30 | for i, (c, col) in enumerate(couleurs.items()): | ||
| 31 | a.add_patch(Rectangle((cas.NCOL * cas.PAS + 90 + 0, 0), 0, 0, facecolor=col)) | 31 | a.add_patch(Rectangle((cas.NCOL * cas.PAS + 90 + 0, 0), 0, 0, facecolor=col)) | ||
| 32 | handles = [Rectangle((0, 0), 1, 1, facecolor=couleurs[c], edgecolor="white") for c in couleurs] + [Rectangle((0, 0), 1, 1, facecolor="none", edgecolor=palette.cat[1])] | 32 | handles = [Rectangle((0, 0), 1, 1, facecolor=couleurs[c], edgecolor="white") for c in couleurs] + [Rectangle((0, 0), 1, 1, facecolor="none", edgecolor=palette.cat[1])] | ||
| 33 | − a.legend(handles, list(couleurs) + ["vue sur l'eau hors zone (lac)"], loc="upper left", fontsize=6.8, ncol=2, frameon=True, framealpha=0.9, bbox_to_anchor=(0.0, 1.0)) | 33 | + a.legend(handles, list(couleurs) + ["vue sur l'eau hors zone (lac)"], loc="upper center", fontsize=6.8, ncol=3, bbox_to_anchor=(0.5, -0.02)) | ||
| 34 | − # (b) prix/m² par bande de distance, avant / après, lots non riverains du lac seulement | 34 | + # (b) ln P ajusté des attributs physiques et du temps (coefficients estimés hors zone), moyenne par classe avant / après, IC à 95 % | ||
| 35 | − v = ventes[~ventes["id_lot"].str[-2:].astype(int).isin(cas.COLS_LAC)].copy() | 35 | + import ch43_risques as c2 | ||
| 36 | − v["pm2"] = v["prix_vente"] / v["sup_habitable_m2"] | 36 | + v = ventes.copy(); y = np.log(v["prix_vente"].values) | ||
| 37 | − t = (pd.to_datetime(v["date_vente"]) - pd.Timestamp(cas.DATE_REF)).dt.days / 365.25 | 37 | + te = v[(v["expose"] == 0) & (v["rive"] == 0)] | ||
| 38 | − v["pm2_t"] = v["pm2"] / (1 + cas.TAUX_MARCHE) ** t # ramené à la date de référence | 38 | + r = c2.h.mco(c2._X(te, []), np.log(te["prix_vente"].values)); b0 = r["beta"] | ||
| 39 | − v["bande"] = (v["dist_riviere_m"] // 40).clip(upper=12) | 39 | + X = c2._X(v, []); v["ln_aj"] = y - X[:, 1:] @ b0[1:] # ln P net des attributs et de la tendance (constante conservée) | ||
| 40 | − for post, col, lab in [(0, palette.cat[2], "avant mai 2019"), (1, palette.cat[0], "après mai 2019")]: | 40 | + ref = v.loc[(v["expose"] == 0) & (v["rive"] == 0), "ln_aj"].mean() | ||
| 41 | − g = v[v["post"] == post].groupby("bande")["pm2_t"].mean() | 41 | + v["ecart"] = (v["ln_aj"] - ref) * 100 | ||
| 42 | − b.plot(g.index * 40 + 20, g.values, marker="o", markersize=3.5, color=col, linewidth=1.3, label=lab) | 42 | + ordre = ["très élevée", "élevée", "modérée", "faible", "hors zone"] | ||
| 43 | − for xb, lab in [(80, "TE | E"), (160, "E | M"), (240, "M | F"), (280, "F | hors zone")]: | 43 | + x = np.arange(len(ordre)); w = 0.36 | ||
| 44 | − b.axvline(xb if xb != 280 else 280, color=palette.ink2, linewidth=0.6, linestyle=":") | 44 | + for post, col, lab, dx in [(0, palette.cat[2], "avant mai 2019", -w / 2), (1, palette.cat[0], "après mai 2019", w / 2)]: | ||
| 45 | − b.set_xlabel("Distance à la rivière (m) — bandes de 40 m, lots du lac exclus"); b.set_ylabel("Prix par m² habitable, à la date de référence ($/m²)") | 45 | + g = v[(v["post"] == post) & (v["rive"] == 0) | ((v["post"] == post) & (v["classe"].isin(["très élevée", "élevée"])))] | ||
| 46 | − b.set_title("(b) Prix unitaire et distance à la rivière", loc="left"); b.legend(loc="lower right", fontsize=7) | 46 | + g = g.groupby("classe")["ecart"].agg(["mean", "std", "count"]).reindex(ordre) | ||
| 47 | + b.bar(x + dx, g["mean"], w, color=col, label=lab) | ||||
| 48 | + b.errorbar(x + dx, g["mean"], yerr=1.96 * g["std"] / np.sqrt(g["count"]), fmt="none", ecolor=palette.ink2, elinewidth=0.9, capsize=2) | ||||
| 49 | + b.axhline(0, color=palette.ink2, linewidth=0.8) | ||||
| 50 | + b.set_xticks(x); b.set_xticklabels([o.replace(" ", "\n") for o in ordre], fontsize=7.5) | ||||
| 51 | + b.set_ylabel("ln P net des attributs, écart aux lots hors zone (pts de %)") | ||||
| 52 | + b.set_title("(b) Écart de prix par classe, avant / après", loc="left"); b.legend(loc="lower right", fontsize=7) | ||||
| 47 | fig.tight_layout() | 53 | fig.tight_layout() | ||
| 48 | savefig(fig, "ch43/ch43-fig-carte-riverain.pdf") | 54 | savefig(fig, "ch43/ch43-fig-carte-riverain.pdf") | ||
| 49 | 55 | ||||
modified
analysis/python/figures/ch43_did_cas4.py
+2 −2
@@ -23,7 +23,7 @@ def main(): | |||||
| 23 | g0 = pan[pan["traite"] == 1].groupby("t")["ln_rne_sans_choc"].mean(); g0 = g0 - g0.loc[t_ref] | 23 | g0 = pan[pan["traite"] == 1].groupby("t")["ln_rne_sans_choc"].mean(); g0 = g0 - g0.loc[t_ref] | ||
| 24 | a.plot(g0.index, g0.values, color=palette.cat[0], linewidth=1.0, linestyle="--", label="traités sans le choc (vérité)") | 24 | a.plot(g0.index, g0.values, color=palette.cat[0], linewidth=1.0, linestyle="--", label="traités sans le choc (vérité)") | ||
| 25 | a.axvline(t_ev - 0.5, color=palette.ink2, linewidth=0.8, linestyle=":") | 25 | a.axvline(t_ev - 0.5, color=palette.ink2, linewidth=0.8, linestyle=":") | ||
| 26 | − a.text(t_ev - 0.2, a.get_ylim()[0] if False else -0.26, "inondation\n2019T2", fontsize=7, color=palette.ink2, va="bottom") | 26 | + a.text(t_ev + 0.9, -0.24, "inondation\n2019T2", fontsize=7, color=palette.ink2, va="bottom") | ||
| 27 | ticks = [idx[q] for q in ["2016Q1", "2018Q1", "2020Q1", "2022Q1", "2024Q1", "2026Q1"]] | 27 | ticks = [idx[q] for q in ["2016Q1", "2018Q1", "2020Q1", "2022Q1", "2024Q1", "2026Q1"]] | ||
| 28 | a.set_xticks(ticks); a.set_xticklabels(["2016", "2018", "2020", "2022", "2024", "2026"]) | 28 | a.set_xticks(ticks); a.set_xticklabels(["2016", "2018", "2020", "2022", "2024", "2026"]) | ||
| 29 | a.set_ylabel("ln RNE moyen, écart à 2019T1"); a.set_title("(a) Trajectoires", loc="left"); a.legend(loc="upper left", fontsize=7) | 29 | a.set_ylabel("ln RNE moyen, écart à 2019T1"); a.set_title("(a) Trajectoires", loc="left"); a.legend(loc="upper left", fontsize=7) | ||
@@ -37,7 +37,7 @@ def main(): | |||||
| 37 | b.step(kk, verite, where="mid", color=palette.ink, linewidth=1.0, linestyle="--", label="choc déclaré") | 37 | b.step(kk, verite, where="mid", color=palette.ink, linewidth=1.0, linestyle="--", label="choc déclaré") | ||
| 38 | b.axhline(0, color=palette.ink2, linewidth=0.8); b.axvline(-0.5, color=palette.ink2, linewidth=0.8, linestyle=":") | 38 | b.axhline(0, color=palette.ink2, linewidth=0.8); b.axvline(-0.5, color=palette.ink2, linewidth=0.8, linestyle=":") | ||
| 39 | b.set_xlabel("Trimestres depuis l'inondation (k)"); b.set_ylabel("Effet sur ln RNE"); b.set_title("(b) Étude d'événement", loc="left") | 39 | b.set_xlabel("Trimestres depuis l'inondation (k)"); b.set_ylabel("Effet sur ln RNE"); b.set_title("(b) Étude d'événement", loc="left") | ||
| 40 | − b.legend(loc="lower right", fontsize=7) | 40 | + b.legend(loc="lower left", fontsize=7) | ||
| 41 | fig.tight_layout() | 41 | fig.tight_layout() | ||
| 42 | savefig(fig, "ch43/ch43-fig-did-cas4.pdf") | 42 | savefig(fig, "ch43/ch43-fig-did-cas4.pdf") | ||
| 43 | 43 | ||||
modified
analysis/python/figures/ch43_effets_methodes.py
+2 −2
@@ -29,7 +29,7 @@ def main(): | |||||
| 29 | a.set_xlabel("Effet sur ln P (points de pourcentage)"); a.set_title("(a) Sept estimations, quatre méthodes", loc="left") | 29 | a.set_xlabel("Effet sur ln P (points de pourcentage)"); a.set_title("(a) Sept estimations, quatre méthodes", loc="left") | ||
| 30 | a.plot([], [], "o", color=palette.cat[0], label="estimation et IC à 95 %"); a.plot([], [], "o", color=palette.cat[2], label="estimation sans erreur-type") | 30 | a.plot([], [], "o", color=palette.cat[0], label="estimation et IC à 95 %"); a.plot([], [], "o", color=palette.cat[2], label="estimation sans erreur-type") | ||
| 31 | a.plot([], [], marker="|", color=palette.ink, linestyle="none", markersize=10, markeredgewidth=1.6, label="vérité du générateur (cible)") | 31 | a.plot([], [], marker="|", color=palette.ink, linestyle="none", markersize=10, markeredgewidth=1.6, label="vérité du générateur (cible)") | ||
| 32 | − a.legend(loc="lower left", fontsize=7) | 32 | + a.set_xlim(-8.6, 2.6); a.legend(loc="upper right", fontsize=6.8, handlelength=1.2) | ||
| 33 | # (b) classes | 33 | # (b) classes | ||
| 34 | cl = ["très élevée", "élevée", "modérée", "faible"]; cc = he["c_classes"] | 34 | cl = ["très élevée", "élevée", "modérée", "faible"]; cc = he["c_classes"] | ||
| 35 | x = np.arange(len(cl)); w = 0.36 | 35 | x = np.arange(len(cl)); w = 0.36 | ||
@@ -41,7 +41,7 @@ def main(): | |||||
| 41 | b.plot(x - w / 2, av["verite"] * 100, marker="_", color=palette.ink, markersize=12, markeredgewidth=1.8, linestyle="none", label="déclaré", zorder=4) | 41 | b.plot(x - w / 2, av["verite"] * 100, marker="_", color=palette.ink, markersize=12, markeredgewidth=1.8, linestyle="none", label="déclaré", zorder=4) | ||
| 42 | b.plot(x + w / 2, ap["verite"] * 100, marker="_", color=palette.ink, markersize=12, markeredgewidth=1.8, linestyle="none", zorder=4) | 42 | b.plot(x + w / 2, ap["verite"] * 100, marker="_", color=palette.ink, markersize=12, markeredgewidth=1.8, linestyle="none", zorder=4) | ||
| 43 | b.set_xticks(x); b.set_xticklabels([c.replace(" ", "\n") for c in cl], fontsize=7.5); b.axhline(0, color=palette.ink2, linewidth=0.8) | 43 | b.set_xticks(x); b.set_xticklabels([c.replace(" ", "\n") for c in cl], fontsize=7.5); b.axhline(0, color=palette.ink2, linewidth=0.8) | ||
| 44 | − b.set_ylabel("Effet sur ln P (points de pourcentage)"); b.set_title("(b) Par classe d'exposition", loc="left"); b.legend(loc="lower right", fontsize=7) | 44 | + b.set_ylabel("Effet sur ln P (points de pourcentage)"); b.set_title("(b) Par classe d'exposition", loc="left"); b.set_ylim(-17.5, 3.5); b.legend(loc="lower center", fontsize=7) | ||
| 45 | fig.tight_layout() | 45 | fig.tight_layout() | ||
| 46 | savefig(fig, "ch43/ch43-fig-effets-methodes.pdf") | 46 | savefig(fig, "ch43/ch43-fig-effets-methodes.pdf") | ||
| 47 | 47 | ||||
modified
analysis/python/figures/ch43_placebos.py
+2 −2
@@ -20,8 +20,8 @@ def main(): | |||||
| 20 | ax.hist(dist, bins=60, color=palette.cat[0], alpha=0.75, linewidth=0, density=True) | 20 | ax.hist(dist, bins=60, color=palette.cat[0], alpha=0.75, linewidth=0, density=True) | ||
| 21 | ax.axvline(obs, color=palette.cat[1], linewidth=1.6); ax.axvline(-obs, color=palette.cat[1], linewidth=1.0, linestyle=":") | 21 | ax.axvline(obs, color=palette.cat[1], linewidth=1.6); ax.axvline(-obs, color=palette.cat[1], linewidth=1.0, linestyle=":") | ||
| 22 | ax.axvline(cas.CHOC_PERMANENT, color=palette.ink, linewidth=1.0, linestyle="--") | 22 | ax.axvline(cas.CHOC_PERMANENT, color=palette.ink, linewidth=1.0, linestyle="--") | ||
| 23 | − ax.text(obs - 0.004, ax.get_ylim()[1] * 0.92, f"observé {obs:.3f}\np = {p:.3f}", ha="right", fontsize=7.5, color=palette.ink) | 23 | + ax.text(obs + 0.004, ax.get_ylim()[1] * 0.92, f"observé {obs:.3f}\np = {p:.3f}", ha="left", fontsize=7.5, color=palette.ink) | ||
| 24 | − ax.text(cas.CHOC_PERMANENT + 0.004, ax.get_ylim()[1] * 0.70, f"vérité {cas.CHOC_PERMANENT:.2f}", fontsize=7.5, color=palette.ink) | 24 | + ax.text(cas.CHOC_PERMANENT + 0.004, ax.get_ylim()[1] * 0.60, f"vérité {cas.CHOC_PERMANENT:.2f}", fontsize=7.5, color=palette.ink) | ||
| 25 | ax.set_xlabel("Estimateur placebo (ln RNE)"); ax.set_title(titre, loc="left") | 25 | ax.set_xlabel("Estimateur placebo (ln RNE)"); ax.set_title(titre, loc="left") | ||
| 26 | axes[0].set_ylabel("Densité") | 26 | axes[0].set_ylabel("Densité") | ||
| 27 | fig.tight_layout() | 27 | fig.tight_layout() | ||
modified
analysis/python/tests/test_ch42.py
+5 −5
@@ -169,11 +169,11 @@ class TestExercices: | |||||
| 169 | 169 | ||||
| 170 | def test_ex4_grille(self): | 170 | def test_ex4_grille(self): | ||
| 171 | p_t = 342000 * 1.02 ** (5 / 12) | 171 | p_t = 342000 * 1.02 ** (5 / 12) | ||
| 172 | − assert p_t == pytest.approx(344830, abs=1) | 172 | + assert p_t == pytest.approx(344834, abs=1) | ||
| 173 | A = {"marché": p_t - 342000, "étage": p_t * 0.02, "orientation": p_t * (-0.03 - 0.03), "stationnement": -28000.0, "superficie": -4 * 2190.0} | 173 | A = {"marché": p_t - 342000, "étage": p_t * 0.02, "orientation": p_t * (-0.03 - 0.03), "stationnement": -28000.0, "superficie": -4 * 2190.0} | ||
| 174 | pa = cp.prix_ajuste_additif(342000, A) | 174 | pa = cp.prix_ajuste_additif(342000, A) | ||
| 175 | assert A["étage"] == pytest.approx(6897, abs=1) and A["orientation"] == pytest.approx(-20690, abs=1) and A["superficie"] == -8760 | 175 | assert A["étage"] == pytest.approx(6897, abs=1) and A["orientation"] == pytest.approx(-20690, abs=1) and A["superficie"] == -8760 | ||
| 176 | − assert pa == pytest.approx(294277, abs=1) | 176 | + assert pa == pytest.approx(294280, abs=1) | ||
| 177 | bn = cp.ajustement_brut_net(A, 342000) | 177 | bn = cp.ajustement_brut_net(A, 342000) | ||
| 178 | assert bn["brut_pct"] == pytest.approx(0.196, abs=0.001) | 178 | assert bn["brut_pct"] == pytest.approx(0.196, abs=0.001) | ||
| 179 | 179 | ||||
@@ -190,9 +190,9 @@ class TestExercices: | |||||
| 190 | 190 | ||||
| 191 | def test_ex6_conversion_script(self): | 191 | def test_ex6_conversion_script(self): | ||
| 192 | # taux de capitalisation 4,75 % : la valeur en bloc monte et la prime devient négative | 192 | # taux de capitalisation 4,75 % : la valeur en bloc monte et la prime devient négative | ||
| 193 | − v_bloc_475 = 82533 / 0.0475 | 193 | + v_bloc_475 = cas.valeur_bloc(taux=0.0475)["valeur"] | ||
| 194 | − assert cas.valeur_bloc(taux=0.0475)["valeur"] == pytest.approx(v_bloc_475, abs=1) and v_bloc_475 == pytest.approx(1737537, abs=1) | 194 | + assert v_bloc_475 == pytest.approx(cas.valeur_bloc()["noi"] / 0.0475) and v_bloc_475 == pytest.approx(1737546, abs=1) | ||
| 195 | − assert cas.faisabilite()["v_conv"] - v_bloc_475 == pytest.approx(-44733, abs=1) | 195 | + assert cas.faisabilite()["v_conv"] - v_bloc_475 == pytest.approx(-44742, abs=1) | ||
| 196 | # rotation de 30 % et décote de 10 % | 196 | # rotation de 30 % et décote de 10 % | ||
| 197 | assert cas.faisabilite(0.30, 0.10)["v_conv"] == pytest.approx(1893849, abs=1) | 197 | assert cas.faisabilite(0.30, 0.10)["v_conv"] == pytest.approx(1893849, abs=1) | ||
| 198 | # sans coûts d'individualisation (−120 000 $ à t = 0) : la VAN monte exactement de 120 000 $ | 198 | # sans coûts d'individualisation (−120 000 $ à t = 0) : la VAN monte exactement de 120 000 $ | ||
modified
assets/figures/ch39/ch39-fig-posterieures.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch39/ch39-fig-predictive.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch39/ch39-fig-prior-informatif.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch39/ch39-fig-retrecissement.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch39/ch39-fig-traces.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-convergence.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-distribution.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-lhs.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-nuage.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-portefeuille.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-rcd.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-sobol.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch42/ch42-fig-bloc-piece.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch42/ch42-fig-grille-fraction.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch43/ch43-fig-carte-cas4.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch43/ch43-fig-carte-riverain.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch43/ch43-fig-did-cas4.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch43/ch43-fig-effets-methodes.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch43/ch43-fig-placebos.pdf
+0 −0
Binary file not shown.
added
manuscript/_wrap_ch20.tex
+12 −0
@@ -0,0 +1,12 @@ | |||||
| 1 | +\providecommand{\BUILDVARIANT}{uqo}\providecommand{\BUILDMEDIA}{numerique} | ||||
| 2 | +\documentclass[10pt,twoside,openright]{book} | ||||
| 3 | +\newif\ifLogoAutorise\LogoAutorisefalse\def\PALETTE{uqo} | ||||
| 4 | +\usepackage{traite-qc} | ||||
| 5 | +\input{../manuscript/frontmatter/metadata.tex} | ||||
| 6 | +\input{/Users/simon-pierreboucher/Desktop/UQO/Traite-Evaluation-QC/build/ch20/_labels.tex} | ||||
| 7 | +\begin{document} | ||||
| 8 | +\setcounter{chapter}{19} | ||||
| 9 | +\input{chapters/ch20.tex} | ||||
| 10 | +\appendix\chapter{Solutions du chapitre}\input{../solutions/ch20.tex} | ||||
| 11 | +\printbibliography | ||||
| 12 | +\end{document} | ||||
modified
manuscript/chapters/ch20.tex
+59 −57
@@ -1,6 +1,6 @@ | |||||
| 1 | \chapter{Réconciliation et incertitude}\label{ch:20} | 1 | \chapter{Réconciliation et incertitude}\label{ch:20} | ||
| 2 | 2 | ||||
| 3 | −Les quatre chapitres précédents ont laissé le lecteur devant plusieurs chiffres pour une même maison : une valeur pondérée par comparaison de \dollars{575565} (\cref{ch:17}), une prédiction hédonique de \dollars{637953} assortie d'un intervalle de prédiction de \dollars{539682} à \dollars{749087} (\cref{ch:18}), un coût neuf de \dollars{397567} qui attend encore son terrain et sa dépréciation (\cref{ch:21}), et, en amont, une indication brute par le prix unitaire qui variait de \dollars{525768} à \dollars{608014} selon la façon de choisir les comparables (\cref{ch:16}). Aucun de ces chiffres n'est la valeur marchande ; chacun en est une \emph{indication}, c'est-à-dire une estimation produite par une méthode, avec ses données, ses hypothèses et son erreur. Le présent chapitre traite du passage de ces indications à une conclusion : comment les pondérer, ce que l'on sait de leur précision, comment mesurer l'incertitude qui subsiste et comment la communiquer dans un rapport soumis aux normes de pratique. Il formalise d'abord la réconciliation comme la combinaison d'estimateurs bruités et parfois corrélés, puis il distingue soigneusement l'intervalle qui porte sur la valeur de celui qui porte sur le prix, recense les sources d'incertitude déjà mesurées dans les chapitres précédents, introduit le bootstrap des comparables comme outil de mesure, construit l'indication par le coût qui manquait, et conduit la réconciliation complète du cas 1 jusqu'à une fourchette et une valeur ponctuelle justifiées, que le \cref{ch:45} reprendra. Le chapitre se clôt sur ce que seul un jeu synthétique permet : comparer la conclusion à la valeur que la loi de génération des données assigne au sujet. | 3 | +Les chapitres précédents ont laissé le lecteur devant plusieurs chiffres pour une même maison : une valeur pondérée par comparaison de \dollars{575565} (\cref{ch:17}), une prédiction hédonique de \dollars{637953} assortie d'un intervalle de prédiction de \dollars{539682} à \dollars{749087} (\cref{ch:18}), une indication par le coût de \dollars{579501} obtenue d'un coût neuf de \dollars{397567} (\cref{ch:21}), d'une dépréciation extraite du marché et d'une valeur de terrain de \dollars{277000} (\cref{ch:24}), et, en amont, une indication brute par le prix unitaire qui variait de \dollars{525768} à \dollars{608014} selon la façon de choisir les comparables (\cref{ch:16}). Aucun de ces chiffres n'est la valeur marchande ; chacun en est une \emph{indication}, c'est-à-dire une estimation produite par une méthode, avec ses données, ses hypothèses et son erreur. Le présent chapitre traite du passage de ces indications à une conclusion : comment les pondérer, ce que l'on sait de leur précision, comment mesurer l'incertitude qui subsiste et comment la communiquer dans un rapport soumis aux normes de pratique. Il formalise d'abord la réconciliation comme la combinaison d'estimateurs bruités et parfois corrélés, puis il distingue soigneusement l'intervalle qui porte sur la valeur de celui qui porte sur le prix, recense les sources d'incertitude déjà mesurées dans les chapitres précédents, introduit le bootstrap des comparables comme outil de mesure, examine l'indication par le coût et son incertitude, et conduit la réconciliation complète du cas 1 jusqu'à une fourchette et une valeur ponctuelle justifiées, que le \cref{ch:45} reprendra. Le chapitre se clôt sur ce que seul un jeu synthétique permet : comparer la conclusion à la valeur que la loi de génération des données assigne au sujet. | ||
| 4 | 4 | ||||
| 5 | \begin{objectifs} | 5 | \begin{objectifs} | ||
| 6 | À la fin de ce chapitre, le lecteur sait : | 6 | À la fin de ce chapitre, le lecteur sait : | ||
@@ -9,7 +9,7 @@ Les quatre chapitres précédents ont laissé le lecteur devant plusieurs chiffr | |||||
| 9 | \item distinguer l'intervalle de confiance de la valeur marchande, l'intervalle de prédiction du prix et la fourchette de valeur conclue, et dire ce que les normes exigent ou permettent à propos de chacun ; | 9 | \item distinguer l'intervalle de confiance de la valeur marchande, l'intervalle de prédiction du prix et la fourchette de valeur conclue, et dire ce que les normes exigent ou permettent à propos de chacun ; | ||
| 10 | \item recenser et hiérarchiser les sources d'incertitude d'un dossier de comparaison : sélection des comparables, ajustements, spécification du modèle, bruit de transaction ; | 10 | \item recenser et hiérarchiser les sources d'incertitude d'un dossier de comparaison : sélection des comparables, ajustements, spécification du modèle, bruit de transaction ; | ||
| 11 | \item mettre en œuvre un bootstrap des comparables à trois niveaux (candidats, ajustements, les deux) et en lire la distribution ; | 11 | \item mettre en œuvre un bootstrap des comparables à trois niveaux (candidats, ajustements, les deux) et en lire la distribution ; | ||
| 12 | −\item construire une indication par le coût sous hypothèses déclarées et juger de son poids dans la réconciliation ; | 12 | +\item caractériser l'incertitude d'une indication par le coût, la rééchantillonner avec les autres indications et juger de son poids dans la réconciliation ; | ||
| 13 | \item rédiger une conclusion de valeur qui expose le raisonnement, la fourchette, la valeur la plus probable, l'arrondi et les hypothèses, conformément aux Normes de pratique professionnelle et aux cadres canadien et international. | 13 | \item rédiger une conclusion de valeur qui expose le raisonnement, la fourchette, la valeur la plus probable, l'arrondi et les hypothèses, conformément aux Normes de pratique professionnelle et aux cadres canadien et international. | ||
| 14 | \end{itemize} | 14 | \end{itemize} | ||
| 15 | \end{objectifs} | 15 | \end{objectifs} | ||
@@ -71,9 +71,9 @@ Le \cref{tab:20:criteres} traduit les critères des manuels dans le langage de l | |||||
| 71 | \toprule | 71 | \toprule | ||
| 72 | Critère & Question posée à l'indication & Exemples dans le cas 1 & Effet sur le poids \\ | 72 | Critère & Question posée à l'indication & Exemples dans le cas 1 & Effet sur le poids \\ | ||
| 73 | \midrule | 73 | \midrule | ||
| 74 | −Quantité d'information & Sur combien d'observations indépendantes repose-t-elle ? Quelle est sa variance d'échantillonnage ? & 5 comparables (grille) ; 600 ventes (modèle) ; 38 postes d'un devis et 2 hypothèses (coût) & variance : poids $\propto 1/\sigma^2$ \\ | 74 | +Quantité d'information & Sur combien d'observations indépendantes repose-t-elle ? Quelle est sa variance d'échantillonnage ? & 5 comparables (grille) ; 600 ventes (modèle) ; 600 ventes pour la dépréciation extraite et 13 ventes récentes pour le terrain (coût) & variance : poids $\propto 1/\sigma^2$ \\ | ||
| 75 | −Qualité des données & Les données sont-elles vérifiées, mesurées comme celles du sujet, contemporaines ? & ventes synthétiques homogènes ; coût calibré sur une fourchette montréalaise ; terrain non observé & biais présumé : poids réduit si les données sont douteuses \\ | 75 | +Qualité des données & Les données sont-elles vérifiées, mesurées comme celles du sujet, contemporaines ? & ventes synthétiques homogènes ; coût neuf calibré sur une fourchette montréalaise ; terrain extrait de treize ventes récentes, non observé directement & biais présumé : poids réduit si les données sont douteuses \\ | ||
| 76 | −Pertinence de la méthode & La méthode estime-t-elle bien la valeur recherchée pour ce type de bien et cette fin ? & comparaison et modèle visent $\E[P \mid \mathbf{x}_s]$ ; le coût mesure un plafond pour un bâtiment de 28 ans & biais présumé et variance : poids réduit, voire nul \\ | 76 | +Pertinence de la méthode & La méthode estime-t-elle bien la valeur recherchée pour ce type de bien et cette fin ? & comparaison et modèle visent $\E[P \mid \mathbf{x}_s]$ ; le coût, pour un bâtiment de 28 ans, dépend d'une dépréciation qu'il faut extraire du marché & biais présumé et variance : poids réduit \\ | ||
| 77 | Cohérence & L'indication est-elle compatible avec les autres et avec le marché ? Si non, l'écart est-il expliqué ? & écart grille/modèle de \pct{-9.8} expliqué par les résidus (\cref{prop:residus}) & corrélation et biais : poids ajusté après explication \\ | 77 | Cohérence & L'indication est-elle compatible avec les autres et avec le marché ? Si non, l'écart est-il expliqué ? & écart grille/modèle de \pct{-9.8} expliqué par les résidus (\cref{prop:residus}) & corrélation et biais : poids ajusté après explication \\ | ||
| 78 | \bottomrule | 78 | \bottomrule | ||
| 79 | \end{tabularx} | 79 | \end{tabularx} | ||
@@ -106,7 +106,7 @@ Les Normes de pratique professionnelle de l'OEAQ exigent une \emph{conclusion de | |||||
| 106 | 106 | ||||
| 107 | \section{Les sources d'incertitude d'un dossier de comparaison}\label{sec:20:sources} | 107 | \section{Les sources d'incertitude d'un dossier de comparaison}\label{sec:20:sources} | ||
| 108 | 108 | ||||
| 109 | −Les chapitres précédents ont, chacun pour sa part, mesuré une source d'incertitude du cas 1 ; le \cref{tab:20:sources} les rassemble pour qu'on en voie la hiérarchie. La première source est le \emph{choix des comparables} : le \cref{ch:16} a répété la sélection pour 48 combinaisons du nombre de comparables, du rayon et de la fenêtre temporelle et obtenu des indications brutes de \dollars{525768} à \dollars{608014}, d'écart-type \dollars{24069}, soit \pct{4.4} ; cette dispersion, mesurée avant tout ajustement, tient à la fois au bruit de transaction des ventes retenues et au biais de localisation que le rayon introduit. La deuxième est l'\emph{incertitude des ajustements} : le \cref{ch:17} a déplacé chaque prix implicite de plus ou moins 1,96 erreur-type et n'a jamais déplacé la valeur pondérée de plus de \dollars{7380} ; le choix de l'indice temporel entre 3 et 6 \% par année la déplace de \dollars{16734}, et l'omission d'un ajustement de \dollars{21687} (qualité) à \dollars{30357} (temps). La troisième est la \emph{spécification et l'échantillon du modèle} : le \cref{ch:18} a fait varier la forme fonctionnelle, les indicatrices temporelles et le sous-échantillon d'estimation et obtenu des prédictions de \dollars{627260} à \dollars{649980} pour les spécifications en logarithme, et de \dollars{625967} à \dollars{640098} selon le sous-échantillon, soit deux à trois points de pourcentage. La quatrième est le \emph{bruit de transaction} lui-même, $\hat\sigma = 0{,}083$, qui domine l'intervalle de prédiction mais ne pèse sur l'estimation de la valeur qu'à travers le nombre de ventes : divisé par $\sqrt{600}$ dans le modèle, il ne l'est que par $\sqrt{5}$ dans la grille, et c'est l'origine de l'écart de \pct{-8.5} entre les deux que la \cref{prop:residus} a établi. La cinquième, enfin, est propre au coût : le \cref{ch:21} a montré qu'une année d'indice des prix de la construction déplace le coût neuf de \pct{8.6} et que les taux d'indirects et d'incitatif en déplacent chacun quelques pour cent ; la \cref{sec:20:cout} y ajoutera l'incertitude, bien plus grande, de la dépréciation et du terrain. | 109 | +Les chapitres précédents ont, chacun pour sa part, mesuré une source d'incertitude du cas 1 ; le \cref{tab:20:sources} les rassemble pour qu'on en voie la hiérarchie. La première source est le \emph{choix des comparables} : le \cref{ch:16} a répété la sélection pour 48 combinaisons du nombre de comparables, du rayon et de la fenêtre temporelle et obtenu des indications brutes de \dollars{525768} à \dollars{608014}, d'écart-type \dollars{24069}, soit \pct{4.4} ; cette dispersion, mesurée avant tout ajustement, tient à la fois au bruit de transaction des ventes retenues et au biais de localisation que le rayon introduit. La deuxième est l'\emph{incertitude des ajustements} : le \cref{ch:17} a déplacé chaque prix implicite de plus ou moins 1,96 erreur-type et n'a jamais déplacé la valeur pondérée de plus de \dollars{7380} ; le choix de l'indice temporel entre 3 et 6 \% par année la déplace de \dollars{16734}, et l'omission d'un ajustement de \dollars{21687} (qualité) à \dollars{30357} (temps). La troisième est la \emph{spécification et l'échantillon du modèle} : le \cref{ch:18} a fait varier la forme fonctionnelle, les indicatrices temporelles et le sous-échantillon d'estimation et obtenu des prédictions de \dollars{627260} à \dollars{649980} pour les spécifications en logarithme, et de \dollars{625967} à \dollars{640098} selon le sous-échantillon, soit deux à trois points de pourcentage. La quatrième est le \emph{bruit de transaction} lui-même, $\hat\sigma = 0{,}083$, qui domine l'intervalle de prédiction mais ne pèse sur l'estimation de la valeur qu'à travers le nombre de ventes : divisé par $\sqrt{600}$ dans le modèle, il ne l'est que par $\sqrt{5}$ dans la grille, et c'est l'origine de l'écart de \pct{-8.5} entre les deux que la \cref{prop:residus} a établi. La cinquième, enfin, est propre au coût : le \cref{ch:21} a montré qu'une année d'indice des prix de la construction déplace le coût neuf de \pct{8.6} et que les taux d'indirects et d'incitatif en déplacent chacun quelques pour cent ; le \cref{ch:24} y a ajouté l'incertitude, plus grande encore, du terrain ($\pm 15$ \% déplacent l'indication de \dollars{537951} à \dollars{621051}) et du choix de la lecture de la dépréciation (extraite du marché ou ventilée par composantes : \dollars{579501} contre \dollars{445872}). | ||
| 110 | 110 | ||||
| 111 | \begin{table}[htbp] | 111 | \begin{table}[htbp] | ||
| 112 | \caption{Sources d'incertitude du cas 1 mesurées dans les chapitres précédents et nature de chacune}\label{tab:20:sources} | 112 | \caption{Sources d'incertitude du cas 1 mesurées dans les chapitres précédents et nature de chacune}\label{tab:20:sources} | ||
@@ -124,6 +124,7 @@ Spécification du modèle (formes en logarithme) & \dollars{627260} à \dollars{ | |||||
| 124 | Coefficients du modèle (variance d'estimation au sujet) & demi-largeur \pct{2.0} & aléatoire & \cref{ch:18} \\ | 124 | Coefficients du modèle (variance d'estimation au sujet) & demi-largeur \pct{2.0} & aléatoire & \cref{ch:18} \\ | ||
| 125 | Bruit de transaction & $\hat\sigma = 0{,}083$ ; intervalle de prédiction $\pm 16$ \% & aléatoire, irréductible pour un prix & \cref{ch:18} \\ | 125 | Bruit de transaction & $\hat\sigma = 0{,}083$ ; intervalle de prédiction $\pm 16$ \% & aléatoire, irréductible pour un prix & \cref{ch:18} \\ | ||
| 126 | Coût neuf (indice, indirects, incitatif) & $\pm 8{,}6$ \% pour une année d'IPCB ; grille des taux & systématique & \cref{ch:21} \\ | 126 | Coût neuf (indice, indirects, incitatif) & $\pm 8{,}6$ \% pour une année d'IPCB ; grille des taux & systématique & \cref{ch:21} \\ | ||
| 127 | +Terrain extrait et lecture de la dépréciation & terrain $\pm 15$ \% : \dollars{537951} à \dollars{621051} ; ventilée contre extraite : \dollars{445872} contre \dollars{579501} & aléatoire (13 ventes) et systématique (méthode) & \cref{ch:24} \\ | ||||
| 127 | \bottomrule | 128 | \bottomrule | ||
| 128 | \end{tabularx} | 129 | \end{tabularx} | ||
| 129 | \tabsource{\synth{chiffres repris des scripts \texttt{ch16\_selection.py}, \texttt{ch17\_ajustements.py}, \texttt{ch18\_hedonique.py} et \texttt{ch21\_cout\_neuf.py} (données synthétiques, graine 20261031)}.} | 130 | \tabsource{\synth{chiffres repris des scripts \texttt{ch16\_selection.py}, \texttt{ch17\_ajustements.py}, \texttt{ch18\_hedonique.py} et \texttt{ch21\_cout\_neuf.py} (données synthétiques, graine 20261031)}.} | ||
@@ -159,42 +160,43 @@ Le bootstrap estime la variabilité d'échantillonnage ; il ne voit pas ce qui e | |||||
| 159 | 160 | ||||
| 160 | \section{L'indication par le coût du cas 1}\label{sec:20:cout} | 161 | \section{L'indication par le coût du cas 1}\label{sec:20:cout} | ||
| 161 | 162 | ||||
| 162 | −Le \cref{ch:21} a établi le coût neuf du sujet, $C_N = \dollars{397567}$ (\cref{eq:21:cn-cas1}), et a renvoyé aux \cref{ch:24,ch:25} pour la dépréciation et le terrain. Ces deux chapitres n'étant pas encore rédigés au moment où celui-ci l'est, l'indication par le coût est construite ici sous des hypothèses déclarées, destinées à être remplacées par les leurs lors de l'harmonisation, et consignées à cette fin dans le bilan du chapitre. La valeur du terrain est obtenue par la \emph{méthode d'allocation}, qui attribue au terrain une part $\alpha$ de la valeur de la propriété bâtie : | 163 | +Le \cref{ch:21} a établi le coût neuf du sujet, $C_N = \dollars{397567}$ (\cref{eq:21:cn-cas1}), et le \cref{ch:24} en a déduit l'indication par le coût que le présent chapitre reprend telle quelle, par le script \texttt{ch24\_depreciation.py}, sans la recalculer. La valeur du terrain y est extraite des treize ventes de moins de dix ans du secteur de Hull, pour chacune desquelles la différence entre le prix ramené à la date d'évaluation et le coût neuf déprécié du bâtiment estime la valeur du terrain ; la médiane de ces valeurs, \dollars{276954}, est arrondie à $V_L = \dollars{277000}$, soit \parmsq{447} pour \msq{620} et une part de 50,5 \% du prix des maisons récentes. La dépréciation totale est extraite du marché sur les 600 ventes, par l'ajustement d'un profil quadratique du taux de dépréciation sur l'âge ; à 28 ans, ce profil donne 22,00 \% du coût neuf, soit \dollars{87461}, auxquels le \cref{ch:24} ajoute une désuétude fonctionnelle curable propre au sujet de \dollars{7605} ; la dépréciation totale est de \dollars{95066}, soit 23,91 \%. L'indication par le coût suit l'identité de la méthode (\cref{eq:21:identite}) : | ||
| 163 | −\begin{equation}\label{eq:20:allocation} | ||||
| 164 | −V_L = \alpha\,\hat V_{\text{comp}}, \qquad \alpha = 0{,}30 \text{ (hypothèse)}, | ||||
| 165 | −\end{equation} | ||||
| 166 | −appliquée à l'indication par comparaison du \cref{ch:17} faute de ventes de terrains vacants dans le jeu synthétique ; la dépréciation est obtenue par la méthode \emph{âge-vie} avec un âge effectif égal à l'âge chronologique, aucune inspection du dossier ne permettant de l'en écarter, et une vie économique totale de soixante ans : | ||||
| 167 | −\begin{equation}\label{eq:20:age-vie} | ||||
| 168 | −D = C_N\,\frac{\text{âge effectif}}{\text{vie économique}} = \dollars{397567} \times \frac{28}{60} = \dollars{185531}, | ||||
| 169 | −\end{equation} | ||||
| 170 | −soit un taux de dépréciation de \pct{46.7}. L'indication par le coût suit l'identité de la méthode (\cref{eq:21:identite}) : | ||||
| 171 | \begin{equation}\label{eq:20:cout} | 164 | \begin{equation}\label{eq:20:cout} | ||
| 172 | −\hat V_{\text{coût}} = V_L + C_N - D = 172\,669 + 397\,567 - 185\,531 = \dollars{384705}. | 165 | +\hat V_{\text{coût}} = V_L + C_N - D_{\text{extraite}} - D_{\text{fonc}} = 277\,000 + 397\,567{,}33 - 87\,461{,}05 - 7\,605{,}31 = \dollars{579501}, | ||
| 173 | \end{equation} | 166 | \end{equation} | ||
| 174 | −Ces hypothèses sont pédagogiques et doivent être lues comme telles : la part du terrain de 30 \% et la vie économique de 60 ans sont des ordres de grandeur d'usage pour une maison de banlieue à ossature de bois, non des mesures sur le marché de Gatineau, et le \cref{tab:20:cout} montre ce que l'indication devient lorsqu'on les fait varier dans des plages plausibles : de \dollars{290043} (terrain à 20 \%, vie de 50 ans) à \dollars{479368} (terrain à 40 \%, vie de 75 ans), avec un écart-type de \dollars{50737} sur la grille ; un âge effectif ramené à 20 ans par un bon entretien donnerait \dollars{437714}. L'étendue de la grille est l'incertitude de la méthode telle que l'on peut la déclarer ici, et elle est près de trois fois celle de la comparaison. | 167 | +arrondie à \dollars{580000} au \cref{ch:24}. La lecture ventilée de la dépréciation physique du \cref{ch:11}, qui attribue une vie utile à chacune des composantes, donnait au contraire 57,5 \% et une valeur de \dollars{445872} ; le \cref{ch:24} l'a présentée comme la borne basse de la méthode et l'a écartée, parce qu'elle mesure l'usure des composantes et non ce que le marché retranche effectivement pour l'âge. Le \cref{tab:20:cout} rassemble ces composantes et la sensibilité de l'indication aux paramètres que le \cref{ch:24} a fait varier : la valeur du terrain, à $\pm 15$ \%, déplace l'indication de \dollars{537951} à \dollars{621051} ; le choix de la fenêtre et des paramètres d'extraction, de \dollars{558807} à \dollars{588716} ; la date des prix du coût neuf, de \dollars{554944} à \dollars{606170}. Le terrain est, de loin, la composante la plus incertaine, et c'est au \cref{ch:25} qu'il revient de la confirmer par les méthodes propres au terrain. | ||
| 175 | 168 | ||||
| 176 | \begin{table}[htbp] | 169 | \begin{table}[htbp] | ||
| 177 | −\caption{Indication par le coût du sujet du cas 1 selon la part du terrain (allocation) et la vie économique (âge-vie, âge effectif 28 ans) ; coût neuf \dollars{397567}}\label{tab:20:cout} | 170 | +\caption{Indication par le coût du sujet du cas 1 reprise du chapitre 24 : composantes, lecture écartée, contre-exemple et sensibilité}\label{tab:20:cout} | ||
| 178 | \centering\small | 171 | \centering\small | ||
| 179 | −\begin{tabular}{@{}S[table-format=1.2]S[table-format=6.0]S[table-format=6.0]S[table-format=6.0]S[table-format=6.0]@{}} | 172 | +\begin{tabularx}{\textwidth}{@{}YS[table-format=6.0]S[table-format=6.0]@{}} | ||
| 180 | \toprule | 173 | \toprule | ||
| 181 | −{Part du terrain $\alpha$} & {Terrain $V_L$ (\$)} & {Vie 50 ans (\$)} & {Vie 60 ans (\$)} & {Vie 75 ans (\$)} \\ | 174 | +Composante ou variante & {Montant (\$)} & {Indication (\$)} \\ | ||
| 182 | \midrule | 175 | \midrule | ||
| 183 | −0.20 & 115113 & 290043 & 327149 & 364255 \\ | 176 | +Valeur du terrain $V_L$ (médiane extraite de 13 ventes récentes de Hull, arrondie) & 277000 & \\ | ||
| 184 | −0.25 & 143891 & 318821 & 355927 & 393033 \\ | 177 | +Coût neuf $C_N$ (\cref{ch:21}) & 397567 & \\ | ||
| 185 | −0.30 & 172669 & 347599 & 384705 & 421812 \\ | 178 | +Dépréciation extraite du marché à 28 ans (22,00 \% de $C_N$) & -87461 & \\ | ||
| 186 | −0.35 & 201448 & 376377 & 413484 & 450590 \\ | 179 | +Désuétude fonctionnelle curable (carence, \cref{ch:24}) & -7605 & \\ | ||
| 187 | −0.40 & 230226 & 405156 & 442262 & 479368 \\ | 180 | +Indication retenue (dépréciation totale 23,91 \%) & & 579501 \\ | ||
| 181 | +\addlinespace | ||||
| 182 | +Lecture ventilée de la dépréciation physique (57,5 \%), écartée & -221090 & 445872 \\ | ||||
| 183 | +Contre-exemple : allocation du terrain à 30 \% de la comparaison et âge-vie 28/60 & & 384705 \\ | ||||
| 184 | +\addlinespace | ||||
| 185 | +\multicolumn{3}{@{}l}{\textit{Sensibilité (tornade du chapitre 24, borne basse -- borne haute de l'indication)}} \\ | ||||
| 186 | +Valeur du terrain $\pm 15$ \% & & {537951 -- 621051} \\ | ||||
| 187 | +Coût neuf $\pm 8{,}6$ \% (une année d'IPCB) & & {554944 -- 606170} \\ | ||||
| 188 | +Paramètres d'extraction (fenêtre, élasticité, qualité) & & {558807 -- 588716} \\ | ||||
| 189 | +Désuétude fonctionnelle de 0 à 2 fois & & {571896 -- 587106} \\ | ||||
| 188 | \bottomrule | 190 | \bottomrule | ||
| 189 | −\end{tabular} | 191 | +\end{tabularx} | ||
| 190 | −\tabsource{\synth{analysis/python/cases/ch20\_reconciliation.py, fonction \texttt{cout} ; \texttt{traite.cout.depreciation\_age\_vie} et \texttt{valeur\_par\_cout}} ; dépréciation : \dollars{222638} (50 ans), \dollars{185531} (60 ans), \dollars{148425} (75 ans).} | 192 | +\tabsource{\synth{analysis/python/cases/ch24\_depreciation.py, repris par ch20\_reconciliation.py (fonction \texttt{cout})} ; valeur par le coût : \texttt{traite.cout.valeur\_par\_cout}.} | ||
| 191 | \end{table} | 193 | \end{table} | ||
| 192 | 194 | ||||
| 193 | −L'indication par le coût est très inférieure aux deux autres, et il faut comprendre pourquoi avant de la pondérer. La somme du coût neuf et du terrain, $C_N + V_L = \dollars{570237}$, est déjà inférieure à l'indication par comparaison d'une maison de 28 ans ; autrement dit, le marché synthétique paie, pour la maison existante, davantage que ce qu'il en coûterait, sous ces hypothèses, de la construire neuve sur un terrain équivalent. La méthode d'extraction de la dépréciation à partir du marché, $D_{\text{marché}} = C_N - (\hat V - V_L)$, le dit crûment : | 195 | +Le \cref{ch:24} a choisi l'extraction de marché plutôt que les hypothèses d'usage, et le contre-exemple du \cref{tab:20:cout} montre ce qui était en jeu. Si l'on avait attribué au terrain une part conventionnelle de 30 \% de l'indication par comparaison et appliqué une dépréciation âge-vie de 28 ans sur 60, l'indication aurait été de \dollars{384705}, inférieure d'un tiers aux deux autres ; la dépréciation extraite du marché avec ce terrain aurait été \emph{négative}, $-\dollars{67716}$ à la prédiction hédonique, ce qui aurait signalé non pas que le bâtiment s'apprécie mais que l'une des hypothèses était fausse, en l'occurrence celle du terrain. Avec le terrain extrait de \dollars{277000}, la méthode d'extraction appliquée aux deux autres indications devient un instrument de cohérence : | ||
| 194 | \begin{equation}\label{eq:20:extraction} | 196 | \begin{equation}\label{eq:20:extraction} | ||
| 195 | −D_{\text{marché}} = 397\,567 - (637\,953 - 172\,669) = -\dollars{67716} \quad\text{à la prédiction hédonique,} | 197 | +D_{\text{marché}} = C_N - (\hat V - V_L) = 397\,567 - (575\,565 - 277\,000) = \dollars{99002} \quad\text{(24,9 \% de } C_N\text{) à l'indication par comparaison,} | ||
| 196 | \end{equation} | 198 | \end{equation} | ||
| 197 | −et $-\dollars{5328}$ à l'indication par comparaison : une dépréciation négative, c'est-à-dire une prime du marché sur le coût. Deux explications sont possibles et toutes deux relèvent du jugement, non du calcul. Ou bien le terrain vaut beaucoup plus que 30 \% : pour que l'indication par le coût rejoigne la comparaison avec la dépréciation âge-vie inchangée, il faudrait un terrain de \dollars{363529}, soit 63 \% de la valeur, et \dollars{425917} pour rejoindre le modèle, ce qui est hors des ordres de grandeur d'un lot de \msq{620} en secteur bâti. Ou bien, et c'est l'explication la plus probable, le coût neuf du devis synthétique, calibré sur le milieu d'une fourchette de coûts montréalais hors terrain (\cref{ch:21}), ne mesure pas le coût complet qu'un acheteur de Gatineau comparerait au prix d'une maison existante, et le jeu de ventes, calibré sur des médianes de prix, se situe structurellement au-dessus de ce coût. Dans un dossier réel, ce diagnostic appellerait une vérification du coût (soumissions locales, prix de maisons neuves décomposés) et une estimation du terrain par comparaison avec des lots vacants ; ici, il conduit à une conclusion méthodologique nette, celle que le \cref{ch:21} annonçait : pour un bâtiment de 28 ans dans un marché où les prix excèdent le coût, la méthode du coût ne fournit pas une indication de valeur fiable, mais un plancher et un signal. Elle recevra en conséquence un poids faible, et le \cref{ch:24} comme le \cref{ch:25} devront examiner si la dépréciation extraite du marché et la valeur du terrain réconcilient les trois méthodes mieux que les hypothèses d'usage. | 199 | +et \dollars{36614}, soit 9,2 \%, à la prédiction hédonique. La dépréciation que la comparaison implique, 24,9 \%, est presque celle que le \cref{ch:24} a extraite de l'ensemble du marché, 23,9 \% ; celle que le modèle implique, 9,2 \%, est beaucoup plus faible. Le coût et la comparaison sont donc cohérents entre eux, et tous deux s'écartent du modèle dans le même sens, ce qui n'est pas indépendant du fait que le terrain et la dépréciation ont été extraits de ventes ramenées à la date par la tendance du même modèle et que la méthode d'extraction, par construction, aligne le coût déprécié sur les prix observés. La \cref{sec:20:exemple} mesurera cette dépendance par le bootstrap plutôt que de la supposer. | ||
| 198 | 200 | ||||
| 199 | \section{Exemple intégral : la réconciliation du cas 1}\label{sec:20:exemple} | 201 | \section{Exemple intégral : la réconciliation du cas 1}\label{sec:20:exemple} | ||
| 200 | 202 | ||||
@@ -205,7 +207,7 @@ Le dossier du cas 1 est synthétique. Les 600 ventes de \texttt{data/synthetic/c | |||||
| 205 | \begin{exemple}{De trois indications à une conclusion pour le cottage de Hull}{reconciliation-cas1} | 207 | \begin{exemple}{De trois indications à une conclusion pour le cottage de Hull}{reconciliation-cas1} | ||
| 206 | Le sujet est le cottage à étages de \msq{165} sur \msq{620}, construit en 1998 dans le secteur de Hull, de qualité 3, avec garage simple et sous-sol fini, évalué au 1\ier{} septembre 2026. L'exemple procède en sept étapes : inventaire des indications, lecture des résidus des candidats, bootstrap et énumération, élargissement de l'échantillon, caractérisation des incertitudes et de la corrélation, pondération, puis conclusion et fourchette. | 208 | Le sujet est le cottage à étages de \msq{165} sur \msq{620}, construit en 1998 dans le secteur de Hull, de qualité 3, avec garage simple et sous-sol fini, évalué au 1\ier{} septembre 2026. L'exemple procède en sept étapes : inventaire des indications, lecture des résidus des candidats, bootstrap et énumération, élargissement de l'échantillon, caractérisation des incertitudes et de la corrélation, pondération, puis conclusion et fourchette. | ||
| 207 | 209 | ||||
| 208 | −\emph{Étape 1 : les indications.} L'indication par comparaison est la valeur pondérée du \cref{ch:17}, \dollars{575565}, obtenue des prix ajustés de \dollars{640247}, \dollars{541222}, \dollars{572793}, \dollars{568853} et \dollars{584862} avec les poids inverses du brut $0{,}179$, $0{,}327$, $0{,}202$, $0{,}159$ et $0{,}133$ (\cref{tab:17:grille}) ; son écart-type pondéré, \dollars{33997}, mesure la dispersion des cinq prix ajustés, non l'incertitude de leur moyenne. L'indication hédonique est la prédiction corrigée de Duan du \cref{ch:18}, \dollars{637953}, avec un intervalle de confiance à 95 \% de la valeur de \dollars{625586} à \dollars{650596} et un intervalle de prédiction du prix de \dollars{539682} à \dollars{749087}. L'indication par le coût est celle de la \cref{sec:20:cout}, \dollars{384705}, dans une grille d'hypothèses de \dollars{290043} à \dollars{479368}. Les deux premières s'écartent de \pct{9.8} ; la troisième s'écarte des deux autres de 33 à 40 \%. Avant toute pondération, ces écarts doivent être expliqués, et le \cref{ch:17} a expliqué le premier : la moyenne des prix ajustés est la prédiction ponctuelle du modèle multipliée par la moyenne des facteurs résiduels des cinq comparables, $\exp(\hat e_j)$, dont la moyenne vaut $1 - 0{,}0853$ (\cref{eq:17:residus}). La \cref{sec:20:cout} a expliqué le second. | 210 | +\emph{Étape 1 : les indications.} L'indication par comparaison est la valeur pondérée du \cref{ch:17}, \dollars{575565}, obtenue des prix ajustés de \dollars{640247}, \dollars{541222}, \dollars{572793}, \dollars{568853} et \dollars{584862} avec les poids inverses du brut $0{,}179$, $0{,}327$, $0{,}202$, $0{,}159$ et $0{,}133$ (\cref{tab:17:grille}) ; son écart-type pondéré, \dollars{33997}, mesure la dispersion des cinq prix ajustés, non l'incertitude de leur moyenne. L'indication hédonique est la prédiction corrigée de Duan du \cref{ch:18}, \dollars{637953}, avec un intervalle de confiance à 95 \% de la valeur de \dollars{625586} à \dollars{650596} et un intervalle de prédiction du prix de \dollars{539682} à \dollars{749087}. L'indication par le coût est celle du \cref{ch:24}, \dollars{579501}, reprise à la \cref{sec:20:cout}. La comparaison et le coût s'accordent à \pct{0.7} près ; tous deux s'écartent du modèle de 9 à 10 \%. Avant toute pondération, ces écarts doivent être expliqués, et le \cref{ch:17} a expliqué le premier : la moyenne des prix ajustés est la prédiction ponctuelle du modèle multipliée par la moyenne des facteurs résiduels des cinq comparables, $\exp(\hat e_j)$, dont la moyenne vaut $1 - 0{,}0853$ (\cref{eq:17:residus}). La \cref{sec:20:cout} a montré que l'accord entre le coût et la comparaison tient pour partie à la construction de l'extraction, qui aligne le coût déprécié sur les prix observés du marché. | ||
| 209 | 211 | ||||
| 210 | \emph{Étape 2 : les résidus des seize candidats.} Le \cref{ch:17} proposait, pour trancher entre la lecture « information locale » et la lecture « bruit », d'élargir l'examen aux candidats que la sélection n'a pas retenus. Le \cref{tab:20:candidats} et la \cref{fig:20:residus} donnent, pour les seize candidats laissés par les filtres du \cref{ch:16}, le prix ajusté par la cascade hédonique, l'ajustement brut et le résidu du modèle à la date de leur vente. Les cinq comparables retenus ont un résidu moyen de \pct{-8.5} ; les onze autres, un résidu moyen de \pct{-1.7}, avec six résidus positifs et cinq négatifs dont un seul, G0498, dépasse \pct{-5} ; l'ensemble des seize a un résidu moyen de \pct{-3.8}. Si le micro-marché des candidats était réellement moins cher que ce que le modèle prédit pour Hull, les onze autres candidats, qui sont du même secteur, à moins de trois kilomètres et de taille voisine, devraient partager l'écart ; ils ne le partagent que faiblement. La lecture « bruit » est donc la plus plausible : les cinq ventes les plus proches du sujet par leurs attributs se trouvent être des ventes conclues sous leur prix prédit, et rien dans leurs attributs ne l'annonçait. Dans un dossier réel, l'inspection extérieure de ces cinq propriétés et l'examen de leurs fiches de courtage compléteraient ce test statistique. | 212 | \emph{Étape 2 : les résidus des seize candidats.} Le \cref{ch:17} proposait, pour trancher entre la lecture « information locale » et la lecture « bruit », d'élargir l'examen aux candidats que la sélection n'a pas retenus. Le \cref{tab:20:candidats} et la \cref{fig:20:residus} donnent, pour les seize candidats laissés par les filtres du \cref{ch:16}, le prix ajusté par la cascade hédonique, l'ajustement brut et le résidu du modèle à la date de leur vente. Les cinq comparables retenus ont un résidu moyen de \pct{-8.5} ; les onze autres, un résidu moyen de \pct{-1.7}, avec six résidus positifs et cinq négatifs dont un seul, G0498, dépasse \pct{-5} ; l'ensemble des seize a un résidu moyen de \pct{-3.8}. Si le micro-marché des candidats était réellement moins cher que ce que le modèle prédit pour Hull, les onze autres candidats, qui sont du même secteur, à moins de trois kilomètres et de taille voisine, devraient partager l'écart ; ils ne le partagent que faiblement. La lecture « bruit » est donc la plus plausible : les cinq ventes les plus proches du sujet par leurs attributs se trouvent être des ventes conclues sous leur prix prédit, et rien dans leurs attributs ne l'annonçait. Dans un dossier réel, l'inspection extérieure de ces cinq propriétés et l'examen de leurs fiches de courtage compléteraient ce test statistique. | ||
| 211 | 213 | ||||
@@ -213,11 +215,11 @@ Le sujet est le cottage à étages de \msq{165} sur \msq{620}, construit en 1998 | |||||
| 213 | 215 | ||||
| 214 | \emph{Étape 4 : l'élargissement de l'échantillon.} La \cref{fig:20:residus}(b) suit l'indication par comparaison lorsque l'on retient les $k$ premiers candidats, $k$ allant de 5 à 16. La valeur pondérée passe de \dollars{575565} pour $k = 5$ à \dollars{592737} pour $k = 10$ et à \dollars{604689} pour $k = 16$, la moyenne simple de \dollars{581595} à \dollars{611401} ; l'ajustement brut moyen passe de \pct{19.5} à \pct{25.7} et le résidu moyen de \pct{-8.5} à \pct{-3.8}. C'est l'arbitrage biais--variance du \cref{ch:16} (\cref{eq:16:kopt}) en acte : avec des ajustements tirés d'un modèle estimé sur 600 ventes, l'erreur introduite par des comparables plus éloignés est faible, et l'on gagne davantage en variance qu'on ne perd en biais. L'indication à seize candidats, \dollars{604689}, n'est pas retenue comme indication principale, parce que la pratique et les prêteurs attendent une grille de comparables proches et vérifiés et parce que les onze candidats supplémentaires ne sont pas des comparables au sens de la \cref{def:comparable} ; mais elle est consignée comme recoupement, et elle dit la même chose que les résidus de l'étape 2. | 216 | \emph{Étape 4 : l'élargissement de l'échantillon.} La \cref{fig:20:residus}(b) suit l'indication par comparaison lorsque l'on retient les $k$ premiers candidats, $k$ allant de 5 à 16. La valeur pondérée passe de \dollars{575565} pour $k = 5$ à \dollars{592737} pour $k = 10$ et à \dollars{604689} pour $k = 16$, la moyenne simple de \dollars{581595} à \dollars{611401} ; l'ajustement brut moyen passe de \pct{19.5} à \pct{25.7} et le résidu moyen de \pct{-8.5} à \pct{-3.8}. C'est l'arbitrage biais--variance du \cref{ch:16} (\cref{eq:16:kopt}) en acte : avec des ajustements tirés d'un modèle estimé sur 600 ventes, l'erreur introduite par des comparables plus éloignés est faible, et l'on gagne davantage en variance qu'on ne perd en biais. L'indication à seize candidats, \dollars{604689}, n'est pas retenue comme indication principale, parce que la pratique et les prêteurs attendent une grille de comparables proches et vérifiés et parce que les onze candidats supplémentaires ne sont pas des comparables au sens de la \cref{def:comparable} ; mais elle est consignée comme recoupement, et elle dit la même chose que les résidus de l'étape 2. | ||
| 215 | 217 | ||||
| 216 | −\emph{Étape 5 : incertitudes et corrélation.} Le \cref{tab:20:indications} rassemble les trois indications avec l'écart-type qui leur est attribué et la source de cet écart-type. Pour la comparaison, l'écart-type bootstrap conjoint, \dollars{18385}. Pour le modèle hédonique, la composition de deux termes : l'écart-type bootstrap de la prédiction, \dollars{6531}, qui mesure l'incertitude d'estimation, et l'écart-type des prédictions obtenues sous les quatre spécifications en logarithme du \cref{tab:18:variantes}, \dollars{9420}, qui mesure l'incertitude de spécification ; leur combinaison en quadrature donne \dollars{11462}. Pour le coût, l'écart-type de la grille d'hypothèses, \dollars{50737}. La corrélation entre l'indication par comparaison et la prédiction hédonique, estimée sur les réplications conjointes, vaut $0{,}088$ : elle est faible parce que la variance de la comparaison est dominée par le tirage des candidats, qui n'affecte pas la prédiction ; mesurée sur le seul rééchantillonnage du marché, comparables fixes, elle vaut $0{,}425$, ce qui est la trace des coefficients partagés dont le \cref{ch:17} avertissait. C'est la première valeur qui compte pour la combinaison, puisque c'est la variance totale qui entre dans l'\cref{eq:20:variance} ; la seconde rappelle que, si les comparables étaient tenus pour certains et que seule l'incertitude des ajustements comptait, les deux indications seraient loin d'être indépendantes. | 218 | +\emph{Étape 5 : incertitudes et corrélations.} Le \cref{tab:20:indications} rassemble les trois indications avec l'écart-type qui leur est attribué et la source de cet écart-type. Pour la comparaison, l'écart-type bootstrap conjoint, \dollars{18385}. Pour le modèle hédonique, la composition de deux termes : l'écart-type bootstrap de la prédiction, \dollars{6531}, qui mesure l'incertitude d'estimation, et l'écart-type des prédictions obtenues sous les quatre spécifications en logarithme du \cref{tab:18:variantes}, \dollars{9420}, qui mesure l'incertitude de spécification ; leur combinaison en quadrature donne \dollars{11462}. Pour le coût, la même composition : l'indication du \cref{ch:24} a été recalculée sur chacun des 2\,000 rééchantillons des 600 ventes qui ont servi au modèle, en extrayant à chaque fois le terrain des ventes récentes de Hull et le profil de dépréciation de l'ensemble des ventes rééchantillonnées, ce qui donne un écart-type de \dollars{23575}, dominé par celui du terrain (\dollars{29803} sur la médiane de treize ventes) ; les sept variantes d'extraction du \cref{ch:24} n'ajoutent qu'un écart-type de spécification de \dollars{2377}, et le total en quadrature vaut \dollars{23695}. Les corrélations sont estimées sur les mêmes réplications. Entre la comparaison et la prédiction hédonique, elle vaut $0{,}088$ : faible, parce que la variance de la comparaison est dominée par le tirage des candidats, qui n'affecte pas la prédiction ; mesurée sur le seul rééchantillonnage du marché, comparables fixes, elle vaut $0{,}425$, trace des coefficients partagés dont le \cref{ch:17} avertissait. Entre le coût et la prédiction, elle vaut $0{,}225$, parce que le terrain et la dépréciation sont extraits de prix ramenés à la date par la tendance du modèle rééstimé ; entre le coût et la comparaison, $0{,}018$ seulement. C'est la matrice complète qui entre dans l'\cref{eq:20:variance}. | ||
| 217 | 219 | ||||
| 218 | −\emph{Étape 6 : la pondération.} Le \cref{tab:20:ponderation} compare six schémas. La moyenne simple des trois indications donne \dollars{532741}, en deçà même de l'indication par comparaison, parce qu'elle accorde un tiers du poids à une indication dont l'incertitude est trois fois celle des autres et dont on a expliqué le biais : c'est la raison pour laquelle les Normes internationales proscrivent la moyenne. Les poids inverses de la variance, sous indépendance, valent $0{,}270$, $0{,}695$ et $0{,}035$ et donnent \dollars{612132} avec un écart-type de \dollars{9909} ; les poids de variance minimale avec corrélation (\cref{eq:20:poids-mcg}) sont presque identiques, $0{,}251$, $0{,}711$ et $0{,}038$, pour \dollars{612640}, parce que la corrélation de $0{,}088$ est faible. Ces poids sont ceux qu'un calcul purement statistique recommande ; ils supposent que les trois indications sont sans biais et que leurs écarts-types sont connus, et aucune de ces deux conditions n'est pleinement remplie. La pondération raisonnée retenue part de ces poids et les corrige selon les critères du \cref{tab:20:criteres}. L'indication par le coût reçoit $0{,}05$ : son incertitude est la plus grande, ses deux hypothèses principales ne sont pas vérifiées sur le marché, la méthode n'est pas pertinente pour un bâtiment de 28 ans dans un marché qui excède le coût, et l'écart avec les deux autres est expliqué par un biais présumé plutôt que par une information ; un poids nul serait défendable, et un poids de 5 \% est retenu pour conserver, dans la conclusion, la trace du plancher qu'elle indique. L'indication hédonique reçoit $0{,}55$ plutôt que $0{,}70$ : la quantité d'information et la cohérence des résidus des candidats plaident pour elle, mais sa variance de spécification est mesurée sur quatre formes seulement, elle ne contient aucune incertitude de pertinence (le modèle ne distingue pas les emplacements à l'intérieur d'un secteur), et la prudence professionnelle commande de ne pas fonder plus de la moitié d'une conclusion sur un estimateur statistique dont les ventes n'ont pas été vérifiées une à une. L'indication par comparaison reçoit le complément, $0{,}40$ : elle repose sur cinq ventes vérifiables, elle est la méthode que les acheteurs appliquent et que les tribunaux et les prêteurs attendent, et les résidus négatifs de ses comparables, s'ils sont probablement du bruit, pourraient aussi contenir une part d'information locale que le test de l'étape 2 ne peut exclure. Ces poids ont été écrits avant le calcul de la combinaison, et la \cref{fig:20:poids} montre ce que la conclusion serait devenue sous d'autres choix. | 220 | +\emph{Étape 6 : la pondération.} Le \cref{tab:20:ponderation} compare six schémas. La moyenne simple des trois indications donne \dollars{597673} ; elle paraît raisonnable, mais ce n'est qu'un accident de l'alignement du coût sur la comparaison : avec l'indication par le coût du contre-exemple de la \cref{sec:20:cout}, la même moyenne aurait donné \dollars{532741}, en deçà de toute indication crédible, parce qu'elle aurait accordé un tiers du poids à une indication dont l'incertitude était trois fois celle des autres. C'est la raison pour laquelle les Normes internationales proscrivent la moyenne : elle n'est défendable que lorsque les indications se valent, et l'on ne le sait qu'après avoir mesuré leurs incertitudes, c'est-à-dire après avoir fait le travail qu'elle prétend éviter. Les poids inverses de la variance, sous indépendance, valent $0{,}240$, $0{,}616$ et $0{,}144$ et donnent \dollars{614579} avec un écart-type de \dollars{9892} ; les poids de variance minimale avec la matrice de corrélation complète (\cref{eq:20:poids-mcg}) valent $0{,}248$, $0{,}655$ et $0{,}097$, pour \dollars{616823} : la corrélation entre le coût et le modèle retire au premier le tiers de son poids, et le modèle le reçoit. Ces poids sont ceux qu'un calcul purement statistique recommande ; ils supposent que les trois indications sont sans biais et que leurs écarts-types sont connus, et aucune de ces deux conditions n'est pleinement remplie. La pondération raisonnée retenue part de ces poids et les corrige selon les critères du \cref{tab:20:criteres}. L'indication par le coût reçoit $0{,}15$ : sa dépréciation est extraite du marché plutôt que posée par hypothèse, ce qui la rend crédible, mais sa composante la plus lourde, le terrain, repose sur treize ventes et attend la confirmation du \cref{ch:25}, son coût neuf est calibré sur une fourchette montréalaise, et la méthode, pour un bâtiment de 28 ans, mesure moins la valeur qu'elle ne la retrouve à travers les prix dont elle a extrait sa dépréciation ; un poids de 10 à 15 \% est l'usage pour une indication de contrôle, et la borne haute est retenue parce que l'indication est, ici, documentée. L'indication hédonique reçoit $0{,}45$ plutôt que $0{,}65$ : la quantité d'information, la cohérence des résidus des candidats et la convergence de l'échantillon élargi plaident pour elle, mais sa variance de spécification est mesurée sur quatre formes seulement, elle ne contient aucune incertitude de pertinence (le modèle ne distingue pas les emplacements à l'intérieur d'un secteur), et la prudence professionnelle commande de ne pas fonder plus de la moitié d'une conclusion sur un estimateur statistique dont les ventes n'ont pas été vérifiées une à une. L'indication par comparaison reçoit $0{,}40$ : elle repose sur cinq ventes vérifiables, elle est la méthode que les acheteurs appliquent et que les tribunaux et les prêteurs attendent, elle est confirmée à \pct{0.7} près par le coût, et les résidus négatifs de ses comparables, s'ils sont probablement du bruit, pourraient aussi contenir une part d'information locale que le test de l'étape 2 ne peut exclure. Ces poids ont été écrits avant le calcul de la combinaison, et la \cref{fig:20:poids} montre ce que la conclusion serait devenue sous d'autres choix. | ||
| 219 | 221 | ||||
| 220 | −\emph{Étape 7 : conclusion et fourchette.} La combinaison raisonnée vaut $0{,}40 \times 575\,565 + 0{,}55 \times 637\,953 + 0{,}05 \times 384\,705 = \dollars{600335}$, avec un écart-type de \dollars{10411} par l'\cref{eq:20:variance}. Arrondie au \dollars{5000} le plus proche, selon la convention de l'ouvrage pour les conclusions de valeur, la \textbf{valeur la plus probable est de \dollars{600000}}. Elle se situe \pct{4.3} au-dessus de l'indication par comparaison et \pct{6.0} en deçà de l'indication hédonique. La distribution bootstrap de la combinaison, obtenue en appliquant les poids retenus à chaque réplication conjointe (comparaison et prédiction issues du même tirage, coût tiré uniformément dans la grille d'hypothèses), a pour quantiles à 5 et 95 \% \dollars{587949} et \dollars{616418}, soit, arrondis vers l'extérieur, de \dollars{585000} à \dollars{620000} ; c'est la précision de l'estimateur \emph{sous les poids retenus}, et elle est trop étroite pour servir de fourchette de valeur, parce qu'elle ignore l'incertitude des poids eux-mêmes et les biais communs que le bootstrap ne voit pas. La \textbf{fourchette de valeur conclue} est encadrée par les deux indications crédibles, arrondies vers l'extérieur : \textbf{de \dollars{575000} à \dollars{640000}}, soit une largeur de \pct{10.8} de la valeur la plus probable. Cette fourchette dit au lecteur ce que l'évaluateur sait réellement : que la valeur se situe entre ce qu'indiquent cinq ventes proches et vérifiées et ce qu'indique un modèle estimé sur l'ensemble du marché, et que l'écart entre ces deux indications, expliqué mais non résorbé, est l'incertitude du dossier. Le prix auquel le sujet se vendrait effectivement reste, lui, décrit par l'intervalle de prédiction de \dollars{539682} à \dollars{749087}, que le rapport communique séparément et sous son nom. La \cref{fig:20:fourchettes} rassemble ces intervalles. | 222 | +\emph{Étape 7 : conclusion et fourchette.} La combinaison raisonnée vaut $0{,}40 \times 575\,565 + 0{,}45 \times 637\,953 + 0{,}15 \times 579\,501 = \dollars{604230}$, avec un écart-type de \dollars{10450} par l'\cref{eq:20:variance}. Arrondie au \dollars{5000} le plus proche, selon la convention de l'ouvrage pour les conclusions de valeur, la \textbf{valeur la plus probable est de \dollars{605000}}. Elle se situe \pct{5.1} au-dessus de l'indication par comparaison et \pct{5.2} en deçà de l'indication hédonique. La distribution bootstrap de la combinaison, obtenue en appliquant les poids retenus à chaque réplication conjointe (comparaison, prédiction et coût issus du même tirage des 600 ventes), a pour quantiles à 5 et 95 \% \dollars{592310} et \dollars{622009}, soit, arrondis vers l'extérieur, de \dollars{590000} à \dollars{625000} ; c'est la précision de l'estimateur \emph{sous les poids retenus}, et elle est trop étroite pour servir de fourchette de valeur, parce qu'elle ignore l'incertitude des poids eux-mêmes et les biais communs que le bootstrap ne voit pas. La \textbf{fourchette de valeur conclue} est encadrée par les indications crédibles, arrondies vers l'extérieur : \textbf{de \dollars{575000} à \dollars{640000}}, soit une largeur de \pct{10.7} de la valeur la plus probable. Cette fourchette dit au lecteur ce que l'évaluateur sait réellement : que la valeur se situe entre ce qu'indiquent cinq ventes proches et vérifiées, confirmées par le coût déprécié, et ce qu'indique un modèle estimé sur l'ensemble du marché, et que l'écart entre ces indications, expliqué mais non résorbé, est l'incertitude du dossier. Le prix auquel le sujet se vendrait effectivement reste, lui, décrit par l'intervalle de prédiction de \dollars{539682} à \dollars{749087}, que le rapport communique séparément et sous son nom. La \cref{fig:20:fourchettes} rassemble ces intervalles. | ||
| 221 | \end{exemple} | 223 | \end{exemple} | ||
| 222 | 224 | ||||
| 223 | \begin{table}[htbp] | 225 | \begin{table}[htbp] | ||
@@ -290,10 +292,10 @@ Indication & {Valeur (\$)} & {Écart-type (\$)} & Source de l'écart-type & {Bor | |||||
| 290 | \midrule | 292 | \midrule | ||
| 291 | Comparaison, 5 comparables (\cref{ch:17}) & 575565 & 18385 & bootstrap conjoint (C) & 552095 & 611779 \\ | 293 | Comparaison, 5 comparables (\cref{ch:17}) & 575565 & 18385 & bootstrap conjoint (C) & 552095 & 611779 \\ | ||
| 292 | Hédonique (\cref{ch:18}) & 637953 & 11462 & estimation (bootstrap, \dollars{6531}) et spécification (quatre formes, \dollars{9420}) en quadrature & 619097 & 656809 \\ | 294 | Hédonique (\cref{ch:18}) & 637953 & 11462 & estimation (bootstrap, \dollars{6531}) et spécification (quatre formes, \dollars{9420}) en quadrature & 619097 & 656809 \\ | ||
| 293 | −Coût (\cref{sec:20:cout}) & 384705 & 50737 & grille d'hypothèses (terrain 20--40 \%, vie 50--75 ans) & 290043 & 479368 \\ | 295 | +Coût (\cref{ch:24}, \cref{sec:20:cout}) & 579501 & 23695 & bootstrap sur les mêmes 600 ventes rééchantillonnées (\dollars{23575}) et variantes d'extraction (\dollars{2377}) en quadrature & 552142 & 628078 \\ | ||
| 294 | \bottomrule | 296 | \bottomrule | ||
| 295 | \end{tabularx} | 297 | \end{tabularx} | ||
| 296 | −\tabsource{\synth{analysis/python/cases/ch20\_reconciliation.py} ; bornes : quantiles bootstrap pour la comparaison, $\pm 1{,}645$ écart-type pour l'hédonique, étendue de la grille pour le coût ; corrélation comparaison--hédonique : $0{,}088$.} | 298 | +\tabsource{\synth{analysis/python/cases/ch20\_reconciliation.py} ; bornes : quantiles bootstrap à 5 et 95 \% pour la comparaison et le coût, $\pm 1{,}645$ écart-type pour l'hédonique ; corrélations : comparaison--hédonique $0{,}088$, coût--hédonique $0{,}225$, coût--comparaison $0{,}018$.} | ||
| 297 | \end{table} | 299 | \end{table} | ||
| 298 | 300 | ||||
| 299 | \begin{table}[htbp] | 301 | \begin{table}[htbp] | ||
@@ -305,30 +307,30 @@ Schéma & {$w_{\text{comp}}$} & {$w_{\text{héd}}$} & {$w_{\text{coût}}$} & {Va | |||||
| 305 | \midrule | 307 | \midrule | ||
| 306 | Comparaison seule & 1 & 0 & 0 & 575565 & 18385 \\ | 308 | Comparaison seule & 1 & 0 & 0 & 575565 & 18385 \\ | ||
| 307 | Hédonique seule & 0 & 1 & 0 & 637953 & 11462 \\ | 309 | Hédonique seule & 0 & 1 & 0 & 637953 & 11462 \\ | ||
| 308 | −Moyenne simple (un tiers chacune) & 0.333 & 0.333 & 0.333 & 532741 & 18501 \\ | 310 | +Moyenne simple (un tiers chacune) & 0.333 & 0.333 & 0.333 & 597673 & 11577 \\ | ||
| 309 | −Inverse de la variance, indépendance & 0.270 & 0.695 & 0.035 & 612132 & 9909 \\ | 311 | +Inverse de la variance, indépendance & 0.240 & 0.616 & 0.144 & 614579 & 9892 \\ | ||
| 310 | −Variance minimale avec corrélation, \cref{eq:20:poids-mcg} & 0.251 & 0.711 & 0.038 & 612640 & 9901 \\ | 312 | +Variance minimale avec corrélations, \cref{eq:20:poids-mcg} & 0.248 & 0.655 & 0.097 & 616823 & 9829 \\ | ||
| 311 | −Raisonnée (retenue) & 0.400 & 0.550 & 0.050 & 600335 & 10411 \\ | 313 | +Raisonnée (retenue) & 0.400 & 0.450 & 0.150 & 604230 & 10450 \\ | ||
| 312 | \bottomrule | 314 | \bottomrule | ||
| 313 | \end{tabular} | 315 | \end{tabular} | ||
| 314 | −\tabsource{\synth{analysis/python/cases/ch20\_reconciliation.py, fonction \texttt{combinaison}}.} | 316 | +\tabsource{\synth{analysis/python/cases/ch20\_reconciliation.py, fonction \texttt{combinaison}} ; avec l'indication par le coût du contre-exemple (\dollars{384705}), la moyenne simple donnerait \dollars{532741}.} | ||
| 315 | \end{table} | 317 | \end{table} | ||
| 316 | 318 | ||||
| 317 | \begin{figure}[htbp] | 319 | \begin{figure}[htbp] | ||
| 318 | \centering | 320 | \centering | ||
| 319 | \includegraphics[width=\textwidth]{ch20/ch20-fig-fourchettes-methodes.pdf} | 321 | \includegraphics[width=\textwidth]{ch20/ch20-fig-fourchettes-methodes.pdf} | ||
| 320 | −\caption{Les indications du cas 1 et leurs intervalles : prix de vente probable (intervalle de prédiction à 95 \%), coût (étendue des hypothèses), comparaison à cinq comparables (bootstrap conjoint à 90 \%), comparaison élargie à seize candidats, hédonique ($\pm 1{,}645$ écart-type) et conclusion (fourchette conclue de \dollars{575000} à \dollars{640000}, bande bootstrap à 90 \% de la combinaison en fond, valeur la plus probable \dollars{600000}). La ligne pointillée marque l'espérance assignée au sujet par la loi de génération des données.}\label{fig:20:fourchettes} | 322 | +\caption{Les indications du cas 1 et leurs intervalles : prix de vente probable (intervalle de prédiction à 95 \%), coût selon la lecture ventilée écartée (point) et selon la dépréciation extraite (bootstrap à 90 \%), comparaison à cinq comparables (bootstrap conjoint à 90 \%), comparaison élargie à seize candidats, hédonique ($\pm 1{,}645$ écart-type) et conclusion (fourchette conclue de \dollars{575000} à \dollars{640000}, bande bootstrap à 90 \% de la combinaison en fond, valeur la plus probable \dollars{605000}). La ligne pointillée marque l'espérance assignée au sujet par la loi de génération des données.}\label{fig:20:fourchettes} | ||
| 321 | \figsource{\synth{script analysis/python/figures/ch20\_figures.py, graine 20261031}.} | 323 | \figsource{\synth{script analysis/python/figures/ch20\_figures.py, graine 20261031}.} | ||
| 322 | \end{figure} | 324 | \end{figure} | ||
| 323 | 325 | ||||
| 324 | \section{Analyse de sensibilité : les poids et la corrélation}\label{sec:20:sensibilite} | 326 | \section{Analyse de sensibilité : les poids et la corrélation}\label{sec:20:sensibilite} | ||
| 325 | 327 | ||||
| 326 | −La conclusion dépend des poids, et la \cref{fig:20:poids}(a) montre comment. Lorsque le poids de l'indication hédonique passe de 0 à 1, le reste allant à la comparaison, la valeur combinée parcourt linéairement l'intervalle des deux indications, de \dollars{575565} à \dollars{637953} ; chaque dixième de poids déplacé vaut environ \dollars{6200}. Un poids de 5 \% au coût abaisse toute la droite de \dollars{10500} environ, un poids de 10 \% de \dollars{21000} : c'est le prix, en dollars de conclusion, d'une indication que l'on sait basse mais que l'on refuse d'écarter tout à fait, et il mesure l'enjeu de la décision prise à l'étape 6. Les trois schémas défendables, la pondération raisonnée ($0{,}40$ ; $0{,}55$ ; $0{,}05$), l'inverse de la variance et la variance minimale avec corrélation, se situent entre \dollars{600335} et \dollars{612640} ; une pondération plus favorable au modèle, $0{,}30$, $0{,}65$ et $0{,}05$, donnerait \dollars{606574}, une pondération plus favorable aux comparables, $0{,}60$, $0{,}35$ et $0{,}05$, donnerait \dollars{587858}. La plage des conclusions que des évaluateurs raisonnables pourraient tirer des mêmes indications est donc d'environ \dollars{25000}, soit 4 \% ; elle est contenue dans la fourchette conclue, et c'est l'une des raisons pour lesquelles celle-ci a été préférée à la bande bootstrap. | 328 | +La conclusion dépend des poids, et la \cref{fig:20:poids}(a) montre comment. Lorsque le poids de l'indication hédonique passe de 0 à 1, le reste allant à la comparaison, la valeur combinée parcourt linéairement l'intervalle des deux indications, de \dollars{575565} à \dollars{637953} ; chaque dixième de poids déplacé vaut environ \dollars{6200}. Parce que l'indication par le coût est presque égale à celle de la comparaison, un poids de 15 \% ou de 30 \% au coût ne déplace la droite que de quelques centaines de dollars : sur ce dossier, le poids du coût n'est pas la décision qui compte, et il n'en irait pas de même avec le contre-exemple de la \cref{sec:20:cout}, où chaque dixième de poids au coût aurait abaissé la conclusion de près de \dollars{20000}. La décision qui compte est le partage entre la comparaison et le modèle. Les trois schémas défendables, la pondération raisonnée ($0{,}40$ ; $0{,}45$ ; $0{,}15$), l'inverse de la variance et la variance minimale avec corrélations, se situent entre \dollars{604230} et \dollars{616823} ; une pondération plus favorable au modèle, $0{,}30$, $0{,}55$ et $0{,}15$, donnerait \dollars{610469}, une pondération plus favorable aux comparables, $0{,}55$, $0{,}30$ et $0{,}15$, donnerait \dollars{594872}. La plage des conclusions que des évaluateurs raisonnables pourraient tirer des mêmes indications est donc d'environ \dollars{22000}, soit 3,6 \% ; elle est contenue dans la fourchette conclue, et c'est l'une des raisons pour lesquelles celle-ci a été préférée à la bande bootstrap. | ||
| 327 | 329 | ||||
| 328 | \begin{figure}[htbp] | 330 | \begin{figure}[htbp] | ||
| 329 | \centering | 331 | \centering | ||
| 330 | \includegraphics[width=\textwidth]{ch20/ch20-fig-sensibilite-poids.pdf} | 332 | \includegraphics[width=\textwidth]{ch20/ch20-fig-sensibilite-poids.pdf} | ||
| 331 | −\caption{(a) Valeur combinée selon le poids de l'indication hédonique, pour un poids du coût de 0, 5 et 10 \% ; les marqueurs situent la pondération raisonnée, les poids inverses de la variance et la moyenne simple (qui n'est sur aucune droite parce qu'elle donne un tiers au coût). (b) Écart-type de la combinaison de deux indications (comparaison, \dollars{18385} ; hédonique, \dollars{11462}) selon le poids de la seconde, pour quatre corrélations ; le point marque le poids optimal de l'\cref{eq:20:deux}, qui se déplace vers l'indication la plus précise à mesure que la corrélation croît et sort de l'intervalle $[0, 1]$ pour $\rho = 0{,}9$.}\label{fig:20:poids} | 333 | +\caption{(a) Valeur combinée selon le poids de l'indication hédonique, pour un poids du coût de 0, 15 et 30 \% ; les trois droites sont presque confondues parce que le coût et la comparaison indiquent des valeurs voisines ; les marqueurs situent la pondération raisonnée, les poids inverses de la variance, les poids de variance minimale et la moyenne simple. (b) Écart-type de la combinaison de deux indications (comparaison, \dollars{18385} ; hédonique, \dollars{11462}) selon le poids de la seconde, pour quatre corrélations ; le point marque le poids optimal de l'\cref{eq:20:deux}, qui se déplace vers l'indication la plus précise à mesure que la corrélation croît et sort de l'intervalle $[0, 1]$ pour $\rho = 0{,}9$.}\label{fig:20:poids} | ||
| 332 | \figsource{\synth{script analysis/python/figures/ch20\_figures.py}.} | 334 | \figsource{\synth{script analysis/python/figures/ch20\_figures.py}.} | ||
| 333 | \end{figure} | 335 | \end{figure} | ||
| 334 | 336 | ||||
@@ -342,14 +344,14 @@ L'arrondi d'une conclusion de valeur est une déclaration de précision, et il d | |||||
| 342 | \begin{equation}\label{eq:20:arrondi} | 344 | \begin{equation}\label{eq:20:arrondi} | ||
| 343 | a \leq \tfrac{1}{2}\,\sigma_{\hat V}, \qquad \hat V_{\text{arr}} = a \cdot \mathrm{arrondi}\!\left(\hat V / a\right), | 345 | a \leq \tfrac{1}{2}\,\sigma_{\hat V}, \qquad \hat V_{\text{arr}} = a \cdot \mathrm{arrondi}\!\left(\hat V / a\right), | ||
| 344 | \end{equation} | 346 | \end{equation} | ||
| 345 | −de sorte que l'arrondi déplace la conclusion d'au plus un quart d'écart-type et n'ajoute qu'une variance négligeable ($a^2/12$) à celle de l'estimateur. Pour le cas 1, $\sigma_{\hat V} = \dollars{10411}$ autorise un pas de \dollars{5000}, qui déplace la conclusion de \dollars{335} ; un pas de \dollars{25000} donnerait le même chiffre, \dollars{600000}, mais par un raisonnement qui ne tiendrait plus pour une valeur de \dollars{612000}. Les bornes de la fourchette s'arrondissent vers l'extérieur, jamais vers l'intérieur, parce qu'un arrondi qui resserre la fourchette surestime la précision. | 347 | +de sorte que l'arrondi déplace la conclusion d'au plus un quart d'écart-type et n'ajoute qu'une variance négligeable ($a^2/12$) à celle de l'estimateur. Pour le cas 1, $\sigma_{\hat V} = \dollars{10450}$ autorise un pas de \dollars{5000}, qui déplace la conclusion de \dollars{770} ; un pas de \dollars{25000} aurait donné \dollars{600000} et effacé une information que la combinaison contenait. Les bornes de la fourchette s'arrondissent vers l'extérieur, jamais vers l'intérieur, parce qu'un arrondi qui resserre la fourchette surestime la précision. | ||
| 346 | 348 | ||||
| 347 | \subsection{Le langage de la conclusion} | 349 | \subsection{Le langage de la conclusion} | ||
| 348 | 350 | ||||
| 349 | Le \cref{ch:10} a fixé les registres : les faits à l'indicatif, les estimations comme des opinions, les hypothèses comme des hypothèses. La conclusion d'un rapport qui applique le présent chapitre comporte, dans l'ordre, les indications de chaque méthode avec la mention de ce qui les rend plus ou moins fiables ; l'explication de leurs écarts ; les poids et les raisons de ces poids ; la valeur la plus probable, arrondie ; la fourchette de valeur, avec ce qu'elle représente ; et, séparément et sous son nom, l'intervalle de prédiction du prix lorsque le modèle en fournit un, afin que le lecteur ne le confonde pas avec la fourchette. Les hypothèses extraordinaires y sont rappelées avec leur incidence (\cref{eq:10:incidence}), ce qui permet au lecteur de former l'espérance de l'\cref{eq:10:esperance} s'il attribue une probabilité à l'hypothèse. Le mot « valeur » y est réservé à l'estimation, les prix des comparables restant des prix. | 351 | Le \cref{ch:10} a fixé les registres : les faits à l'indicatif, les estimations comme des opinions, les hypothèses comme des hypothèses. La conclusion d'un rapport qui applique le présent chapitre comporte, dans l'ordre, les indications de chaque méthode avec la mention de ce qui les rend plus ou moins fiables ; l'explication de leurs écarts ; les poids et les raisons de ces poids ; la valeur la plus probable, arrondie ; la fourchette de valeur, avec ce qu'elle représente ; et, séparément et sous son nom, l'intervalle de prédiction du prix lorsque le modèle en fournit un, afin que le lecteur ne le confonde pas avec la fourchette. Les hypothèses extraordinaires y sont rappelées avec leur incidence (\cref{eq:10:incidence}), ce qui permet au lecteur de former l'espérance de l'\cref{eq:10:esperance} s'il attribue une probabilité à l'hypothèse. Le mot « valeur » y est réservé à l'estimation, les prix des comparables restant des prix. | ||
| 350 | 352 | ||||
| 351 | \begin{pratique}[Un paragraphe de conclusion pour le cas 1] | 353 | \begin{pratique}[Un paragraphe de conclusion pour le cas 1] | ||
| 352 | −« La méthode de comparaison, appliquée à cinq ventes vérifiées du secteur de Hull ajustées par les prix implicites d'un modèle estimé sur 600 ventes, indique \dollars{575565} ; le modèle hédonique indique \dollars{637953} ; la méthode du coût, sous des hypothèses de terrain et de dépréciation non vérifiées sur le marché, indique \dollars{384705} et n'est pas jugée fiable pour un bâtiment de 28 ans dans un marché dont les prix excèdent le coût de remplacement. L'écart de 10 \% entre les deux premières indications s'explique par le fait que les cinq comparables se sont vendus, en moyenne, 8,5 \% sous le prix que leurs caractéristiques laissaient attendre, écart que les onze autres ventes semblables du secteur ne partagent que faiblement (1,7 \%). Pondérant la comparaison à 40 \%, le modèle à 55 \% et le coût à 5 % pour les raisons exposées à la section précédente, nous estimons la valeur marchande du sujet au 1\ier{} septembre 2026 à \dollars{600000} (valeur la plus probable), dans une fourchette de \dollars{575000} à \dollars{640000}. Le prix auquel le sujet pourrait effectivement se vendre, qui dépend de la négociation, est estimé par le modèle entre \dollars{540000} et \dollars{749000} dix-neuf fois sur vingt ; cet intervalle décrit le prix, non la valeur. » Chaque chiffre de ce paragraphe renvoie à un tableau du rapport, et les poids y ont été fixés avant le calcul. | 354 | +« La méthode de comparaison, appliquée à cinq ventes vérifiées du secteur de Hull ajustées par les prix implicites d'un modèle estimé sur 600 ventes, indique \dollars{575565} ; le modèle hédonique indique \dollars{637953} ; la méthode du coût, avec une valeur de terrain extraite de treize ventes récentes du secteur et une dépréciation extraite du marché, indique \dollars{579501}. L'écart de 10 \% entre la comparaison et le modèle s'explique par le fait que les cinq comparables se sont vendus, en moyenne, 8,5 \% sous le prix que leurs caractéristiques laissaient attendre, écart que les onze autres ventes semblables du secteur ne partagent que faiblement (1,7 \%) ; l'accord entre la comparaison et le coût tient pour partie à ce que la dépréciation est extraite des mêmes prix. Pondérant la comparaison à 40 \%, le modèle à 45 \% et le coût à 15 \% pour les raisons exposées à la section précédente, nous estimons la valeur marchande du sujet au 1\ier{} septembre 2026 à \dollars{605000} (valeur la plus probable), dans une fourchette de \dollars{575000} à \dollars{640000}. Le prix auquel le sujet pourrait effectivement se vendre, qui dépend de la négociation, est estimé par le modèle entre \dollars{540000} et \dollars{749000} dix-neuf fois sur vingt ; cet intervalle décrit le prix, non la valeur. » Chaque chiffre de ce paragraphe renvoie à un tableau du rapport, et les poids y ont été fixés avant le calcul. | ||
| 353 | \end{pratique} | 355 | \end{pratique} | ||
| 354 | 356 | ||||
| 355 | \begin{quebec}[Conclusion de valeur, fourchette et arrondi dans la pratique québécoise] | 357 | \begin{quebec}[Conclusion de valeur, fourchette et arrondi dans la pratique québécoise] | ||
@@ -358,19 +360,19 @@ Les Normes de pratique professionnelle de l'OEAQ définissent la valeur marchand | |||||
| 358 | 360 | ||||
| 359 | \section{Ce que révèle la loi de génération}\label{sec:20:verite} | 361 | \section{Ce que révèle la loi de génération}\label{sec:20:verite} | ||
| 360 | 362 | ||||
| 361 | −Un jeu synthétique permet une vérification qu'aucun dossier réel n'autorise : comparer la conclusion à la valeur que la loi de génération assigne au sujet. Cette loi, déclarée dans \texttt{data/synthetic/README.md}, donne le logarithme du prix comme une fonction connue des attributs plus une erreur normale d'écart-type 0,085, à une constante près fixée par la normalisation de la médiane ; cette constante s'estime sur les 600 ventes avec une erreur-type de $0{,}085/\sqrt{600} = 0{,}0035$, et l'espérance du prix du sujet, qui est par définition sa valeur marchande dans ce monde synthétique, vaut \dollars{641159}, connue à \pct{0.7} près ($\pm 1{,}96$ erreur-type : \dollars{636930} à \dollars{645415}). La prédiction hédonique, \dollars{637953}, s'en écarte de \pct{-0.5} ; l'indication par comparaison, \dollars{575565}, de \pct{-10.2} ; la conclusion raisonnée, \dollars{600000}, de \pct{-6.4} ; la combinaison par l'inverse de la variance, \dollars{612132}, de \pct{-4.5}. La fourchette conclue, \dollars{575000} à \dollars{640000}, s'arrête \dollars{1159} sous la valeur de génération ; la bande bootstrap de la combinaison, \dollars{585000} à \dollars{620000}, la manque de \dollars{21000}. | 363 | +Un jeu synthétique permet une vérification qu'aucun dossier réel n'autorise : comparer la conclusion à la valeur que la loi de génération assigne au sujet. Cette loi, déclarée dans \texttt{data/synthetic/README.md}, donne le logarithme du prix comme une fonction connue des attributs plus une erreur normale d'écart-type 0,085, à une constante près fixée par la normalisation de la médiane ; cette constante s'estime sur les 600 ventes avec une erreur-type de $0{,}085/\sqrt{600} = 0{,}0035$, et l'espérance du prix du sujet, qui est par définition sa valeur marchande dans ce monde synthétique, vaut \dollars{641159}, connue à \pct{0.7} près ($\pm 1{,}96$ erreur-type : \dollars{636930} à \dollars{645415}). La prédiction hédonique, \dollars{637953}, s'en écarte de \pct{-0.5} ; l'indication par comparaison, \dollars{575565}, de \pct{-10.2} ; l'indication par le coût, \dollars{579501}, de \pct{-9.6} ; la conclusion raisonnée, \dollars{605000}, de \pct{-5.6} ; la combinaison de variance minimale, \dollars{616823}, de \pct{-3.8}. La fourchette conclue, \dollars{575000} à \dollars{640000}, s'arrête \dollars{1159} sous la valeur de génération ; la bande bootstrap de la combinaison, \dollars{590000} à \dollars{625000}, la manque de \dollars{16000}. | ||
| 362 | 364 | ||||
| 363 | −Il faut lire ce résultat pour ce qu'il est et pour ce qu'il n'est pas. Il n'est pas la preuve que le modèle a toujours raison contre les comparables : dans ce jeu, la loi de génération est précisément de la forme du modèle, sans effet de voisinage ni variable omise, et les comparables n'avaient aucune information locale à apporter ; leurs résidus négatifs étaient du bruit, et toute pondération qui leur donnait du poids payait ce bruit. Sur un marché réel, le modèle est mal spécifié par construction et les comparables peuvent contenir une information que les 600 ventes diluent ; l'arbitrage de l'étape 6 n'a pas de solution générale, et c'est pourquoi il relève du jugement. Mais le résultat enseigne trois choses qui, elles, sont générales. La première est que la pondération par la précision, lorsque les indications sont sans biais, est la bonne, et que s'en écarter par prudence a un coût mesurable, ici 2 % de la valeur ; l'évaluateur qui s'en écarte doit pouvoir dire quel biais présumé justifie ce coût. La deuxième est que l'intervalle bootstrap d'une combinaison sous poids fixés n'est pas une fourchette de valeur : il manque la vérité ici parce qu'il ne contient ni l'incertitude des poids ni le biais du bassin de comparables, et la fourchette encadrée par les indications crédibles, moins élégante, est plus honnête. La troisième est que la méthode de comparaison à cinq ventes, même outillée des meilleurs ajustements, reste un estimateur bruité, dont l'erreur d'un dixième de la valeur n'est pas une anomalie mais une réalisation ordinaire d'une variance connue ; le recoupement par un modèle, ou par l'élargissement de l'échantillon, n'est pas un luxe statistique, c'est ce qui sépare une indication d'une conclusion. | 365 | +Il faut lire ce résultat pour ce qu'il est et pour ce qu'il n'est pas. Il n'est pas la preuve que le modèle a toujours raison contre les comparables : dans ce jeu, la loi de génération est précisément de la forme du modèle, sans effet de voisinage ni variable omise, et les comparables n'avaient aucune information locale à apporter ; leurs résidus négatifs étaient du bruit, et toute pondération qui leur donnait du poids payait ce bruit. L'accord du coût avec la comparaison n'était pas davantage une confirmation : la dépréciation extraite du marché est, par construction, celle qui ramène le coût déprécié aux prix observés, et le terrain extrait de treize ventes récentes hérite du bruit de ces treize ventes ; deux indications qui s'accordent ne sont indépendantes que si elles ne partagent ni données ni hypothèses, et la corrélation de $0{,}225$ mesurée entre le coût et le modèle, comme la dépendance de la dépréciation extraite envers les prix, auraient dû tempérer la confiance que leur accord inspirait. Sur un marché réel, le modèle est mal spécifié par construction et les comparables peuvent contenir une information que les 600 ventes diluent ; l'arbitrage de l'étape 6 n'a pas de solution générale, et c'est pourquoi il relève du jugement. Mais le résultat enseigne trois choses qui, elles, sont générales. La première est que la pondération par la précision, lorsque les indications sont sans biais, est la bonne, et que s'en écarter par prudence a un coût mesurable, ici deux points de pourcentage de la valeur ; l'évaluateur qui s'en écarte doit pouvoir dire quel biais présumé justifie ce coût. La deuxième est que l'intervalle bootstrap d'une combinaison sous poids fixés n'est pas une fourchette de valeur : il manque la vérité ici parce qu'il ne contient ni l'incertitude des poids ni le biais du bassin de comparables, et la fourchette encadrée par les indications crédibles, moins élégante, est plus honnête. La troisième est que la méthode de comparaison à cinq ventes, même outillée des meilleurs ajustements, reste un estimateur bruité, dont l'erreur d'un dixième de la valeur n'est pas une anomalie mais une réalisation ordinaire d'une variance connue ; le recoupement par un modèle, ou par l'élargissement de l'échantillon, n'est pas un luxe statistique, c'est ce qui sépare une indication d'une conclusion. | ||
| 364 | 366 | ||||
| 365 | \begin{erreurs} | 367 | \begin{erreurs} | ||
| 366 | \begin{itemize} | 368 | \begin{itemize} | ||
| 367 | −\item Faire la moyenne simple des indications : elle donne \dollars{532741} sur le cas 1, en deçà de toute indication crédible, parce qu'elle accorde un tiers du poids à une méthode dont le biais est expliqué ; les Normes internationales la proscrivent expressément. | 369 | +\item Faire la moyenne simple des indications : sur le cas 1, elle donne \dollars{597673} par accident, parce que le coût s'aligne sur la comparaison ; avec une indication par le coût sous hypothèses d'usage, elle aurait donné \dollars{532741}, en deçà de toute indication crédible. Les Normes internationales la proscrivent expressément. | ||
| 368 | \item Pondérer après avoir vu la combinaison, ou ajuster les poids pour rejoindre un prix convenu, une évaluation antérieure ou la valeur au rôle : c'est l'ancrage documenté par \textcite{northcraftNeale1987}, \textcite{diaz1997} et \textcite{geltner1993}. Les poids et leurs raisons s'écrivent avant le calcul. | 370 | \item Pondérer après avoir vu la combinaison, ou ajuster les poids pour rejoindre un prix convenu, une évaluation antérieure ou la valeur au rôle : c'est l'ancrage documenté par \textcite{northcraftNeale1987}, \textcite{diaz1997} et \textcite{geltner1993}. Les poids et leurs raisons s'écrivent avant le calcul. | ||
| 369 | \item Présenter l'intervalle de prédiction du prix ($\pm 16$ \%) comme la fourchette de valeur, ou l'intervalle de confiance d'un modèle ($\pm 2$ \%) comme l'incertitude du dossier : trois intervalles, trois objets. | 371 | \item Présenter l'intervalle de prédiction du prix ($\pm 16$ \%) comme la fourchette de valeur, ou l'intervalle de confiance d'un modèle ($\pm 2$ \%) comme l'incertitude du dossier : trois intervalles, trois objets. | ||
| 370 | \item Prendre la bande bootstrap d'une seule méthode pour la fourchette : le bootstrap ne voit pas ce qui est commun à tout l'échantillon, et il est centré sur le biais de la méthode. | 372 | \item Prendre la bande bootstrap d'une seule méthode pour la fourchette : le bootstrap ne voit pas ce qui est commun à tout l'échantillon, et il est centré sur le biais de la méthode. | ||
| 371 | \item Additionner les incertitudes des chapitres précédents comme si elles étaient indépendantes et distinctes : celle des coefficients est contenue dans celle des ajustements, celle du bruit de transaction dans celle de la sélection ; seul un calcul qui rejoue l'ensemble, comme le bootstrap conjoint, donne une mesure sans double compte. | 373 | \item Additionner les incertitudes des chapitres précédents comme si elles étaient indépendantes et distinctes : celle des coefficients est contenue dans celle des ajustements, celle du bruit de transaction dans celle de la sélection ; seul un calcul qui rejoue l'ensemble, comme le bootstrap conjoint, donne une mesure sans double compte. | ||
| 372 | \item Combiner deux indications fortement corrélées comme si elles étaient indépendantes : le gain de précision est illusoire et le poids optimal de la moins précise peut être nul ou négatif (\cref{eq:20:deux}). | 374 | \item Combiner deux indications fortement corrélées comme si elles étaient indépendantes : le gain de précision est illusoire et le poids optimal de la moins précise peut être nul ou négatif (\cref{eq:20:deux}). | ||
| 373 | −\item Donner à l'indication par le coût un poids par habitude alors que la dépréciation extraite du marché est négative : une dépréciation négative signale que la méthode ne s'applique pas, non que le bâtiment s'est apprécié. | 375 | +\item Prendre l'accord de deux indications pour une confirmation sans se demander ce qu'elles partagent : la dépréciation extraite du marché aligne le coût sur les prix observés, et une indication par le coût ainsi construite confirme la comparaison bien plus qu'elle ne la recoupe. Inversement, une dépréciation extraite négative signale qu'une hypothèse, le plus souvent le terrain, est fausse, non que le bâtiment s'apprécie. | ||
| 374 | \item Arrondir la fourchette vers l'intérieur, ou la conclusion à un pas sans rapport avec l'écart-type mesuré (\cref{eq:20:arrondi}). | 376 | \item Arrondir la fourchette vers l'intérieur, ou la conclusion à un pas sans rapport avec l'écart-type mesuré (\cref{eq:20:arrondi}). | ||
| 375 | \item Écrire « la valeur est de » pour une estimation, ou omettre de rappeler les hypothèses extraordinaires à l'énoncé de la conclusion, ce que la règle 2.3 des NPP exige. | 377 | \item Écrire « la valeur est de » pour une estimation, ou omettre de rappeler les hypothèses extraordinaires à l'énoncé de la conclusion, ce que la règle 2.3 des NPP exige. | ||
| 376 | \end{itemize} | 378 | \end{itemize} | ||
@@ -379,7 +381,7 @@ Il faut lire ce résultat pour ce qu'il est et pour ce qu'il n'est pas. Il n'est | |||||
| 379 | \begin{limites} | 381 | \begin{limites} | ||
| 380 | \begin{itemize} | 382 | \begin{itemize} | ||
| 381 | \item Les indications réconciliées proviennent d'un jeu synthétique engendré par une loi de la forme du modèle de référence, sans structure spatiale fine ni variable omise ; la supériorité de l'indication hédonique sur la comparaison y est, pour partie, une conséquence de cette construction, et les poids raisonnés du cas 1 ne sont pas une recommandation générale de pondération. | 383 | \item Les indications réconciliées proviennent d'un jeu synthétique engendré par une loi de la forme du modèle de référence, sans structure spatiale fine ni variable omise ; la supériorité de l'indication hédonique sur la comparaison y est, pour partie, une conséquence de cette construction, et les poids raisonnés du cas 1 ne sont pas une recommandation générale de pondération. | ||
| 382 | −\item L'indication par le coût repose sur deux hypothèses non vérifiées sur le marché (part du terrain de 30 \%, vie économique de 60 ans) et sur un âge effectif égal à l'âge chronologique faute d'inspection ; les \cref{ch:24,ch:25} les remplaceront, et le \cref{ch:45} devra reconduire la réconciliation avec leurs chiffres. L'écart structurel entre le coût neuf du devis synthétique et le niveau des prix du jeu est signalé pour l'harmonisation. | 384 | +\item L'indication par le coût est celle du \cref{ch:24} ; sa valeur de terrain, \dollars{277000}, est extraite de treize ventes récentes et attend la confirmation du \cref{ch:25} ; si celui-ci la révise, le \cref{ch:45} devra reconduire la réconciliation avec le nouveau chiffre (une variation de $\pm 15$ \% du terrain déplace l'indication de \dollars{537951} à \dollars{621051}, et la conclusion raisonnée d'environ $\pm \dollars{6200}$). Le coût neuf du devis synthétique est calibré sur une fourchette de coûts montréalais et le contre-exemple de la \cref{sec:20:cout} montre que des hypothèses d'usage sur le terrain et la dépréciation auraient produit une indication incohérente ; l'écart entre ce coût et le niveau des prix du jeu est signalé pour l'harmonisation. | ||
| 383 | \item L'écart-type attribué au modèle hédonique combine une incertitude d'estimation mesurée par bootstrap et une incertitude de spécification mesurée sur quatre formes seulement ; il ne contient aucune incertitude de pertinence (emplacement à l'intérieur du secteur, attributs non codés). La corrélation de $0{,}088$ entre comparaison et modèle est une estimation bootstrap sous le protocole déclaré ; sous un autre protocole, par exemple comparables tenus pour fixes, elle vaut $0{,}425$. | 385 | \item L'écart-type attribué au modèle hédonique combine une incertitude d'estimation mesurée par bootstrap et une incertitude de spécification mesurée sur quatre formes seulement ; il ne contient aucune incertitude de pertinence (emplacement à l'intérieur du secteur, attributs non codés). La corrélation de $0{,}088$ entre comparaison et modèle est une estimation bootstrap sous le protocole déclaré ; sous un autre protocole, par exemple comparables tenus pour fixes, elle vaut $0{,}425$. | ||
| 384 | \item Le bootstrap des candidats rééchantillonne un bassin de seize ventes ; avec un bassin si petit, les quantiles extrêmes sont imprécis, et l'énumération exhaustive a été préférée pour situer la sélection. | 386 | \item Le bootstrap des candidats rééchantillonne un bassin de seize ventes ; avec un bassin si petit, les quantiles extrêmes sont imprécis, et l'énumération exhaustive a été préférée pour situer la sélection. | ||
| 385 | \item Les poids de la pondération raisonnée sont un jugement de l'auteur, justifié par des critères écrits ; d'autres évaluateurs retiendraient d'autres poids dans la plage défendable de la \cref{sec:20:sensibilite}, et la fourchette conclue a été choisie pour contenir cette plage. | 387 | \item Les poids de la pondération raisonnée sont un jugement de l'auteur, justifié par des critères écrits ; d'autres évaluateurs retiendraient d'autres poids dans la plage défendable de la \cref{sec:20:sensibilite}, et la fourchette conclue a été choisie pour contenir cette plage. | ||
@@ -393,9 +395,9 @@ Il faut lire ce résultat pour ce qu'il est et pour ce qu'il n'est pas. Il n'est | |||||
| 393 | \item La réconciliation combine des indications qui sont des estimateurs de la même valeur ; sa conclusion est une moyenne pondérée dont la variance dépend des écarts-types et des corrélations (\cref{eq:20:variance}), et dont l'erreur ajoute le biais combiné (\cref{eq:20:eqm}). Les poids de variance minimale sont $\boldsymbol\Sigma^{-1}\mathbf{1}/(\mathbf{1}\T\boldsymbol\Sigma^{-1}\mathbf{1})$ ; la pondération raisonnée de la pratique en est la version corrigée du biais présumé, et les normes internationales proscrivent la moyenne simple. | 395 | \item La réconciliation combine des indications qui sont des estimateurs de la même valeur ; sa conclusion est une moyenne pondérée dont la variance dépend des écarts-types et des corrélations (\cref{eq:20:variance}), et dont l'erreur ajoute le biais combiné (\cref{eq:20:eqm}). Les poids de variance minimale sont $\boldsymbol\Sigma^{-1}\mathbf{1}/(\mathbf{1}\T\boldsymbol\Sigma^{-1}\mathbf{1})$ ; la pondération raisonnée de la pratique en est la version corrigée du biais présumé, et les normes internationales proscrivent la moyenne simple. | ||
| 394 | \item Trois intervalles ont trois objets : l'intervalle de confiance de la valeur (\pct{2.0} sur le cas 1), l'intervalle de prédiction du prix (\pct{16.4}) et la fourchette de valeur conclue (\pct{10.8}), qui seule intègre l'incertitude de la réconciliation. Les NPP exigent une conclusion et son raisonnement, n'interdisent pas la fourchette ; les IVS exigent la description de la réconciliation ; le Red Book exige la déclaration d'une incertitude significative. | 396 | \item Trois intervalles ont trois objets : l'intervalle de confiance de la valeur (\pct{2.0} sur le cas 1), l'intervalle de prédiction du prix (\pct{16.4}) et la fourchette de valeur conclue (\pct{10.8}), qui seule intègre l'incertitude de la réconciliation. Les NPP exigent une conclusion et son raisonnement, n'interdisent pas la fourchette ; les IVS exigent la description de la réconciliation ; le Red Book exige la déclaration d'une incertitude significative. | ||
| 395 | \item Le bootstrap rejoue l'ensemble du calcul : pour le cas 1, le tirage des candidats domine (écart-type \dollars{18160}), l'incertitude des prix implicites est négligeable (\dollars{2672}), et le conjoint vaut \dollars{18385} ; dans 99,7 \% des réplications, la comparaison reste sous le modèle. L'énumération des 4\,368 sous-ensembles place la sélection du \cref{ch:16} parmi les 6,4 \% les plus bas, et les onze candidats non retenus ont un résidu moyen de \pct{-1.7} contre \pct{-8.5} pour les cinq retenus : l'écart entre la grille et le modèle est du bruit, non une information locale. | 397 | \item Le bootstrap rejoue l'ensemble du calcul : pour le cas 1, le tirage des candidats domine (écart-type \dollars{18160}), l'incertitude des prix implicites est négligeable (\dollars{2672}), et le conjoint vaut \dollars{18385} ; dans 99,7 \% des réplications, la comparaison reste sous le modèle. L'énumération des 4\,368 sous-ensembles place la sélection du \cref{ch:16} parmi les 6,4 \% les plus bas, et les onze candidats non retenus ont un résidu moyen de \pct{-1.7} contre \pct{-8.5} pour les cinq retenus : l'écart entre la grille et le modèle est du bruit, non une information locale. | ||
| 396 | −\item L'indication par le coût, \dollars{384705} sous des hypothèses déclarées (terrain 30 \%, vie 60 ans), est incohérente avec le marché, qui paie plus que le coût neuf plus le terrain ; sa dépréciation extraite du marché est négative, et elle ne reçoit que 5 \% du poids. | 398 | +\item L'indication par le coût du \cref{ch:24}, \dollars{579501}, s'accorde avec la comparaison à \pct{0.7} près, mais cet accord est en partie construit : la dépréciation extraite du marché aligne le coût déprécié sur les prix observés, et le terrain est extrait de treize ventes. Sous des hypothèses d'usage (terrain 30 \%, âge-vie 60 ans), la même méthode aurait donné \dollars{384705} et une dépréciation extraite négative ; son incertitude bootstrap est de \dollars{23575}, dominée par le terrain, et elle reçoit 15 \% du poids. | ||
| 397 | −\item Conclusion du cas 1 au 1\ier{} septembre 2026 : poids $0{,}40$ (comparaison), $0{,}55$ (hédonique), $0{,}05$ (coût) ; \textbf{valeur la plus probable \dollars{600000}} ; \textbf{fourchette de valeur de \dollars{575000} à \dollars{640000}} ; intervalle de prédiction du prix de \dollars{539682} à \dollars{749087}, communiqué séparément. Le \cref{ch:45} reprend ces chiffres. | 399 | +\item Conclusion du cas 1 au 1\ier{} septembre 2026 : poids $0{,}40$ (comparaison), $0{,}45$ (hédonique), $0{,}15$ (coût) ; \textbf{valeur la plus probable \dollars{605000}} ; \textbf{fourchette de valeur de \dollars{575000} à \dollars{640000}} ; intervalle de prédiction du prix de \dollars{539682} à \dollars{749087}, communiqué séparément. Le \cref{ch:45} reprend ces chiffres. | ||
| 398 | −\item La loi de génération assigne au sujet une espérance de \dollars{641159} : le modèle s'en écarte de \pct{-0.5}, la comparaison de \pct{-10.2}, la conclusion de \pct{-6.4}. La pondération par la précision était la bonne dans ce monde sans information locale ; l'intervalle bootstrap sous poids fixés n'est pas une fourchette de valeur ; cinq comparables restent un estimateur bruité qu'il faut recouper. | 400 | +\item La loi de génération assigne au sujet une espérance de \dollars{641159} : le modèle s'en écarte de \pct{-0.5}, la comparaison de \pct{-10.2}, le coût de \pct{-9.6}, la conclusion de \pct{-5.6}. La pondération par la précision était la bonne dans ce monde sans information locale ; l'accord du coût et de la comparaison n'était pas une confirmation indépendante ; l'intervalle bootstrap sous poids fixés n'est pas une fourchette de valeur ; cinq comparables restent un estimateur bruité qu'il faut recouper. | ||
| 399 | \end{itemize} | 401 | \end{itemize} | ||
| 400 | \end{synthese} | 402 | \end{synthese} | ||
| 401 | 403 | ||||
@@ -418,12 +420,12 @@ Reprenez les deux indications de l'\cref{ex:20:1} en supposant maintenant que le | |||||
| 418 | Vingt réplications bootstrap d'une indication par comparaison ont donné, en milliers de dollars et déjà triées : 561, 568, 571, 574, 576, 577, 579, 580, 582, 583, 585, 586, 588, 590, 592, 595, 598, 603, 611, 624. Calculez la moyenne, l'écart-type bootstrap et l'intervalle percentile à 90 \% (\cref{eq:20:bootstrap}), en utilisant l'interpolation linéaire des quantiles. Pourquoi vingt réplications sont-elles suffisantes pour l'écart-type et insuffisantes pour les quantiles ? Que vaudrait l'intervalle à 80 \% ? | 420 | Vingt réplications bootstrap d'une indication par comparaison ont donné, en milliers de dollars et déjà triées : 561, 568, 571, 574, 576, 577, 579, 580, 582, 583, 585, 586, 588, 590, 592, 595, 598, 603, 611, 624. Calculez la moyenne, l'écart-type bootstrap et l'intervalle percentile à 90 \% (\cref{eq:20:bootstrap}), en utilisant l'interpolation linéaire des quantiles. Pourquoi vingt réplications sont-elles suffisantes pour l'écart-type et insuffisantes pour les quantiles ? Que vaudrait l'intervalle à 80 \% ? | ||
| 419 | \end{exercice} | 421 | \end{exercice} | ||
| 420 | 422 | ||||
| 421 | −\begin{exercice}[2]{L'indication par le coût sous d'autres hypothèses}{ex:20:5} | 423 | +\begin{exercice}[2]{L'indication par le coût : hypothèses d'usage et extraction}{ex:20:5} | ||
| 422 | −Avec le coût neuf de \dollars{397567} et l'indication par comparaison de \dollars{575565}, recalculez l'indication par le coût (\cref{eq:20:allocation,eq:20:age-vie,eq:20:cout}) (a) pour une part du terrain de 35 \% et un âge effectif de 22 ans sur une vie de 60 ans, (b) pour une part de 35 \% et une vie de 75 ans avec l'âge effectif de 28 ans. (c) Pour une part du terrain de 35 \%, calculez la dépréciation extraite du marché à la prédiction hédonique (\cref{eq:20:extraction}) et son taux. Expliquez pourquoi un taux négatif disqualifie la méthode plutôt qu'il ne décrit le bâtiment, et quelles vérifications un dossier réel exigerait avant de conclure. | 424 | +Avec le coût neuf de \dollars{397567} et l'indication par comparaison de \dollars{575565} : (a) calculez l'indication par le coût sous des hypothèses d'usage, un terrain alloué à 35 \% de l'indication par comparaison et une dépréciation âge-vie avec un âge effectif de 22 ans sur une vie de 60 ans, puis (b) avec l'âge effectif de 28 ans sur une vie de 75 ans. (c) Avec la valeur de terrain du \cref{ch:24}, \dollars{277000}, calculez la dépréciation extraite du marché (\cref{eq:20:extraction}) et son taux à l'indication par comparaison et à la prédiction hédonique, puis la valeur de terrain qu'il faudrait pour que le coût, avec la dépréciation totale de 23,91 \% du \cref{ch:24}, rejoigne la prédiction hédonique. (d) Expliquez pourquoi l'accord entre le coût et la comparaison obtenu en (c) n'est pas une confirmation indépendante, et quelles vérifications un dossier réel exigerait. | ||
| 423 | \end{exercice} | 425 | \end{exercice} | ||
| 424 | 426 | ||||
| 425 | \begin{exercice}[3]{Pondérations alternatives et comparaison élargie}{ex:20:6} | 427 | \begin{exercice}[3]{Pondérations alternatives et comparaison élargie}{ex:20:6} | ||
| 426 | −À l'aide de \texttt{analysis/python/cases/ch20\_reconciliation.py} : (a) recalculez la conclusion pour les poids $0{,}30$, $0{,}65$ et $0{,}05$, puis $0{,}60$, $0{,}35$ et $0{,}05$, et arrondissez au \dollars{5000} ; (b) remplacez l'indication par comparaison par celle de l'échantillon élargi à seize candidats (\cref{fig:20:residus}) en conservant les poids raisonnés, et commentez l'effet ; (c) refaites le bootstrap conjoint avec $k = 8$ comparables retenus et comparez l'écart-type obtenu à celui du \cref{tab:20:bootstrap}, en reliant le résultat à l'\cref{eq:16:variance}. Rédigez une note de 150 mots sur ce que ces variantes impliquent pour la fourchette de valeur à communiquer. | 428 | +À l'aide de \texttt{analysis/python/cases/ch20\_reconciliation.py} : (a) recalculez la conclusion pour les poids $0{,}30$, $0{,}55$ et $0{,}15$, puis $0{,}55$, $0{,}30$ et $0{,}15$, et arrondissez au \dollars{5000} ; (b) remplacez l'indication par comparaison par celle de l'échantillon élargi à seize candidats (\cref{fig:20:residus}) en conservant les poids raisonnés, et commentez l'effet ; (c) refaites le bootstrap conjoint avec $k = 8$ comparables retenus et comparez l'écart-type obtenu à celui du \cref{tab:20:bootstrap}, en reliant le résultat à l'\cref{eq:16:variance}. Rédigez une note de 150 mots sur ce que ces variantes impliquent pour la fourchette de valeur à communiquer. | ||
| 427 | \end{exercice} | 429 | \end{exercice} | ||
| 428 | 430 | ||||
| 429 | \begin{exercice}[3]{Rédiger la conclusion et l'incidence d'une hypothèse}{ex:20:7} | 431 | \begin{exercice}[3]{Rédiger la conclusion et l'incidence d'une hypothèse}{ex:20:7} | ||
modified
manuscript/chapters/ch36.tex
+215 −1
@@ -1,2 +1,216 @@ | |||||
| 1 | \chapter{Données de panel et identification causale}\label{ch:36} | 1 | \chapter{Données de panel et identification causale}\label{ch:36} | ||
| 2 | −\stubchapter | 2 | + | ||
| 3 | +Les chapitres précédents de cette partie ont appris à décrire : le modèle hédonique du \cref{ch:18} mesure ce que le marché paie pour une caractéristique, les modèles spatiaux du \cref{ch:19} corrigent la dépendance entre voisins, les indices du \cref{ch:35} suivent le niveau des prix dans le temps. Aucun de ces outils ne répond pourtant à la question que l'évaluateur se fait poser le plus souvent lorsqu'un changement survient : de combien la nouvelle station de transport collectif, le rezonage de l'îlot, l'inondation du printemps ou le règlement qui encadre les loyers ont-ils modifié la valeur de cet immeuble ? La question est causale, et la réponse exige de comparer ce qui est arrivé à ce qui serait arrivé sans le changement, c'est-à-dire à un contrefactuel que l'on n'observe jamais. Le présent chapitre expose les méthodes qui construisent ce contrefactuel à partir de données de panel, où les mêmes immeubles sont suivis sur plusieurs périodes : effets fixes, doubles différences, études d'événement, estimateurs adaptés à l'adoption échelonnée, discontinuité spatiale et contrôle synthétique. L'exemple intégral superpose aux séries trimestrielles de revenu net d'exploitation du portefeuille du cas 4 un choc dont l'effet est déclaré d'avance ; le lecteur connaît donc la vérité et peut juger chaque estimateur à ce qu'il en retrouve. Les applications au rezonage, aux risques environnementaux et à l'encadrement locatif renvoient aux \cref{ch:08,ch:43,ch:34}. | ||||
| 4 | + | ||||
| 5 | +\begin{objectifs} | ||||
| 6 | +À la fin de ce chapitre, le lecteur sait : | ||||
| 7 | +\begin{itemize} | ||||
| 8 | +\item formuler une question d'évaluation en termes de résultats potentiels, nommer l'effet recherché et reconnaître le biais de sélection qui sépare une différence observée d'un effet causal ; | ||||
| 9 | +\item écrire un modèle de panel à effets fixes d'immeuble et de période, dériver l'estimateur within, le relier aux indicatrices et calculer des erreurs-types robustes aux grappes ; | ||||
| 10 | +\item estimer un effet par doubles différences à deux périodes, énoncer et éprouver l'hypothèse de tendances parallèles par des placebos et une étude d'événement ; | ||||
| 11 | +\item expliquer pourquoi l'estimateur à effets fixes bidirectionnels se dérègle lorsque l'adoption est échelonnée et les effets dynamiques, et appliquer l'estimateur par cohortes de Callaway et Sant'Anna ; | ||||
| 12 | +\item mettre en œuvre une discontinuité spatiale à une frontière de zone et un contrôle synthétique à poids positifs, et en lire les limites ; | ||||
| 13 | +\item confronter, sur un choc simulé aux effets connus, cinq estimateurs à la vérité, puis juger de la sensibilité des conclusions aux hypothèses d'identification et au choix du groupe témoin. | ||||
| 14 | +\end{itemize} | ||||
| 15 | +\end{objectifs} | ||||
| 16 | + | ||||
| 17 | +\section{Pourquoi la causalité importe à l'évaluateur}\label{sec:36:pourquoi} | ||||
| 18 | + | ||||
| 19 | +\subsection{Des questions causales partout} | ||||
| 20 | + | ||||
| 21 | +L'évaluation ordinaire est une estimation d'espérance conditionnelle : la valeur marchande du sujet est ce que des biens semblables se vendent, à la même date, sur le même marché (\cref{ch:16}). Cette question ne demande pas de savoir \emph{pourquoi} les prix sont ce qu'ils sont. Mais une part croissante des mandats porte sur un changement : l'expropriation partielle d'un terrain pour une emprise de transport, l'indemnité due à la suite d'un sinistre, la contestation d'une valeur au rôle après un rezonage, l'effet d'un nouveau règlement sur la valeur d'un immeuble locatif, la décote attachée à une zone inondable nouvellement cartographiée ou la plus-value d'un quartier desservi par une infrastructure. Dans chacun de ces cas, la question posée est de la forme « quelle est la valeur de l'immeuble avec le changement, et quelle serait-elle sans lui ? », et seule la première branche est observable. La seconde est un \motcle{contrefactuel} ; l'estimer est l'objet de l'\motcle{identification causale}. | ||||
| 22 | + | ||||
| 23 | +La tentation est grande de répondre par une comparaison simple : les immeubles proches de la station se vendent plus cher que les autres, donc la station vaut la différence ; les loyers ont monté de tant depuis la mise en service, donc c'est l'effet de la mise en service. Ces deux raisonnements sont faux pour des raisons symétriques. Le premier compare des immeubles différents à la même date et attribue à la station ce qui tient à leur localisation, à leur âge ou à leur qualité, qui n'ont rien à voir avec elle ; les stations ne sont pas placées au hasard. Le second compare le même immeuble à deux dates et attribue à la station ce qui tient au marché, à l'inflation, au cycle, qui auraient agi sans elle. La littérature empirique a appris à se méfier de ces deux comparaisons et à ne retenir que des plans d'observation où le contrefactuel est construit explicitement. \textcite{lindenRockoff2008} mesurent l'effet de l'arrivée d'un délinquant sexuel inscrit sur les prix des maisons voisines en comparant, avant et après l'arrivée, les maisons situées à moins de 0,1 mille à celles situées entre 0,1 et 0,3 mille ; \textcite{currie2015} mesurent l'effet de l'ouverture et de la fermeture de 1 600 usines émettrices de substances toxiques en suivant les prix à moins d'un demi-mille et entre un demi-mille et deux milles ; \textcite{dubeLegrosTheriaultDesrosiers2014} mesurent l'effet d'un changement de desserte en train de banlieue sur la Rive-Sud de Montréal par un estimateur spatial de doubles différences. Dans les trois cas, l'effet est une différence de différences : différence entre proches et éloignés, elle-même comparée avant et après. C'est la structure que ce chapitre formalise. | ||||
| 24 | + | ||||
| 25 | +\subsection{Résultats potentiels, effet du traitement et biais de sélection} | ||||
| 26 | + | ||||
| 27 | +Le cadre des \motcle{résultats potentiels}, exposé par \textcite{imbensRubin2015}, donne un vocabulaire précis. Soit $D_{it} \in \{0, 1\}$ l'indicatrice qui vaut 1 si l'immeuble $i$ est exposé au changement (le \motcle{traitement}, par analogie médicale) à la période $t$. Chaque immeuble possède deux résultats potentiels, $Y_{it}(1)$ s'il est traité et $Y_{it}(0)$ s'il ne l'est pas, dont un seul est observé : | ||||
| 28 | +\begin{equation}\label{eq:36:potentiels} | ||||
| 29 | +Y_{it} = D_{it}\, Y_{it}(1) + (1 - D_{it})\, Y_{it}(0) . | ||||
| 30 | +\end{equation} | ||||
| 31 | +L'effet du traitement sur l'immeuble $i$ à la période $t$ est $Y_{it}(1) - Y_{it}(0)$ ; il n'est jamais observé, puisque l'un des deux termes manque toujours. Ce que les données permettent d'estimer, sous hypothèses, est une moyenne de ces effets sur une population définie. | ||||
| 32 | + | ||||
| 33 | +\begin{definition}{Effet moyen du traitement sur les traités}{36-att} | ||||
| 34 | +L'\motcle{effet moyen du traitement sur les traités} (ATT, \emph{average treatment effect on the treated}) est | ||||
| 35 | +\begin{equation}\label{eq:36:att} | ||||
| 36 | +\mathrm{ATT} = \E\big[Y_{it}(1) - Y_{it}(0) \mid D_{it} = 1\big] . | ||||
| 37 | +\end{equation} | ||||
| 38 | +C'est l'effet moyen pour les immeubles effectivement exposés, à la date où ils le sont ; il ne dit rien de ce que le traitement ferait à des immeubles qui n'y ont pas été exposés. | ||||
| 39 | +\end{definition} | ||||
| 40 | + | ||||
| 41 | +L'ATT est la quantité pertinente pour l'évaluateur, parce que son sujet est, en général, un immeuble exposé : la maison qui a été inondée, l'immeuble qui est près de la station. La différence brute entre traités et non-traités ne l'estime pas. En écrivant $\E[Y \mid D = 1] = \E[Y(1) \mid D = 1]$ et $\E[Y \mid D = 0] = \E[Y(0) \mid D = 0]$, on obtient | ||||
| 42 | +\begin{equation}\label{eq:36:selection} | ||||
| 43 | +\underbrace{\E[Y \mid D = 1] - \E[Y \mid D = 0]}_{\text{différence observée}} | ||||
| 44 | += \underbrace{\E[Y(1) - Y(0) \mid D = 1]}_{\mathrm{ATT}} | ||||
| 45 | ++ \underbrace{\E[Y(0) \mid D = 1] - \E[Y(0) \mid D = 0]}_{\text{biais de sélection}} . | ||||
| 46 | +\end{equation} | ||||
| 47 | +Le \motcle{biais de sélection} est la différence qui aurait existé entre les deux groupes \emph{sans} traitement. Il est nul si le traitement a été attribué au hasard, ce qui n'arrive jamais en immobilier : les lignes de transport desservent les quartiers denses, les zones inondables longent les rivières où les terrains ont d'autres attributs, les rezonages visent les secteurs en mutation. \textcite{angristPischke2009} appellent cette décomposition l'équation fondamentale de l'économétrie appliquée ; toute la suite du chapitre consiste à trouver des hypothèses crédibles qui annulent le second terme ou qui permettent de l'estimer. Le modèle hédonique du \cref{ch:18} y parvient lorsque la sélection ne dépend que de caractéristiques observées et correctement spécifiées : conditionnellement à $\mathbf{x}$, les immeubles traités et non traités auraient eu le même $Y(0)$. L'hypothèse est forte, parce que ce qui détermine l'exposition est souvent inobservé, et c'est précisément la raison d'être des données de panel : observer le même immeuble avant et après permet d'éliminer tout ce qui lui est propre et constant. | ||||
| 48 | + | ||||
| 49 | +\subsection{Les plans d'identification et ce qu'ils supposent} | ||||
| 50 | + | ||||
| 51 | +Le \cref{tab:36:plans} résume les plans d'observation de ce chapitre, la source de biais de sélection qu'ils neutralisent et l'hypothèse qu'ils exigent en retour. Aucune n'est gratuite. Les effets fixes éliminent les différences permanentes entre immeubles mais pas les chocs qui coïncident avec le traitement ; les doubles différences exigent que les groupes aient évolué parallèlement sans traitement ; la discontinuité spatiale exige que rien d'autre ne change à la frontière ; le contrôle synthétique exige qu'une combinaison de témoins reproduise la trajectoire du traité. Le travail de l'analyste n'est pas de choisir la méthode la plus sophistiquée, mais celle dont l'hypothèse est la plus défendable dans le cas étudié, et de montrer ce qui se passe quand elle est relâchée. | ||||
| 52 | + | ||||
| 53 | +\begin{table}[htbp] | ||||
| 54 | +\caption{Plans d'identification du chapitre : ce qu'ils éliminent et ce qu'ils supposent}\label{tab:36:plans} | ||||
| 55 | +\centering | ||||
| 56 | +\small | ||||
| 57 | +\begin{tabularx}{\textwidth}{L{32mm}YY} | ||||
| 58 | +\toprule | ||||
| 59 | +Plan & Biais de sélection neutralisé & Hypothèse exigée (et test usuel) \\ | ||||
| 60 | +\midrule | ||||
| 61 | +Effets fixes d'immeuble (\cref{sec:36:panel}) & Toute différence permanente entre immeubles, observée ou non & Exogénéité stricte : les chocs idiosyncrasiques ne sont pas liés au traitement à aucune date \\ | ||||
| 62 | +Doubles différences $2 \times 2$ (\cref{sec:36:did}) & Différences permanentes et chocs communs aux deux groupes & Tendances parallèles sans traitement (placebos, étude d'événement) \\ | ||||
| 63 | +Étude d'événement & Idem, en laissant l'effet varier avec le temps écoulé & Absence de tendance différentielle avant le traitement ; anticipation nulle \\ | ||||
| 64 | +Adoption échelonnée (\cref{sec:36:echelonne}) & Idem, avec plusieurs dates d'exposition & Tendances parallèles pour chaque cohorte ; homogénéité des effets (TWFE) ou agrégation explicite (Callaway--Sant'Anna) \\ | ||||
| 65 | +Discontinuité spatiale (\cref{sec:36:autres}) & Tout ce qui varie continûment à la frontière & Continuité des autres déterminants à la frontière ; pas de tri des immeubles autour d'elle \\ | ||||
| 66 | +Contrôle synthétique (\cref{sec:36:autres}) & Trajectoire propre de l'unité traitée & Un bassin de donneurs dont une combinaison convexe reproduit le passé du traité ; inférence par permutation \\ | ||||
| 67 | +\bottomrule | ||||
| 68 | +\end{tabularx} | ||||
| 69 | +\tabsource{Synthèse de l'auteur d'après \textcite{angristPischke2009}, \textcite{imbensRubin2015}, \textcite{cunningham2021} et \textcite{roth2023}.} | ||||
| 70 | +\end{table} | ||||
| 71 | + | ||||
| 72 | +\section{Le modèle de panel à effets fixes}\label{sec:36:panel} | ||||
| 73 | + | ||||
| 74 | +\subsection{Structure des données et modèle} | ||||
| 75 | + | ||||
| 76 | +Un \motcle{panel} (ou données longitudinales) suit $N$ unités sur $T$ périodes : $N$ immeubles dont on observe le revenu net d'exploitation chaque trimestre, $N$ municipalités dont on connaît le prix médian chaque année, $N$ maisons vendues plusieurs fois. Le panel est \motcle{cylindré} si chaque unité est observée à toutes les périodes, ce qui est le cas des séries du cas 4 (48 immeubles, 42 trimestres, 2 016 observations) et rarement celui des ventes, où chaque maison n'apparaît qu'aux dates où elle change de mains ; les méthodes de ce chapitre s'appliquent aux deux, mais les formules sont plus simples dans le cas cylindré et c'est celui que nous développons. Le modèle de base est | ||||
| 77 | +\begin{equation}\label{eq:36:panel} | ||||
| 78 | +y_{it} = \mathbf{x}_{it}\T\boldsymbol\beta + \alpha_i + \lambda_t + \varepsilon_{it}, \qquad i = 1, \dots, N,\ t = 1, \dots, T , | ||||
| 79 | +\end{equation} | ||||
| 80 | +où $y_{it}$ est, dans notre cas, le logarithme du revenu net d'exploitation, $\mathbf{x}_{it}$ un vecteur de variables qui varient dans le temps (dont le traitement $D_{it}$), $\alpha_i$ un \motcle{effet fixe d'unité} qui absorbe tout ce qui est propre à l'immeuble et constant sur la période (taille, localisation, qualité de construction, qualité du gestionnaire, et tout ce que l'on ne mesure pas), $\lambda_t$ un \motcle{effet fixe de période} qui absorbe tout ce qui est commun à tous les immeubles à la date $t$ (cycle, inflation, taux, choc pandémique), et $\varepsilon_{it}$ un terme idiosyncrasique. Dans la notation du modèle hédonique de référence (\cref{eq:18:semilog}), $\alpha_i$ joue le rôle des effets spatiaux $\mu_{s(i)}$ portés à leur granularité la plus fine, l'immeuble lui-même, et $\lambda_t$ celui des effets temporels $\tau_t$. La différence essentielle est que $\alpha_i$ n'est pas une indicatrice de secteur, partagée par des dizaines de ventes, mais une constante propre à chaque unité, identifiée uniquement parce que l'unité est observée plusieurs fois. | ||||
| 81 | + | ||||
| 82 | +\subsection{Effets fixes ou aléatoires} | ||||
| 83 | + | ||||
| 84 | +Deux traitements de $\alpha_i$ sont possibles. Le modèle à \motcle{effets aléatoires} suppose que $\alpha_i$ est un tirage indépendant des régresseurs, $\E[\alpha_i \mid \mathbf{x}_{i1}, \dots, \mathbf{x}_{iT}] = 0$ ; il l'intègre au terme d'erreur et estime $\boldsymbol\beta$ par moindres carrés généralisés, avec le gain d'efficacité qu'apporte l'exploitation de la variation entre unités. Le modèle à \motcle{effets fixes} ne suppose rien sur la corrélation entre $\alpha_i$ et les régresseurs : il traite $\alpha_i$ comme $N$ paramètres à éliminer ou à estimer. Le choix n'est pas une affaire de goût mais d'hypothèse : si les immeubles exposés au traitement diffèrent de façon permanente des autres pour des raisons que l'on ne mesure pas, ce qui est la règle, $\alpha_i$ est corrélé avec $D_{it}$, et l'estimateur à effets aléatoires est biaisé exactement par le terme de sélection de l'\cref{eq:36:selection}. \textcite{wooldridge2010} présente le test de Hausman, qui compare les deux estimateurs : s'ils diffèrent au-delà de ce que l'échantillonnage explique, l'hypothèse des effets aléatoires est rejetée. En évaluation, la question se tranche presque toujours en faveur des effets fixes, parce que la sélection sur des caractéristiques permanentes inobservées est le problème que les données de panel servent à résoudre ; l'efficacité perdue est le prix de la crédibilité. Les effets aléatoires gardent leur place lorsque l'objectif est la prédiction, par exemple pour emprunter de l'information entre immeubles voisins, ce qui rejoint les modèles hiérarchiques du \cref{ch:39}. | ||||
| 85 | + | ||||
| 86 | +\subsection{L'estimateur within} | ||||
| 87 | + | ||||
| 88 | +Éliminer $\alpha_i$ est simple : il suffit de retrancher à chaque variable sa moyenne temporelle par unité. En notant $\bar y_i = T^{-1}\sum_t y_{it}$ et de même pour $\bar{\mathbf{x}}_i$, $\bar\lambda$ et $\bar\varepsilon_i$, l'\cref{eq:36:panel} moyennée sur $t$ donne $\bar y_i = \bar{\mathbf{x}}_i\T\boldsymbol\beta + \alpha_i + \bar\lambda + \bar\varepsilon_i$, et la différence | ||||
| 89 | +\begin{equation}\label{eq:36:within} | ||||
| 90 | +\ddot y_{it} \equiv y_{it} - \bar y_i = (\mathbf{x}_{it} - \bar{\mathbf{x}}_i)\T\boldsymbol\beta + (\lambda_t - \bar\lambda) + (\varepsilon_{it} - \bar\varepsilon_i) = \ddot{\mathbf{x}}_{it}\T\boldsymbol\beta + \ddot\lambda_t + \ddot\varepsilon_{it} | ||||
| 91 | +\end{equation} | ||||
| 92 | +ne contient plus $\alpha_i$. C'est la \motcle{transformation within} : seule la variation \emph{à l'intérieur} de chaque unité au fil du temps est conservée, et toute variation \emph{entre} unités est éliminée avec les effets fixes. Une variable constante dans le temps pour chaque immeuble (sa superficie, sa RMR, son année de construction) disparaît avec $\alpha_i$ et son coefficient n'est pas identifié, ce qui est la contrepartie logique de la méthode : on ne peut pas à la fois absorber tout ce qui est permanent et mesurer l'effet d'une chose permanente. Les effets de période se traitent par des indicatrices sur les données transformées ou, dans un panel cylindré, par une seconde soustraction, $y_{it} - \bar y_i - \bar y_t + \bar y$, qui élimine $\lambda_t$ de la même manière ; on parle alors d'\motcle{effets fixes bidirectionnels} (TWFE, \emph{two-way fixed effects}). | ||||
| 93 | + | ||||
| 94 | +\begin{proposition}{Estimateur within et indicatrices}{36-within} | ||||
| 95 | +L'estimateur des moindres carrés de $\boldsymbol\beta$ sur les données transformées, | ||||
| 96 | +\begin{equation}\label{eq:36:within-est} | ||||
| 97 | +\hat{\boldsymbol\beta}_{W} = \Big(\sum_{i=1}^{N}\sum_{t=1}^{T} \ddot{\mathbf{x}}_{it}\ddot{\mathbf{x}}_{it}\T\Big)^{-1} \sum_{i=1}^{N}\sum_{t=1}^{T} \ddot{\mathbf{x}}_{it}\,\ddot y_{it} , | ||||
| 98 | +\end{equation} | ||||
| 99 | +est identique à l'estimateur des moindres carrés de $\boldsymbol\beta$ dans la régression de $y_{it}$ sur $\mathbf{x}_{it}$ et $N$ indicatrices d'unité (estimateur dit « LSDV », \emph{least squares dummy variables}). Il est sans biais et convergent lorsque $\E[\varepsilon_{it} \mid \mathbf{x}_{i1}, \dots, \mathbf{x}_{iT}, \alpha_i] = 0$ pour tout $t$ (exogénéité stricte). | ||||
| 100 | +\end{proposition} | ||||
| 101 | +\begin{proof} | ||||
| 102 | +Soit $\mathbf{Q} = \mathbf{I}_{NT} - \mathbf{P}_\Delta$, où $\mathbf{P}_\Delta = \boldsymbol\Delta(\boldsymbol\Delta\T\boldsymbol\Delta)^{-1}\boldsymbol\Delta\T$ est la projection sur l'espace engendré par la matrice $\boldsymbol\Delta$ ($NT \times N$) des indicatrices d'unité. Pour un panel cylindré, $(\boldsymbol\Delta\T\boldsymbol\Delta)^{-1} = T^{-1}\mathbf{I}_N$ et $\mathbf{P}_\Delta \mathbf{y}$ remplace chaque $y_{it}$ par $\bar y_i$ ; donc $\mathbf{Q}\mathbf{y} = \ddot{\mathbf{y}}$ et $\mathbf{Q}\mathbf{X} = \ddot{\mathbf{X}}$. Par le théorème de Frisch--Waugh--Lovell, le coefficient de $\mathbf{X}$ dans la régression de $\mathbf{y}$ sur $[\mathbf{X}, \boldsymbol\Delta]$ est $(\mathbf{X}\T\mathbf{Q}\mathbf{X})^{-1}\mathbf{X}\T\mathbf{Q}\mathbf{y}$, et comme $\mathbf{Q}$ est symétrique et idempotente, $\mathbf{X}\T\mathbf{Q}\mathbf{X} = \ddot{\mathbf{X}}\T\ddot{\mathbf{X}}$ et $\mathbf{X}\T\mathbf{Q}\mathbf{y} = \ddot{\mathbf{X}}\T\ddot{\mathbf{y}}$, ce qui est l'\cref{eq:36:within-est}. Pour l'absence de biais, $\hat{\boldsymbol\beta}_W - \boldsymbol\beta = (\ddot{\mathbf{X}}\T\ddot{\mathbf{X}})^{-1}\ddot{\mathbf{X}}\T\ddot{\boldsymbol\varepsilon}$ et $\E[\ddot\varepsilon_{it} \mid \mathbf{X}] = 0$ sous exogénéité stricte, puisque $\ddot\varepsilon_{it}$ est une combinaison des $\varepsilon_{is}$ de toutes les périodes $s$ de la même unité. | ||||
| 103 | +\end{proof} | ||||
| 104 | + | ||||
| 105 | +L'hypothèse d'\motcle{exogénéité stricte} mérite attention parce qu'elle est plus forte que l'exogénéité contemporaine du modèle hédonique : l'erreur de la période $t$ ne doit être corrélée avec le traitement à \emph{aucune} période, passée ou future. Elle est violée si le traitement répond aux chocs passés, par exemple si une municipalité rezone un îlot \emph{parce que} ses prix ont chuté, ou si les propriétaires anticipent la mise en service et agissent avant. L'étude d'événement de la \cref{sec:36:did} est le diagnostic naturel de ces violations. Dans l'\cref{eq:36:within-est}, les degrés de liberté de la variance résiduelle sont $NT - N - K$ et non $NT - K$, puisque $N$ moyennes ont été estimées ; les logiciels de panel l'appliquent, et une régression sur données transformées « à la main » doit le corriger. La bibliothèque de l'ouvrage (\texttt{traite.panel}, fonctions \texttt{within}, \texttt{within\_deux\_voies}, \texttt{estimateur\_within} et \texttt{twfe}) met en œuvre les deux voies et vérifie leur égalité. | ||||
| 106 | + | ||||
| 107 | +\subsection{Erreurs-types robustes aux grappes} | ||||
| 108 | + | ||||
| 109 | +Les observations d'un même immeuble ne sont pas indépendantes. Le revenu net d'un trimestre dépend des baux signés les trimestres précédents, des dépenses engagées, de la conjoncture locale ; les séries du cas 4 sont, par construction, des marches aléatoires autour d'une tendance régionale, et leurs écarts à l'\cref{eq:36:panel} sont donc fortement autocorrélés. La variance des moindres carrés sous indépendance, $\hat\sigma^2(\mathbf{X}\T\mathbf{X})^{-1}$, et sa version robuste à l'hétéroscédasticité HC1 (\cref{eq:18:hc1}) ignorent cette dépendance et surestiment la précision, parfois de beaucoup. Le remède standard consiste à regrouper les observations en \motcle{grappes} (\emph{clusters}) à l'intérieur desquelles toute corrélation est permise, les grappes étant indépendantes entre elles. Avec $G$ grappes indexées par $g$, $\mathbf{X}_g$ et $\mathbf{e}_g$ les lignes de la matrice des régresseurs et des résidus de la grappe $g$, l'estimateur de la variance est | ||||
| 110 | +\begin{equation}\label{eq:36:grappes} | ||||
| 111 | +\widehat{\Var}(\hat{\boldsymbol\beta}) = c\,(\mathbf{X}\T\mathbf{X})^{-1}\Big(\sum_{g=1}^{G} \mathbf{X}_g\T\mathbf{e}_g\mathbf{e}_g\T\mathbf{X}_g\Big)(\mathbf{X}\T\mathbf{X})^{-1}, \qquad c = \frac{G}{G-1}\cdot\frac{NT-1}{NT-K} , | ||||
| 112 | +\end{equation} | ||||
| 113 | +dit « sandwich » parce que la matrice centrale est prise entre deux inverses. Le terme $\mathbf{X}_g\T\mathbf{e}_g\mathbf{e}_g\T\mathbf{X}_g$ contient tous les produits croisés $e_{it}e_{is}$ de la grappe et capte donc l'autocorrélation ; lorsque chaque grappe se réduit à une observation, la formule redonne HC1. Le facteur $c$ est la correction d'échantillon fini usuelle (dite CR1). La grappe naturelle d'un panel d'immeubles est l'immeuble ; lorsque le traitement est attribué à un niveau plus agrégé (toutes les maisons d'un îlot rezoné, tous les immeubles d'une municipalité), la grappe doit être ce niveau, parce que c'est là que réside la variation qui identifie l'effet. La formule n'est fiable que si $G$ est grand, disons plusieurs dizaines ; avec quelques grappes seulement, elle sous-estime encore la variance et des corrections supplémentaires s'imposent, que \textcite{wooldridge2010} et \textcite{angristPischke2009} discutent. | ||||
| 114 | + | ||||
| 115 | +L'ordre de grandeur de la correction se lit sur une formule approchée. Si chaque grappe compte $m$ observations dont les erreurs ont une corrélation intra-grappe $\rho$ et si le régresseur est constant dans la grappe, le rapport des variances exacte et naïve est | ||||
| 116 | +\begin{equation}\label{eq:36:moulton} | ||||
| 117 | +\frac{\Var_{\text{grappes}}(\hat\beta)}{\Var_{\text{naïve}}(\hat\beta)} \approx 1 + (m - 1)\rho , | ||||
| 118 | +\end{equation} | ||||
| 119 | +de sorte que les erreurs-types sont multipliées par la racine de ce facteur. Avec $m = 42$ trimestres et une corrélation intra-immeuble de $0{,}5$, les erreurs-types naïves doivent être multipliées par environ $4{,}6$ ; l'exemple intégral retrouve des rapports de cet ordre. Une alternative à la pondération par grappes consiste à agréger les données au niveau de la grappe avant d'estimer, par exemple en réduisant chaque immeuble à une différence « après moins avant » : la régression porte alors sur $N$ observations indépendantes et les erreurs-types ordinaires redeviennent valides. C'est la voie que nous suivons pour l'estimateur à deux périodes. | ||||
| 120 | + | ||||
| 121 | +\section{Doubles différences}\label{sec:36:did} | ||||
| 122 | + | ||||
| 123 | +\subsection{Le cas élémentaire à deux groupes et deux périodes} | ||||
| 124 | + | ||||
| 125 | +Le plan le plus simple comporte un groupe traité $\mathcal{T}$, un groupe témoin $\mathcal{C}$, une période « avant » ($t = 0$) où personne n'est traité et une période « après » ($t = 1$) où seul le groupe traité l'est. L'estimateur des \motcle{doubles différences} (ou différence de différences, DiD, \emph{difference-in-differences}) a été introduit au \cref{ch:08} pour mesurer l'effet d'un rezonage (\cref{eq:8:did}) ; nous en établissons ici les conditions de validité. En termes de résultats potentiels, la quantité visée est l'ATT de la période 1, $\E[Y_{1}(1) - Y_{1}(0) \mid \mathcal{T}]$, dont le second terme est inobservé. L'hypothèse qui l'identifie est celle des \motcle{tendances parallèles} : | ||||
| 126 | +\begin{equation}\label{eq:36:paralleles} | ||||
| 127 | +\E[Y_1(0) - Y_0(0) \mid \mathcal{T}] = \E[Y_1(0) - Y_0(0) \mid \mathcal{C}] , | ||||
| 128 | +\end{equation} | ||||
| 129 | +c'est-à-dire qu'en l'absence de traitement, le résultat du groupe traité aurait évolué, en moyenne, comme celui du groupe témoin. Elle ne suppose pas que les deux groupes se ressemblent en niveau, ni que les traités ont été choisis au hasard ; elle suppose que ce qui les distingue est stable dans le temps. Sous cette hypothèse, et avec $Y_0(0)$ observé pour les deux groupes puisque personne n'est traité en $t = 0$, | ||||
| 130 | +\begin{equation}\label{eq:36:did-id} | ||||
| 131 | +\begin{aligned} | ||||
| 132 | +\mathrm{ATT} &= \E[Y_1 \mid \mathcal{T}] - \E[Y_1(0) \mid \mathcal{T}] \\ | ||||
| 133 | +&= \E[Y_1 \mid \mathcal{T}] - \big\{\E[Y_0 \mid \mathcal{T}] + \E[Y_1(0) - Y_0(0) \mid \mathcal{T}]\big\} \\ | ||||
| 134 | +&= \E[Y_1 \mid \mathcal{T}] - \E[Y_0 \mid \mathcal{T}] - \big\{\E[Y_1 \mid \mathcal{C}] - \E[Y_0 \mid \mathcal{C}]\big\} , | ||||
| 135 | +\end{aligned} | ||||
| 136 | +\end{equation} | ||||
| 137 | +où la dernière ligne remplace la tendance contrefactuelle des traités par la tendance observée des témoins, en vertu de l'\cref{eq:36:paralleles}. Chaque terme de la dernière ligne est une moyenne d'échantillon, et l'estimateur $\hat\delta_{2\times 2}$ de l'\cref{eq:8:did} en est la contrepartie empirique. La dérivation montre ce que la méthode fait exactement : elle emprunte aux témoins leur évolution pour reconstruire ce que les traités auraient connu. Elle montre aussi ce qu'elle exige : si les traités étaient sur une trajectoire différente pour une raison étrangère au traitement, l'estimateur attribue au traitement cette différence de trajectoire, tout entière. | ||||
| 138 | + | ||||
| 139 | +Lorsque la variable dépendante est en logarithme, comme ici, les tendances parallèles portent sur les logarithmes, c'est-à-dire sur les taux de croissance, et l'effet s'interprète comme une proportion : $100\,[\exp(\hat\delta) - 1]$ pour cent, soit $4{,}08$ \% pour $\hat\delta = 0{,}04$. L'hypothèse n'est pas invariante à cette transformation : des groupes dont les revenus croissent du même pourcentage ont des tendances parallèles en logarithme mais pas en niveau, et réciproquement. Le choix de l'échelle fait partie de l'hypothèse d'identification et doit être justifié par le mécanisme supposé ; en immobilier, où les chocs de marché sont proportionnels, le logarithme est presque toujours le bon choix. | ||||
| 140 | + | ||||
| 141 | +La version par régression, $y_{it} = \alpha + \beta\,\mathrm{tr}_i + \gamma\,\mathrm{après}_t + \delta\,(\mathrm{tr}_i \times \mathrm{après}_t) + \varepsilon_{it}$ (\cref{eq:8:did-reg}), reproduit exactement l'\cref{eq:8:did} dans le cas $2 \times 2$ équilibré et permet d'ajouter des covariables. Avec des données de panel, on lui préfère la forme à effets fixes, | ||||
| 142 | +\begin{equation}\label{eq:36:did-twfe} | ||||
| 143 | +y_{it} = \alpha_i + \lambda_t + \delta\, D_{it} + \varepsilon_{it} , | ||||
| 144 | +\end{equation} | ||||
| 145 | +qui généralise l'indicatrice de groupe en un effet fixe par unité et celle de période en un effet par date, et qui s'étend immédiatement à plusieurs périodes. Pour l'inférence, l'autocorrélation des erreurs impose les erreurs-types en grappes de l'\cref{eq:36:grappes} ou, de façon équivalente et plus transparente dans le cas $2 \times 2$, l'agrégation : on calcule pour chaque unité la différence longue $\Delta y_i = \bar y_{i,\text{après}} - \bar y_{i,\text{avant}}$ sur les fenêtres retenues, puis on régresse $\Delta y_i$ sur l'indicatrice de traitement ; le coefficient est $\hat\delta_{2\times 2}$ et son erreur-type HC1 est valide quelle que soit la dépendance intra-unité. | ||||
| 146 | + | ||||
| 147 | +\subsection{Éprouver les tendances parallèles : placebos et étude d'événement} | ||||
| 148 | + | ||||
| 149 | +L'hypothèse de l'\cref{eq:36:paralleles} porte sur un contrefactuel et n'est pas testable directement. Elle est cependant \emph{falsifiable} par ses implications sur les périodes où personne n'est traité : si les deux groupes évoluaient parallèlement avant le traitement, un estimateur de doubles différences appliqué à deux périodes antérieures au traitement doit donner zéro. C'est le \motcle{test placebo} temporel : on déplace fictivement la date du traitement dans le passé et l'on vérifie que l'« effet » estimé est nul aux erreurs d'échantillonnage près. Un placebo significatif est un signal d'alarme ; un placebo nul est rassurant sans être une preuve, parce que la divergence peut commencer avec le traitement, par exemple si l'exposition a été décidée en réaction à un événement contemporain. | ||||
| 150 | + | ||||
| 151 | +L'\motcle{étude d'événement} (\emph{event study}) généralise ce test et donne, en plus, la dynamique de l'effet. Soit $g_i$ la première période où l'unité $i$ est traitée et $k = t - g_i$ le temps écoulé depuis l'événement, négatif avant, nul à la date de l'événement, positif après. On estime | ||||
| 152 | +\begin{equation}\label{eq:36:event} | ||||
| 153 | +y_{it} = \alpha_i + \lambda_t + \sum_{\substack{k = \underline{k} \\ k \neq -1}}^{\overline{k}} \delta_k\, \ind[t - g_i = k] + \varepsilon_{it} , | ||||
| 154 | +\end{equation} | ||||
| 155 | +où les indicatrices de temps relatif valent zéro pour les unités jamais traitées, où la période $k = -1$ est omise et sert de référence, et où les extrémités $\underline{k}$ et $\overline{k}$ regroupent toutes les observations plus lointaines (sans ce regroupement, les indicatrices extrêmes ne seraient identifiées que par une poignée d'observations). Chaque $\hat\delta_k$ pour $k \geq 0$ est l'effet $k$ périodes après l'événement, relativement au dernier trimestre avant lui ; chaque $\hat\delta_k$ pour $k < -1$ est un placebo. Le graphique des $\hat\delta_k$ avec leurs intervalles de confiance en grappes est devenu la pièce centrale de toute étude de doubles différences, parce qu'il montre d'un coup d'œil si les coefficients pré-traitement sont plats et proches de zéro (tendances parallèles plausibles), s'ils montent ou descendent régulièrement (tendance différentielle : l'hypothèse est en défaut), et comment l'effet s'installe, culmine ou s'estompe après l'événement. Deux mises en garde. D'abord, l'absence de pré-tendance significative n'établit pas l'hypothèse : les tests de pré-tendance ont souvent peu de puissance, et \textcite{roth2023} rappellent que conditionner l'analyse à leur résultat biaise l'inférence qui suit. Ensuite, le choix de la référence $k = -1$ est arbitraire ; si ce trimestre est, par hasard, un point haut ou bas pour les traités, tous les coefficients en héritent, ce que l'exemple intégral illustre. | ||||
| 156 | + | ||||
| 157 | +\section{Adoption échelonnée : le problème des effets fixes bidirectionnels}\label{sec:36:echelonne} | ||||
| 158 | + | ||||
| 159 | +\subsection{Le plan échelonné et l'estimateur TWFE statique} | ||||
| 160 | + | ||||
| 161 | +Dans la plupart des applications réelles, les unités ne sont pas toutes traitées à la même date. Les stations d'une ligne ouvrent par tronçons, les municipalités adoptent un règlement les unes après les autres, les cartes de zones inondables sont publiées par bassin. Le plan est dit à \motcle{adoption échelonnée} (\emph{staggered adoption}) : les unités se répartissent en \motcle{cohortes} selon leur date de première exposition $g$, et un groupe peut n'être jamais traité. Pendant des décennies, l'usage a été d'estimer l'\cref{eq:36:did-twfe} telle quelle, avec $D_{it} = \ind[t \geq g_i]$, et de lire $\hat\delta$ comme « l'effet moyen du traitement ». Une série de travaux publiés autour de 2020, dont \textcite{goodmanbacon2021}, \textcite{dechaisemartinDhaultfoeuille2020}, \textcite{sunAbraham2021} et \textcite{callawaySantanna2021}, a établi que cette lecture est fausse en général : l'estimateur TWFE statique est une moyenne pondérée de comparaisons $2 \times 2$ dont certaines utilisent des unités \emph{déjà traitées} comme témoins, et ses poids ne correspondent pas aux parts des cohortes dans l'échantillon. Lorsque l'effet du traitement est le même pour toutes les unités et constant dans le temps, le TWFE reste convergent ; dès que l'effet varie entre cohortes ou, surtout, évolue avec le temps écoulé depuis le traitement, il peut s'éloigner considérablement de l'ATT, jusqu'à changer de signe. \textcite{roth2023} offrent la synthèse la plus accessible de cette littérature. | ||||
| 162 | + | ||||
| 163 | +\subsection{La décomposition de Goodman-Bacon} | ||||
| 164 | + | ||||
| 165 | +\textcite{goodmanbacon2021} a montré que, dans un panel cylindré sans covariable, l'estimateur TWFE statique s'écrit exactement comme une moyenne pondérée de tous les estimateurs $2 \times 2$ que le plan permet de former. Considérons deux cohortes, une cohorte précoce $k$ traitée à partir de $g_k$ et une cohorte tardive $\ell$ traitée à partir de $g_\ell > g_k$, et un groupe $U$ jamais traité. Trois types de comparaisons existent : chaque cohorte contre les jamais traités ($\hat\beta_{kU}$, $\hat\beta_{\ell U}$), sur l'ensemble de la période ; la cohorte précoce contre la cohorte tardive \emph{avant} que celle-ci ne soit traitée ($\hat\beta_{k\ell}$, fenêtre $t < g_\ell$) ; et la cohorte tardive contre la cohorte précoce \emph{déjà traitée} ($\hat\beta_{\ell k}$, fenêtre $t \geq g_k$). Alors | ||||
| 166 | +\begin{equation}\label{eq:36:bacon} | ||||
| 167 | +\hat\delta_{\text{TWFE}} = s_{kU}\,\hat\beta_{kU} + s_{\ell U}\,\hat\beta_{\ell U} + s_{k\ell}\,\hat\beta_{k\ell} + s_{\ell k}\,\hat\beta_{\ell k}, \qquad s_{kU} + s_{\ell U} + s_{k\ell} + s_{\ell k} = 1 , | ||||
| 168 | +\end{equation} | ||||
| 169 | +où les poids dépendent des tailles relatives des groupes et de la part de la période pendant laquelle chacun est traité. En notant $n_k$ la part des unités dans la cohorte $k$, $\bar D_k$ la part des périodes où elle est traitée, $n_{kU} = n_k/(n_k + n_U)$ et $\hat V^D$ la variance de $D_{it}$ après double centrage, | ||||
| 170 | +\begin{equation}\label{eq:36:bacon-poids} | ||||
| 171 | +s_{kU} = \frac{(n_k + n_U)^2\, n_{kU}(1 - n_{kU})\, \bar D_k (1 - \bar D_k)}{\hat V^D}, \qquad | ||||
| 172 | +s_{\ell k} = \frac{\big[(n_k + n_\ell)\bar D_k\big]^2\, n_{k\ell}(1 - n_{k\ell})\, \dfrac{\bar D_\ell}{\bar D_k}\cdot\dfrac{\bar D_k - \bar D_\ell}{\bar D_k}}{\hat V^D} , | ||||
| 173 | +\end{equation} | ||||
| 174 | +et de façon analogue pour $s_{k\ell}$ ; le théorème s'étend à un nombre quelconque de cohortes. La leçon se lit dans les poids : chaque comparaison pèse d'autant plus que les groupes qu'elle oppose sont grands et que la variance de son traitement dans sa fenêtre, $\bar D(1 - \bar D)$, est élevée, c'est-à-dire que le traitement survient au milieu de la fenêtre. Les cohortes traitées au milieu de la période reçoivent donc un poids disproportionné, et les unités jamais traitées, qui ne contribuent qu'aux comparaisons du premier type, peuvent peser moins que leur nombre ne le suggère. | ||||
| 175 | + | ||||
| 176 | +Le danger réside dans la comparaison $\hat\beta_{\ell k}$. Dans sa fenêtre, la cohorte précoce est déjà traitée et sert de témoin ; si son effet évolue encore, cette évolution est retranchée de l'effet mesuré pour la cohorte tardive. Sous tendances parallèles, on montre que | ||||
| 177 | +\begin{equation}\label{eq:36:interdite} | ||||
| 178 | +\E[\hat\beta_{\ell k}] = \mathrm{ATT}_\ell - \Big(\overline{\delta}_k^{\,t \geq g_\ell} - \overline{\delta}_k^{\,g_k \leq t < g_\ell}\Big) , | ||||
| 179 | +\end{equation} | ||||
| 180 | +où le terme entre parenthèses est la variation de l'effet moyen de la cohorte précoce entre les deux sous-fenêtres. Si l'effet du traitement croît avec le temps écoulé, ce que l'on attend d'une infrastructure dont le voisinage se densifie, ou d'un revenu net qui ne s'ajuste qu'au renouvellement des baux, cette variation est positive et $\hat\beta_{\ell k}$ sous-estime l'ATT de la cohorte tardive, éventuellement jusqu'à devenir négatif alors que tous les effets individuels sont positifs. C'est la \motcle{comparaison interdite} (\emph{forbidden comparison}) de la littérature. Le poids $s_{\ell k}$ étant positif, le TWFE hérite d'une partie de ce biais ; la décomposition permet de le quantifier, et le \cref{ex:36:5} la fait calculer à la main. | ||||
| 181 | + | ||||
| 182 | +\subsection{L'estimateur de Callaway et Sant'Anna} | ||||
| 183 | + | ||||
| 184 | +La solution proposée par \textcite{callawaySantanna2021} consiste à ne jamais former de comparaison interdite. On définit d'abord un effet par cohorte et par période, l'\motcle{ATT de cohorte}, puis on agrège explicitement. Pour la cohorte $g$ et la période $t$, avec pour témoins les unités jamais traitées $\mathcal{C}$ (ou, en variante, les unités \emph{pas encore} traitées à la date $t$), et en prenant pour base la dernière période avant le traitement de la cohorte, $g - 1$, | ||||
| 185 | +\begin{equation}\label{eq:36:cs} | ||||
| 186 | +\widehat{\mathrm{ATT}}(g, t) = \frac{1}{n_g}\sum_{i \in g} \big(y_{it} - y_{i,g-1}\big) - \frac{1}{n_{\mathcal{C}}}\sum_{i \in \mathcal{C}} \big(y_{it} - y_{i,g-1}\big) . | ||||
| 187 | +\end{equation} | ||||
| 188 | +Chaque $\widehat{\mathrm{ATT}}(g, t)$ est un estimateur $2 \times 2$ propre : il compare une cohorte, entre sa dernière période non traitée et la période $t$, à des unités qui ne sont traitées à aucune de ces deux dates. Pour $t < g$, la même formule fournit des placebos. L'hypothèse requise est celle des tendances parallèles entre chaque cohorte et ses témoins, et elle peut être restreinte aux témoins d'une même strate, par exemple d'une même RMR, lorsque les tendances régionales diffèrent ; c'est ce que fait l'exemple intégral. Les agrégations usuelles sont l'effet par cohorte, l'effet dynamique par temps relatif et l'effet global : | ||||
| 189 | +\begin{equation}\label{eq:36:cs-agreg} | ||||
| 190 | +\widehat{\mathrm{ATT}}_g = \frac{1}{T - g + 1}\sum_{t \geq g}\widehat{\mathrm{ATT}}(g, t), \qquad | ||||
| 191 | +\widehat{\mathrm{ATT}}(k) = \sum_{g} w_{g,k}\,\widehat{\mathrm{ATT}}(g, g + k), \qquad | ||||
| 192 | +\widehat{\mathrm{ATT}} = \sum_g \frac{n_g}{\sum_{g'} n_{g'}}\,\widehat{\mathrm{ATT}}_g , | ||||
| 193 | +\end{equation} | ||||
| 194 | +où $w_{g,k}$ est la part de la cohorte $g$ parmi les cohortes observées $k$ périodes après leur traitement. Chaque agrégation est une moyenne à poids positifs et connus d'effets bien définis, ce qui est précisément ce que le TWFE statique ne garantit pas. L'inférence repose sur un bootstrap par blocs d'unités, qui respecte l'autocorrélation intra-immeuble ; la mise en œuvre de la bibliothèque (\texttt{traite.panel.callaway\_santanna}) rééchantillonne séparément chaque cohorte et chaque strate de témoins afin de conserver le plan. L'estimateur de \textcite{sunAbraham2021} poursuit le même but dans le cadre d'une régression, en interagissant les indicatrices de temps relatif avec les indicatrices de cohorte puis en agrégeant ; celui de \textcite{dechaisemartinDhaultfoeuille2020} généralise aux traitements qui s'allument et s'éteignent. Dans un plan simple comme celui de ce chapitre, deux cohortes et un groupe jamais traité, les trois approches donnent des résultats très voisins ; la version par cohortes a l'avantage de la transparence, chaque chiffre se recalculant à la main comme une différence de deux moyennes. | ||||
| 195 | + | ||||
| 196 | +\section{Discontinuité spatiale et contrôle synthétique}\label{sec:36:autres} | ||||
| 197 | + | ||||
| 198 | +\subsection{La frontière comme expérience : discontinuité spatiale} | ||||
| 199 | + | ||||
| 200 | +Certains traitements sont définis par une ligne sur une carte : la limite d'une zone au règlement de zonage, celle d'une zone inondable cartographiée, celle d'un arrondissement soumis à un règlement particulier, celle d'un territoire scolaire. Deux immeubles situés de part et d'autre de la ligne, à quelques dizaines de mètres l'un de l'autre, partagent le même voisinage, les mêmes commerces, la même accessibilité, le même microclimat de marché ; ce qui les sépare est la règle, et seulement la règle. L'idée de la \motcle{discontinuité spatiale} (\emph{spatial regression discontinuity}) est d'estimer le saut de la fonction de prix à la frontière, en supposant que tous les autres déterminants de la valeur y sont continus. Soit $x_i$ la distance signée de l'immeuble $i$ à la frontière, négative d'un côté et positive de l'autre, et $c = 0$ la frontière ; l'estimateur local linéaire à noyau est la régression pondérée | ||||
| 201 | +\begin{equation}\label{eq:36:rdd} | ||||
| 202 | +y_i = a + \tau\,\ind[x_i \geq 0] + b\,x_i + d\,\ind[x_i \geq 0]\,x_i + \eta_i, \qquad \text{poids } K\!\left(\frac{x_i}{h}\right) , | ||||
| 203 | +\end{equation} | ||||
| 204 | +où $K$ est un noyau décroissant (triangulaire, $K(u) = \max(1 - \abs{u}, 0)$) et $h$ une bande passante ; $\hat\tau$ est le saut à la frontière, $b$ et $b + d$ les pentes de chaque côté. La régression n'utilise que les immeubles à moins de $h$ de la frontière, et plus ils en sont proches, plus ils pèsent. Le choix de $h$ reproduit l'arbitrage biais--variance du \cref{ch:16} : une bande étroite n'utilise que des immeubles comparables mais peu nombreux ; une bande large gagne en précision et perd en comparabilité, puisque les pentes linéaires approchent de moins en moins bien la vraie fonction de prix. On présente toujours l'estimation pour plusieurs bandes. | ||||
| 205 | + | ||||
| 206 | +Trois menaces propres à la frontière doivent être examinées. Premièrement, d'autres règles peuvent changer à la même ligne : une limite de zone est souvent aussi une limite d'arrondissement, de territoire scolaire ou de taux de taxe, et le saut mesuré agrège tous ces changements. Deuxièmement, les immeubles peuvent se trier autour de la frontière : si la règle existe depuis longtemps, le bâti de chaque côté s'y est adapté (duplex d'un côté, unifamiliales de l'autre) et la discontinuité des caractéristiques du bâti contamine celle des prix ; on vérifie que les caractéristiques observables sont continues à la frontière, et l'on compare à caractéristiques égales. Troisièmement, les effets de la règle peuvent déborder la ligne, par exemple si la zone dense nuit aux maisons immédiatement voisines de l'autre côté ; le saut mesure alors une différence entre deux effets et non l'effet d'un seul côté. \textcite{cunningham2021} présente le cadre général de la discontinuité et ses diagnostics ; dans sa version spatiale, elle est un complément naturel des ventes appariées du \cref{ch:17}, dont elle est la limite lorsque les paires se resserrent sur une ligne. | ||||
| 207 | + | ||||
| 208 | +\subsection{Le contrôle synthétique} | ||||
| 209 | + | ||||
| 210 | +Lorsqu'une seule unité est traitée, ou lorsque le traité est un agrégat (un quartier, une municipalité, une cohorte entière), aucun témoin unique n'a de raison d'avoir suivi la même trajectoire, et la moyenne des témoins n'en a pas davantage. \textcite{abadieDiamondHainmueller2010} proposent de construire le témoin : le \motcle{contrôle synthétique} est la combinaison convexe des unités non traitées, dites \motcle{donneurs}, qui reproduit le mieux la trajectoire du traité avant le traitement. Avec $J$ donneurs dont les séries forment la matrice $\mathbf{Y}^0$ ($T \times J$), le traité $\mathbf{y}^1$ et $T_0$ périodes pré-traitement, les poids résolvent | ||||
| 211 | +\begin{equation}\label{eq:36:synth} | ||||
| 212 | +\hat{\mathbf{w}} = \argmin_{\mathbf{w}} \sum_{t = 1}^{T_0}\Big(y^1_t - \sum_{j=1}^{J} w_j\, Y^0_{jt}\Big)^2 \quad \text{sous } w_j \geq 0,\ \sum_j w_j = 1 , | ||||
| 213 | +\end{equation} | ||||
| 214 | +et l'effet à la période $t > T_0$ est l'écart $y^1_t - \sum_j \hat w_j Y^0_{jt}$. Les deux contraintes sont la substance de la méthode : la positivité et la somme unitaire interdisent l'extrapolation, de sorte que le contrefactuel reste à l'intérieur de l'enveloppe des trajectoires observées et que les poids se lisent comme la composition d'un portefeuille de témoins, interprétable et discutable. La version originale ajoute des prédicteurs (caractéristiques moyennes pré-traitement) à l'ajustement ; la version réduite à la trajectoire suffit lorsque $T_0$ est long, ce qui est notre cas avec 26 trimestres. Lorsque les niveaux des unités diffèrent fortement, comme les revenus d'immeubles de 6 et de 72 logements, on ajuste les séries centrées sur leur moyenne pré-traitement, ce qui revient à ajouter une constante au modèle et à ne demander aux donneurs que de reproduire la \emph{forme} de la trajectoire. | ||||
| 215 | + | ||||
| 216 | +L'inférence ne passe pas par une erreur-type classique mais par des \motcle{placebos dans l'espace} : on applique la méthode à chaque donneur comme s'il avait été traité à la même date, et l'on compare l'écart post-traitement du vrai traité à la distribution des écarts obtenus pour les donneurs. La statistique usuelle est le rapport de l'erreur quadratique moyenne post-traitement à celle de la période pré-traitement (RMSPE), qui pénalise les unités mal ajustées avant le traitement ; si le traité a le plus grand rapport parmi $J + 1$ unités, la valeur $p$ de permutation est $1/(J + 1)$. La méthode exige un bassin de donneurs qui ne soient pas eux-mêmes affectés par le traitement, directement ou par débordement, et dont l'enveloppe contienne le traité ; un ajustement pré-traitement médiocre, visible au RMSPE, est le premier signe que l'exercice n'est pas fiable. | ||||
added
verification/chapters/ch35.md
+39 −0
@@ -0,0 +1,39 @@ | |||||
| 1 | +# Chapitre 35 — Indices immobiliers et ventes répétées : bilan de rédaction (2026-10-31) | ||||
| 2 | + | ||||
| 3 | +## Compteurs | ||||
| 4 | +- Prose : ≈ 13 700 mots (regex de `tools/check_manuscript.py` sur `manuscript/chapters/ch35.tex`, tableaux compris) ; 39 pages compilées (chapitre + solutions + bibliographie du chapitre). | ||||
| 5 | +- Figures : 5 PDF Matplotlib (`ch35-fig-indices-compares`, `-biais-mediane`, `-poids-case-shiller`, `-revision-filtre` : synthétiques, cas 1 + reventes simulées, graine 20261031 ; `ch35-fig-ipln-variation` : réelle, StatCan 18-10-0205-01), produites par `analysis/python/figures/ch35_figures.py`. | ||||
| 6 | +- Tableaux : 8 (taxonomie des indices ; indices canadiens/québécois ; jeu de reventes ; six indices par trimestre ; précision vs vérité ; deuxième étape de Case–Shiller ; ajustement de G0404 selon l'indice ; sensibilité). | ||||
| 7 | +- Équations numérotées : 12 (définition de l'indice, décomposition de la moyenne géométrique, time dummy et indice, chaînage, imputation, BMN et sa forme fermée, variance/poids/MCP de Case–Shiller, SPAR) ; 1 définition, 2 propositions avec démonstration (équivalence imputation–indicatrices ; propriétés de BMN) ; 1 exemple intégral en sept étapes. | ||||
| 8 | +- Exercices : 8 (niveaux 1, 1, 2, 2, 2, 3, 3, 3) ; solutions détaillées dans `solutions/ch35.tex`, chiffres testés (`test_solutions_exercices`). | ||||
| 9 | +- Encadrés : objectifs, synthetique, exemple, quebec (indices et évaluation foncière), pratique, erreurs (8), limites (7), synthese (7). | ||||
| 10 | +- Citations : 27 clés, toutes présentes dans `references/library.bib` ; aucune nouvelle clé citée (deux nouvelles sources dans `lib-ch35.bib`, données en toutes lettres dans deux notes de bas de page). | ||||
| 11 | + | ||||
| 12 | +## Contrôles | ||||
| 13 | +- `tools/compile_chapter.sh 35` → `OK ch35 : 39 pages, 0 references/citations non definies, 2 overfull hbox` (1,5 pt dans le tableau des reventes ; 1,2 pt dans une entrée de bibliographie Eurostat, hors chapitre). | ||||
| 14 | +- `python3 -m pytest -q analysis/python/tests/test_ch35.py` → 10 passed ; `test_ch18.py` et `test_hedonique.py` toujours verts (bibliothèque `traite/` inchangée). | ||||
| 15 | +- `python3 tools/check_manuscript.py --no-log` : seuls signalements imputables au ch. 35 = les 5 figures « non inscrites dans verification/figures.csv » (global) — attendu, règle de collision : elles sont inscrites dans `verification/chapters/ch35-figures.csv`, à fusionner par l'orchestrateur. | ||||
| 16 | +- PDF inspecté (planches 45 dpi de toutes les pages + pages 4-5, 7, 16, 18-25 à 70 dpi) : tableaux dans la justification, figures lisibles, légendes complètes ; quelques blancs de placement de flottants (p. 22-24) sans débordement. | ||||
| 17 | +- Convention `\cref` sans article respectée ; labels à deux chiffres (`eq:35:*`, `tab:35:*`, `fig:35:*`, `sec:35:*`, `ex:35:*`). | ||||
| 18 | + | ||||
| 19 | +## Bibliothèque et cohérence inter-chapitres | ||||
| 20 | +- `traite.hedonique` (`indice_dummies_temps`, `ventes_repetees_bmn`, `ventes_repetees_case_shiller`, `mco`) et `traite.cas1` utilisés tels quels, non modifiés. Le script réutilise `ch18_hedonique.trimestre` et `matrice_trimestres` (indicatrices trimestrielles du ch. 18) : indice 2026T3 = 122,04 identique au ch. 18 ; ajustement de G0404 par les indices = 44 760 $ et par la tendance = 28 774 $ (ch. 18, ex. 18.8) reproduits (28 733 $ avec les 15,2 mois exacts). | ||||
| 21 | +- Reventes synthétiques : 220 paires dérivées des 600 ventes (p = 0,60 ; 15 % de reventes rapides 3–9 mois à prime N(0,12 ; 0,04) ; δ² = 0,0004/mois ; σ = 0,085), générées dans le script (pas de nouveau CSV dans `data/synthetic/`). À inscrire dans `data/synthetic/README.md` si l'orchestrateur le souhaite. | ||||
| 22 | +- Résultats clés : médiane EAM 10,97 pts (hausse 28,6 % vs vérité 16,4 %) ; hédonique 2,81 ; chaîné 4,01 ; BMN 3,02 ; CS 2,90 ; SPAR 1,26 ; largeur IC finale 7,5 % (hédonique) vs 20,8 % (BMN). Révision BMN 2025T2 : 116,39 → 113,42. Ajustement de G0404 : de 26 575 $ (SPAR) à 44 760 $ (hédonique). | ||||
| 23 | + | ||||
| 24 | +## Points non vérifiés ou partiellement vérifiés (voir ch35-claims.csv) | ||||
| 25 | +1. Méthodologie Teranet–BN : page « Our Methodology » lue (certificat TLS invalide, lecture non vérifiée) ; estimateur exact, seuils des filtres et politique de révision non publiés sur la page (CLM-35-01). | ||||
| 26 | +2. IPLN : fiche IMDB 2310 lue ; méthodologie détaillée 62F0014M2022003 non consultée (CLM-35-03). | ||||
| 27 | +3. Méthodologie S&P CoreLogic Case–Shiller : accès refusé (403) ; non citée (CLM-35-10, non_verifie). | ||||
| 28 | +4. Ordre de grandeur de la dépréciation nette (Harding, Rosenthal et Sirmans 2007 : ≈ 2–3 %/an) cité de mémoire de l'article (CLM-35-08, partiellement_verifie) ; sens général de Silverstein (2014) et de Shiller (2015) (CLM-35-09, CLM-35-11). | ||||
| 29 | +5. Hypothèses du jeu de reventes : pédagogiques, déclarées (CLM-35-12). | ||||
| 30 | + | ||||
| 31 | +## Nouvelles sources (`references/lib-ch35.bib`, `ch35-registry.csv`) | ||||
| 32 | +`teranetMethodologie2026` (SRC-35-001), `statcaniplnimdb2310` (SRC-35-002), vérifiées par lecture directe le 2026-10-31 ; SRC-35-003 (S&P) inaccessible. Après fusion dans `library.bib`, remplacer les deux notes de bas de page de la §35.5 par `\parencite{}`. | ||||
| 33 | + | ||||
| 34 | +## Suggestions pour l'harmonisation | ||||
| 35 | +- Ch. 17 (§ conditions du marché) et ch. 20 : citer la fourchette d'ajustement de G0404 selon l'indice (26 575 $ à 44 760 $, 5,2 % à 8,8 %) comme composante de l'incertitude. | ||||
| 36 | +- Ch. 18 : la valeur « 28 774 $ » (tendance, 15,2 mois arrondis) et « 28 733 $ » (15,2 mois exacts) coexistent ; harmoniser sur l'une des deux. | ||||
| 37 | +- Ch. 13 et ch. 04 : les descriptions de Teranet–BN peuvent renvoyer aux citations de méthodologie de la §35.5 et à la note sur la révision. | ||||
| 38 | +- Glossaire : `\motcle` posés pour indice de prix à qualité constante, ajustement de conditions du marché, hédonique, ventes répétées, rapport prix sur valeur (SPAR), prix médian, médiane stratifiée, indice à indicatrices temporelles, indice chaîné, imputation, Case–Shiller pondéré, indice Teranet–Banque Nationale, Indice des prix des logements neufs, médianes. | ||||
| 39 | +- `data/synthetic/README.md` : ajouter une ligne pour les reventes synthétiques du ch. 35 (générées à la volée, pas de fichier). | ||||
| 40 | |||||