-
Notifications
You must be signed in to change notification settings - Fork 0
R pipeline
De actieve keten van ruwe leveringen naar hedonische schattingen, in R/
(R 4.5.x, data.table + haven + fixest). Vervangt de
Stata-flow.
R/README.md in de repo is de gedetailleerde referentie — inclusief de volledige
lijst bewuste afwijkingen van de oude Stata-flow. Deze pagina geeft het overzicht
en de dingen die je vooral moet weten als je de keten opnieuw draait.
| stap | script | doet | output |
|---|---|---|---|
| 1 | 01_merge_sources.R |
twee leveringen harmoniseren: oud NVM-format (1985–2021) + Brainbay (2000–2023) | 01_merged_<tag>.rds |
| 2 | 02_clean.R |
filters, adresopschoning, ontdubbeling van de overlap 2000–2021, huis-id's voor repeat sales | 02_cleaned_<tag>.rds |
| 3 | 03_export_geocode.R |
slank adresbestand voor de geocoder | NVM_adressen_<tag>.csv |
| — | GeoDMS (BAG-Tools) | geocoderen: adres → x/y + BAG-attributen | ..._Geocoded.csv |
| 4a | 04a_merge_geocode.R |
terugkoppelen op geocode_id, filteren op matchkwaliteit, BAG-sentinels → NA, bouwjaar consolideren |
04a_geocoded_<tag>.rds |
| 3b | 03b_export_spatial_input.R |
slim-CSV voor de GeoDMS-spatial-pass | ..._<tag>_slim.csv |
| — | GeoDMS (deze repo) | spatial variabelen | ..._<tag>_slim_spatial.csv |
| 4 | 04_import_spatial.R |
spatial vars terugkoppelen op obsid, schonen, afgeleiden (lnprice, bouwperiode, …) |
04_analysis_<variant>_<tag>.rds |
| 5 | 05_estimate.R |
OLS per WP4-type met HC1-robuuste SE, spec-gestuurd | Estimates_<tag>_<spec>_<type>.csv |
| 6 | 06_volatility.R |
lokale prijsvolatiliteit per regio | Volatility_<tag>_<korrel>.csv |
Draaien:
Rscript R/run_all.R # 1 t/m 3
Rscript R/run_all.R 4a 3b # na de geocodeerronde
Rscript R/run_all.R 4 5 # na de spatial-pass
Rscript R/run_all.R 6 # volatiliteit (los)
Alle paden en parameters staan in R/00_config.R. Dat script zoekt de
OneDrive-map machine-onafhankelijk op en leidt %LocalDataDir% /
%SourceDataDir% uit de GeoDMS-registerinstellingen af.
-
Geocoderen. Sleutel is
geocode_id.04adoet een integriteitscheck: wijzigt de schoningslogica, dan verschuiven de id's en moet je opnieuw geocoderen onder een nieuwe tag. Default gaan alleen matches t/m PC6-niveau mee (cfg$geocode_max_niveau = 13). -
Spatial vars. Sleutel is
obsid(=trans_id).cfg$tagin R ennvm_filedateinmain.dmsmoeten dezelfde waarde hebben — anders koppelt stap 4 tegen de verkeerde levering aan.
Een spec bundelt: naam, invoervariant, locatievariabelen, sampleperiode en
wel/niet limit. Actief per default: redev en rs_groen.
Het model zelf (semi-logaritmisch, per WP4-type, met HC1-robuuste SE) en de inhoudelijke onderbouwing van de variabelenkeuze staan beschreven op Hedonisch woningprijsmodel in de RSopen-wiki.
| spec | wat |
|---|---|
redev |
modelset van het densification-paper: lntt_500k_2024, lntt_ovknoop, uai_2012, plus d_hoogte_onbekend bij appartementen |
rs_groen |
redev + fr_natuur_tot2500m + fr_water_500m — de set die de RuimteScanner leest (waardering groen), zie Koppeling met RuimteScanner
|
rsval, rsval_limit
|
reproductie van de Stata-run 20251024; bevroren ijkpunt voor 99_validate_vs_stata.R
|
rs_groen_donut, rs_groen_vol, rs_groen_g500, rs_groen_g100
|
groensensitiviteiten |
redev_tt2020 |
oude 500m-reistijd i.p.v. de 2024-versie |
redev_limit |
alleen lnsize als objectkenmerk; geen actieve afnemer meer |
Sensitiviteit draaien: specs_actief <- "redev_tt2020" zetten vóór
source("05_estimate.R").
Twee vastgelegde keuzes die je niet per ongeluk moet terugdraaien:
-
tt_500k2024 boven 2020 (2026-07-14). De 2024-versie is native 100m; de 2020-versie werd van 500m opgerekt. 2020 fit voor stedelijke types iets beter (R² ~+0.01), maar de 2024-bron is beter. Bewuste keuze voor de bron. - Groen beperkt tot twee termen (2026-07-17). De 500m-binnenringfracties (stadsgroen, landbouw, overiggroen, natuur-500) kregen negatieve of wisselende tekens bij stedelijke typen: ze meten buurtopbouw, geen groenwaardering. Ze blijven beschikbaar als sensitiviteit maar horen niet in de indicator.
term;estimate;std_error;t_value;p_value;ci_low;ci_high, met termnamen die
direct geldige GeoDMS-itemnamen zijn: lnsize, lnlotsize, nrooms,
d_maintgood, d_highrise, bouwperiode_1926_1950 …, trans_year_2012 …,
lntt_500k, lntt_ovknoop, uai, constant. Geen parmest-namen als
1.construction_period meer.
Referentieniveaus staan er expliciet in, met coëfficiënt 0
(bouwperiode_va2002 en het eerste sample-jaar). fixest laat basiscategorieën
weg, maar de GeoDMS-afnemers zoeken elk kenmerk op met rlookup — een
ontbrekende basiscategorie gaf daar een null-coëfficiënt en dus een null-prijs.
Dit is het equivalent van Stata's allbaselevels.
Per run komt er ook een Estimates_<tag>_modelinfo.csv bij (n, R², spec, datum).
Aparte deliverable voor het Redevelopment-paper: lokale prijsonzekerheid als frictievariabele in een real-options-model.
Werkwijze: hedonisch model per woningtype zonder jaardummies en zonder
locatietermen — de nationale trend en het lokale prijsniveau horen juist in het
residu. Daarna is index_rt het gemiddelde residu per regio × jaar (minimaal 25
transacties), g_rt de jaar-op-jaar-groei, en vol_r de sd daarvan over
minimaal 10 groeijaren.
Drie korrels: gemeente_code (CBS 2024), pc4 en grid5km (5 km RD-cel;
vintage-vrij te koppelen aan elke afnemer met coördinaten).
Naast de statische reeks een rolling variant per besluitjaar:
Volatility_rolling_<tag>_<korrel>.csv met vol_roll5 (sd over de vijf
groeijaren t/m J-1) en g_roll5 (het gemiddelde over hetzelfde venster). Beide
zijn per constructie gelagd, dus bruikbaar als tijdvariërende verklaring in een
hazard-model. g_roll5 zit erbij omdat zowel onzekerheid als verwachte groei de
optiewaarde van wachten verhogen (Capozza & Li) — een volatiliteitscoëfficiënt
zonder groei-control is potentieel vertekend.
-
98_validate_cleaning.R— vergelijking van stap 1–2 met de oude geschoonde set (aantallen per jaar/type). -
99_validate_vs_stata.R— zelfde input (legacy spatial-CSV 20251024), zelfde spec ⇒ coëfficiënten moeten samenvallen metEstimates_20251024_*.csv. Hiervoor bestaat delegacy-variant van stap 4, die de Stata-compatibiliteit (onbekende hoogte telt als hoogbouw) vastpint.
GeoDMS
R
Afnemers
Legacy