{
  "version": "xarts.measurement-diagnostics/1",
  "family": "measurement-diagnostics",
  "provenance": {
    "legacyId": "residuals-vs-fitted"
  },
  "document": {
    "header": {
      "title": "El tasador automático no falla al azar: falla por tramo de precio",
      "subtitle": "48 tasaciones cerradas de vivienda usada en Madrid · residuo frente al valor que el propio modelo predijo, en miles de euros"
    },
    "footer": {
      "source": "Datos de demostración de la receta residuals-vs-fitted. Los valores ajustados vienen del modelo; el residuo, el suavizado lowess y la dispersión los calcula la propia figura sobre estas 48 filas.",
      "notes": "El suavizado es un lowess robusto (dos iteraciones bicuadradas) con ventana del 60 % de las observaciones. La curvatura se mantiene con cualquier ventana entre el 40 % y el 75 %, así que no es un artefacto del suavizado.",
      "alt": "Nube de 48 puntos alrededor de una línea horizontal en el cero. La curva suavizada arranca en +17 mil euros en las tasaciones baratas, baja hasta -15 en la franja de 350 a 450 mil, y sube hasta +38 en las más caras. La nube se abre a medida que crece el valor ajustado."
    },
    "spacing": {
      "horizontalPadding": 24,
      "topPadding": 22,
      "bottomPadding": 24,
      "minimumTextGap": 6
    }
  },
  "presentation": {
    "theme": "anlak",
    "dimensions": {
      "preset": "media-pagina",
      "width": 940,
      "height": 587
    },
    "locale": "es-ES",
    "fonts": "reference",
    "surface": "theme",
    "framePadding": 24
  },
  "output": {
    "filename": "residuals-vs-fitted",
    "embedSpec": true,
    "geometryDecimals": 2
  },
  "operation": "residuals-vs-fitted",
  "data": {
    "kind": "observed-and-fitted",
    "unit": "k€",
    "rows": [
      {
        "id": "observation-1",
        "label": "Villa de Vallecas · 62 m²",
        "fitted": 112,
        "observed": 129
      },
      {
        "id": "observation-2",
        "label": "Usera · 58 m²",
        "fitted": 118,
        "observed": 134
      },
      {
        "id": "observation-3",
        "label": "Carabanchel · 71 m²",
        "fitted": 127,
        "observed": 132.1
      },
      {
        "id": "observation-4",
        "label": "Puente de Vallecas · 55 m²",
        "fitted": 131,
        "observed": 154.4
      },
      {
        "id": "observation-5",
        "label": "Villaverde · 66 m²",
        "fitted": 138,
        "observed": 142.5
      },
      {
        "id": "observation-6",
        "label": "Carabanchel · 84 m²",
        "fitted": 146,
        "observed": 170.2
      },
      {
        "id": "observation-7",
        "label": "Usera · 77 m²",
        "fitted": 152,
        "observed": 159.7
      },
      {
        "id": "observation-8",
        "label": "Latina · 69 m²",
        "fitted": 159,
        "observed": 182.7
      },
      {
        "id": "observation-9",
        "label": "Puente de Vallecas · 90 m²",
        "fitted": 166,
        "observed": 177.6
      },
      {
        "id": "observation-10",
        "label": "Villaverde · 81 m²",
        "fitted": 172,
        "observed": 167.8
      },
      {
        "id": "observation-11",
        "label": "Latina · 95 m²",
        "fitted": 181,
        "observed": 192.3
      },
      {
        "id": "observation-12",
        "label": "Ciudad Lineal · 74 m²",
        "fitted": 188,
        "observed": 203.6
      },
      {
        "id": "observation-13",
        "label": "San Blas · 88 m²",
        "fitted": 196,
        "observed": 210.9
      },
      {
        "id": "observation-14",
        "label": "Latina · 102 m²",
        "fitted": 204,
        "observed": 188.8
      },
      {
        "id": "observation-15",
        "label": "Ciudad Lineal · 91 m²",
        "fitted": 212,
        "observed": 206.9
      },
      {
        "id": "observation-16",
        "label": "Hortaleza · 79 m²",
        "fitted": 219,
        "observed": 212.9
      },
      {
        "id": "observation-17",
        "label": "Arganzuela · 68 m²",
        "fitted": 228,
        "observed": 217.5
      },
      {
        "id": "observation-18",
        "label": "San Blas · 106 m²",
        "fitted": 236,
        "observed": 247.8
      },
      {
        "id": "observation-19",
        "label": "Hortaleza · 97 m²",
        "fitted": 245,
        "observed": 249.8
      },
      {
        "id": "observation-20",
        "label": "Arganzuela · 83 m²",
        "fitted": 253,
        "observed": 252.8
      },
      {
        "id": "observation-21",
        "label": "Tetuán · 76 m²",
        "fitted": 262,
        "observed": 267.6
      },
      {
        "id": "observation-22",
        "label": "Moncloa-Aravaca · 88 m²",
        "fitted": 271,
        "observed": 257.1
      },
      {
        "id": "observation-23",
        "label": "Arganzuela · 99 m²",
        "fitted": 281,
        "observed": 304.4
      },
      {
        "id": "observation-24",
        "label": "Tetuán · 94 m²",
        "fitted": 290,
        "observed": 298.9
      },
      {
        "id": "observation-25",
        "label": "Chamberí · 72 m²",
        "fitted": 300,
        "observed": 280.3
      },
      {
        "id": "observation-26",
        "label": "Retiro · 86 m²",
        "fitted": 311,
        "observed": 278.8
      },
      {
        "id": "observation-27",
        "label": "Moncloa-Aravaca · 110 m²",
        "fitted": 322,
        "observed": 282.5
      },
      {
        "id": "observation-28",
        "label": "Chamberí · 91 m²",
        "fitted": 333,
        "observed": 308
      },
      {
        "id": "observation-29",
        "label": "Retiro · 104 m²",
        "fitted": 345,
        "observed": 342.5
      },
      {
        "id": "observation-30",
        "label": "Chamartín · 97 m²",
        "fitted": 357,
        "observed": 323.8
      },
      {
        "id": "observation-31",
        "label": "Chamberí · 118 m²",
        "fitted": 370,
        "observed": 374.4
      },
      {
        "id": "observation-32",
        "label": "Salamanca · 89 m²",
        "fitted": 384,
        "observed": 368
      },
      {
        "id": "observation-33",
        "label": "Chamartín · 126 m²",
        "fitted": 398,
        "observed": 362.3
      },
      {
        "id": "observation-34",
        "label": "Retiro · 133 m²",
        "fitted": 414,
        "observed": 391.3
      },
      {
        "id": "observation-35",
        "label": "Salamanca · 112 m²",
        "fitted": 431,
        "observed": 412.5
      },
      {
        "id": "observation-36",
        "label": "Chamartín · 141 m²",
        "fitted": 449,
        "observed": 448.2
      },
      {
        "id": "observation-37",
        "label": "Salamanca · 128 m²",
        "fitted": 468,
        "observed": 455.1
      },
      {
        "id": "observation-38",
        "label": "Chamberí · 152 m²",
        "fitted": 486,
        "observed": 468.5
      },
      {
        "id": "observation-39",
        "label": "Chamartín · 158 m²",
        "fitted": 505,
        "observed": 514.4
      },
      {
        "id": "observation-40",
        "label": "Salamanca · 147 m²",
        "fitted": 524,
        "observed": 520
      },
      {
        "id": "observation-41",
        "label": "Retiro · 166 m²",
        "fitted": 544,
        "observed": 492.4
      },
      {
        "id": "observation-42",
        "label": "Chamartín · 165 m²",
        "fitted": 565,
        "observed": 563.6
      },
      {
        "id": "observation-43",
        "label": "Salamanca · 172 m²",
        "fitted": 587,
        "observed": 552.4
      },
      {
        "id": "observation-44",
        "label": "Chamberí · 181 m²",
        "fitted": 604,
        "observed": 604.1
      },
      {
        "id": "observation-45",
        "label": "Salamanca · 178 m²",
        "fitted": 622,
        "observed": 650.5
      },
      {
        "id": "observation-46",
        "label": "Chamartín · 190 m²",
        "fitted": 641,
        "observed": 666.1
      },
      {
        "id": "observation-47",
        "label": "Salamanca · 196 m²",
        "fitted": 662,
        "observed": 725.5
      },
      {
        "id": "observation-48",
        "label": "Salamanca · 214 m²",
        "fitted": 684,
        "observed": 746.4
      }
    ]
  },
  "calculation": {
    "difference": "observed-minus-fitted",
    "dispersion": "root-mean-square",
    "smooth": {
      "method": "lowess",
      "span": 0.6,
      "robustIterations": 2,
      "minimumWindow": 4,
      "singularTolerance": 1e-9,
      "robustMedianMultiplier": 6
    },
    "highlightCount": 3,
    "xPadding": 0.05,
    "yPadding": 0.08
  },
  "layout": {
    "margin": {
      "top": 24,
      "right": 20,
      "bottom": 56,
      "left": 48
    },
    "xTicks": 6,
    "yTicks": 5,
    "axisInkPadding": 0,
    "exportTextMeasurement": "glyph-advances",
    "axisMeasurementNumerals": "proportional-nums",
    "maxAxisHeightRatio": 0.28,
    "minimumAxisHeight": 48,
    "labelGap": 5,
    "noteGap": 6,
    "maxLabelWidth": 170
  },
  "marks": {
    "point": {
      "color": "series.blue",
      "radius": 3.5,
      "opacity": 0.72
    },
    "highlight": {
      "color": "textPrimary",
      "radius": 5,
      "width": 1.5
    },
    "smooth": {
      "color": "series.red",
      "width": 2,
      "dash": ""
    },
    "zero": {
      "color": "textSecondary",
      "width": 1,
      "dash": ""
    }
  },
  "labels": {
    "x": "Valor ajustado (k€)",
    "y": "Residuo (k€)",
    "formula": "residuo = observado − ajustado",
    "smooth": "suavizado lowess",
    "smoothNote": "lowess con ventana del {span} ({window} obs. por punto)",
    "noSmoothNote": "sin suavizado: la ventana sólo alcanza {window} observaciones y una curva así trazaría la nube en vez de resumirla",
    "disabledSmoothNote": "sin suavizado: desactivado en la spec",
    "dispersion": "dispersión",
    "nameFontSize": 10,
    "noteFontSize": 11,
    "nameColor": "textPrimary",
    "noteColor": "textMuted",
    "annotationFontSize": 12
  },
  "interaction": {
    "tooltip": true
  },
  "annotations": []
}
