Onze populatie (52.823 woningen)
Dit zijn de huurwoningen die WoonBusters tussen 19 december 2025 en vandaag heeft gescraapt van ~1.150 verschillende verhuurder-merken/agentschappen op de gescraapte sites en die de basisfilters (oppervlakte > 0, kale huur ≥ €50, woningtype gevuld) passeerden. De Probabilistische huurcheck heeft elke woning één keer gescoord - een waarderingsmoment, niet een live signaal.
Verhuurde woningen blijven in onze populatie zitten omdat het verhaal "welke huurprijzen zien Nederlandse huurzoekers" draait om de advertentieprijs op het moment van plaatsing - of die woning nog beschikbaar is verandert daar niets aan. Het "57.7% te duur" cijfer is dus een schatting van wat huurders zouden tegenkomen op de markt sinds december 2025, niet alleen wat er vandaag te huur staat.
Wie krijgt een huurcheck-verdict? 22.614 van 52.823 listings (42.8%)
Een listing komt alleen in aanmerking voor de Probabilistische huurcheck als alle drie de volgende gelden:
- Geverifieerd huisnummer. Postcode + huisnummer komen uit de listing en zijn gevalideerd tegen BAG. Coördinaten zonder huisnummer (HA, Vesteda) zijn niet genoeg - die wijzen het juiste gebouw aan, maar in een complex met meerdere units kunnen we niet de juiste woning kiezen.
- Kadaster WOZ-lookup gelukt voor de exacte
nummeraanduiding_id. We accepteren géén schatting via stad × m², wijk-gemiddelde of gebouw-mediaan - al die plaatsvervangers hebben een mediane fout van ≥30% versus de werkelijke WOZ. - Niet wettelijk uitgesloten van WWS/WWSO. Specifiek gefilterd zijn: contract_type="short_stay" (hospitality/expat-stays ≤6 mnd, géén huurovereenkomst → buiten WWS), contract_type="anti_squat" / property_type="anti-kraak" (bruikleenovereenkomst onder leegstandsbeheer - géén huurovereenkomst), en contract_term_months ≤ 6 (zekerheid dat het een verblijfsrecht is). Totaal uitgefilterd: 32 listings.
Eerlijke beperking: contract_term_months is maar voor 0,13% van Tier 1 geparseerd (de meeste sites vermelden geen contractduur in de advertentie). De filter "≤6 mnd" werkt daardoor effectief alleen via expliciete contract_type="short_stay" tags. Een onbekend klein deel van Tier 1 zou juridisch alsnog short-stay (verblijfsrecht) kunnen zijn waar dat tag-veld leeg is gebleven; we erkennen die leak maar kunnen hem zonder LLM-re-extractie van advertentietekst niet dichten.
De rest van de populatie (57.2%) verdeelt zich over drie redenen-tot-uitsluiting:
Verified huisnummer + Kadaster WOZ + standaard huurovereenkomst (geen short-stay, geen anti-kraak, geen contractduur ≤6 mnd). Plus EP-online energielabel + BAG bouwjaar als deterministische input.
Bron geeft wel coördinaten (gevalideerd: 100% gebouw-precies, mediaan 2,2 m van het echte BAG-pand) maar geen adrestekst. In een appartementencomplex met meerdere units kan reverse-geocoding niet betrouwbaar de juiste woning kiezen - WOZ-fout heeft mediaan 5,6%, p90 59%, individuele uitschieters tot 200%+. Typisch HousingAnywhere, Vesteda, deel Kamernet/VBT.
Postcode + CBS wijk, maar geen huisnummer. Een wijk-gemiddelde WOZ wijkt 30%+ af van de echte waarde. Geen verdict.
Alleen postcode (n=2.503) of contracten buiten WWS-regime (n=32: short_stay + anti-kraak). Geen verdict mogelijk.
Voor de live /huurcheck tool: u voert daar uw eigen adres in, dus de tool werkt altijd op Tier 1 niveau.
Drie soorten data
We gebruiken geen "best-effort schattingen met bekende bias" voor populatie-statistieken. Listings zonder geverifieerd huisnummer krijgen geen verdict; en waar een veld ontbreekt (bijv. energy_label bij listings die niet in EP-online staan) sampelen we per Monte Carlo iteratie uit de empirische verdeling P(label | bouwjaar, dwelling), zodat het 90% betrouwbaarheidsinterval de onzekerheid eerlijk weergeeft in plaats van te leunen op één puntschatting met bias.
Komt rechtstreeks uit de bron (listing, BAG, Kadaster, EP-online, Rijksmonumentenregister). Geen schatting, geen sampling.
Als de listing het veld heeft, gebruiken we dat direct. Anders trekken we per Monte Carlo iteratie uit de cohort-verdeling - geen biased puntenschatting.
Niet bekend van de listing - we trekken een waarde uit de Probabilistische priors (gefit op 9.359 Funda-trainingsrows). Komt met een betrouwbaarheidsinterval dat de echte onzekerheid weergeeft.
Wat doen we per WWS-rubriek?
Het WWS Beleidsboek 2026 heeft 11 hoofdrubrieken (1 t/m 11) plus rubriek 3b Koeling (toegevoegd 1-7-2024). Hieronder eerst de exacte mapping van WWS-items naar onze features, dan per rubriek de verdeling van de databronnen.
| Rubriek | WWS-input(s) | Items in WWS | Wij dekken | Hoe |
|---|---|---|---|---|
| 1 - Oppervlakte vertrekken | m² woonkamer + slaapkamers | 1 | 1/1 | area_m2 deterministisch |
| 2 - Overige ruimten | m² hal/keuken/berging | 1 | ~0.5/1 | Gefold in area_m2 totaal - Funda splitst niet |
| 3 - Verwarming | type/vertrek + warmteterugwinning | 2 | 2/2 | heating_points_per_room, has_heat_recovery - gesampled |
| 3b - Koeling | airco per vertrek (max 2 pt) | 1 | 0/1 | Niet geparseerd (max impact ~€10/maand) - zie sectie hieronder |
| 4 - Sanitair | badkamers, toiletten, bad/douche/wastafels, bidet, urinoir, vloerverwarming | 10 | 10/10 | Alle 10 gesampled uit priors |
| 5 - Energieprestatie | energielabel (of bouwjaar+type fallback) | 1 | 1/1 | EP-online direct (59.5%) of per-iter sampling uit empirische verdeling P(label|jaar,type) (40.5%) |
| 6 - Buitenruimte | type, tuin, balkon, dakterras + afmetingen | 4 | 4/4* | outdoor_type, has_tuin/balkon/dakterras gesampled. *Afmetingen: schat als gemiddelde - kleine systematische onderschatting |
| 7 - Berging | aanwezig + type (privé/gedeeld) | 2 | 2/2 | has_storage, storage_type gesampled |
| 8 - WOZ-waarde | vastgestelde WOZ + WOZ/m² | 1 | 1/1 | Kadaster lookup voor Tier 1; Tier 2/3 niet gescoord |
| 9 - Gemeenschappelijke voorzieningen | gedeelde fietsenstalling, gemeenschappelijke tuin, wasruimte | ~3 | 0/~3 | Niet apart gemodelleerd. Gemeten in onze Funda-trainingset (n=11.917): wasruimte 13,4%, gem. fietsenstalling/berging 6,9%, gem. tuin 1,8% (boven-grenzen - niet alle vermeldingen zijn echt "gedeeld"). Voor listings met daadwerkelijk shared facilities onderschatten we rubriek 9 met ~2-5 pt; voor de meerderheid is 0 pt correct. Verwachte populatie-bias: ~−0,5 tot −1 pt onderschatting gemiddeld. |
| 10 - Privé parkeergelegenheid | afsluitbare garage (12 pt), open privé (6 pt), vergunning (2 pt) | 3 | 2/3 | has_private_parking, has_parking_garage als hard filter + sample-feature. Vergunninghouderparkeren (2 pt) niet apart gemodelleerd - listings zonder privé-parking krijgen 0 pt voor rubriek 10 (we hebben geen openbaar register van vergunningsgebieden per BAG-id; default-toekenning zou rurale listings over-crediten waar geen vergunningsysteem bestaat). Beleidsboek 2026 Bijlage I onderdeel 9. |
| 11 - Bijzondere voorzieningen | lift, alarm, video deurbel, EV-laadpunt, woonvoorzieningen gehandicapten | ~6 | 1/~6 | Alleen has_lift gesampled. Overige (alarm, EV, video deurbel) zeldzaam (<1%) en max 1-2 pt elk - bewust weggelaten, accepteren ~2 pt onderschatting voor zeldzame luxe-voorzieningen |
| (geen rubriek) Monument/nieuwbouw-opslag | rijksmonument (+35%), gemeentelijk (+15%), beschermd stadsgezicht (+5%), nieuwbouw (+10%), zorgwoning (+35% op punten) | 5 | 1/5 | Alleen rijksmonument via RCE LOD (+35% rent surcharge). Nieuwbouw +10%: kunnen we afleiden uit (bouwjaar ≥ 2024 + first_seen_at binnen ~24 mnd) - staat op de roadmap, raakt <1% van Tier 1 (201/22.745 listings). Gemeentelijk/provinciaal monument, stadsgezicht, zorgwoning: niet gemodelleerd - geen openbare landelijke registers met BAG-koppeling. |
| Totaal | 36 | 25–26 / 36 (~71%) | De overige ~10 items hebben elk <3 pt impact (~€15/maand) en zijn óf niet landelijk geregistreerd óf statistisch te zeldzaam om stabiel te sampelen | |
Iedere rubriek toont hieronder de verdeling van databronnen: direct uit listing/Kadaster (groen) of gesampled uit priors (oranje). Geen rubriek leunt op een puntenschatting met bekende bias.
Per-input dekking op listings
Hoe vaak hebben we elk gegeven direct van de listing? Bij ontbreken: zie de bron-tag voor wat we doen.
| Gegeven | Live % | Dekking | Bron |
|---|---|---|---|
| area_m2 (oppervlakte) | 100.0% | Deterministisch | |
| price_eur (kale huur) | 100.0% | Deterministisch | |
| city | 99.9% | Deterministisch | |
| postal_code | 88.3% | Deterministisch | |
| address met huisnummer | 72.5% | Deterministisch | |
| bouwjaar | 60.6% | Hybride | |
| energy_label | 59.4% | Hybride | |
| woz_value (Kadaster) | 68.8% | Deterministisch | |
| cbs_wijk_code | 87.7% | Deterministisch | |
| property_type | 98.0% | Deterministisch | |
| bedrooms | 80.9% | Hybride | |
| has_garden | 27.6% | Hybride | |
| has_balcony | 40.0% | Hybride | |
| parking (lift/garage/spot) | 28.1% | Hybride | |
| service_costs_eur | 28.3% | Deterministisch | |
| is_monument | 1.0% | Deterministisch |
"Hybride" betekent: als de listing het veld heeft → deterministic. Anders → gesampled of geschat. Het exacte gedrag staat in de notes per rubriek.
Toon notes per gegeven ▾
area_m2 (oppervlakte): Vereist; listings zonder oppervlakte worden niet gescoordprice_eur (kale huur): LLM-extractor sluit servicekosten uitcity: Gebruikt voor cohort + WOZ-fallbackpostal_code: Vereist voor Kadaster-lookup + CBS wijkaddress met huisnummer: Vereist voor Kadaster - fallback voor de overige 27.5%bouwjaar: Listing of via BAG; bij ontbreken fallback 1975energy_label: EP-online API; bij ontbreken straat-schattingwoz_value (Kadaster): Kadaster lookup op exact adres (postcode + huisnummer). Listings zonder huisnummer krijgen geen WOZ-schatting en geen verdict.cbs_wijk_code: Auto-enrichment via Polygon-lookupproperty_type: Bepaalt WWS vs WWSO routingbedrooms: Bij ontbreken: schatting area_m2 / 30has_garden: Bekend → deterministic; onbekend → sampledhas_balcony: Idemparking (lift/garage/spot): Bekend → deterministic; onbekend → rent-only sampledservice_costs_eur: Wordt afgetrokken voor kale-huur vergelijkingis_monument: 547 listings gematcht tegen Rijksmonumentenregister (54.930 monumenten geladen via RCE linked open data, 28-04-2026). Rest = default false.
22 sampleable features (priors-zijde)
Voor deze features hebben we geen directe info van de listing. We trekken ze uit empirische verdelingen die we gefit hebben op 9.359 Funda-rows. Het %-cijfer in de tabel is de data-dekking: hoe vaak Funda het veld kent. Bij ontbreken weten we het echt niet (bijv. bij een Funda-row zonder Badkamervoorzieningen-blok kennen we has_bath niet) en filteren we de row uit het cohort voor die specifieke feature.
Voor enkele features (has_tuin, has_balkon, has_dakterras) geldt extra dat Funda het kenmerk alleen op het top-level vermeldt als het er is - afwezigheid is daar positief bewijs van afwezigheid (gedocumenteerd in priors.py als MNAR-normalisatie). De data-dekking voor die rows is dus structureel ~100% (we behandelen ontbreken als "niet aanwezig"), maar we tonen de boven-tabel het werkelijk geparste percentage zodat zichtbaar is welk deel van Funda het veld überhaupt vermeldt.
| Feature | Rubriek | Soort | % Funda | Verdeling |
|---|---|---|---|---|
| num_bathrooms | 4 Sanitair | data-dekking | 88.4% | |
| num_extra_toilets | 4 Sanitair | data-dekking | 88.4% | |
| has_bath | 4 Sanitair | data-dekking | 84.1% | |
| has_shower | 4 Sanitair | data-dekking | 84.1% | |
| has_walk_in_shower | 4 Sanitair | data-dekking | 84.1% | |
| num_sinks | 4 Sanitair | data-dekking | 81.7% | |
| has_dual_sink | 4 Sanitair | data-dekking | 84.1% | |
| has_underfloor_heating_bath | 4 Sanitair | data-dekking | 84.1% | |
| has_bidet | 4 Sanitair | data-dekking | 84.1% | |
| has_urinal | 4 Sanitair | data-dekking | 84.1% | |
| heating_points_per_room | 3 Verwarming | data-dekking | 86.3% | |
| has_heat_recovery | 3 Verwarming | data-dekking | 86.3% | |
| outdoor_type | 6 Buitenruimte | data-dekking | 100.0% | |
| has_tuin | 6 Buitenruimte | data-dekking | 52.3% | |
| has_balkon | 6 Buitenruimte | data-dekking | 41.6% | |
| has_dakterras | 6 Buitenruimte | data-dekking | 41.6% | |
| has_storage | 7 Berging | data-dekking | 56.1% | |
| storage_type | 7 Berging | data-dekking | 56.1% | |
| has_lift | 11 Bijzondere voorzieningen | data-dekking | 81.5% | |
| has_private_parking | 10 Parkeren | data-dekking | 85.7% | |
| has_parking_garage | 10 Parkeren | data-dekking | 85.7% | |
| energy_label | 5 Energie (soft cohort condition) | data-dekking | 92.3% |
Voorbeeld: num_bathrooms 88,4% "data-dekking" betekent dat 88,4% van de quality-filtered rows een waarde heeft voor het aantal badkamers; de overige 11,6% is genuinely unknown en wordt gefilterd uit het cohort op die feature. Voor has_lift 81,5% kennen we per row of er wel of geen lift is in 81,5% van de gevallen - minder dekking dan sanitair omdat lift via een ander Funda-veld komt.
Features die we parsen maar NIET sampelen
Onze parser haalt ~50 features uit Funda. We gebruiken er 22 actief in de Probabilistische sampler (zie boven). De rest valt in 4 categorieën:
Deze sub-types zijn al verwerkt via een aggregaat-feature. Apart sampelen zou dubbeltellen.
has_central_heating → heating_points_per_roomhas_district_heating → idemhas_heat_pump → idemhas_floor_heating → idemhas_double_glazing → energy_labelhas_hr_glass → idemis_fully_insulated → idemhas_floor_insulation → idemhas_roof_insulation → idemhas_wall_insulation → ideminsulation_score → idem (composite)has_french_balkon → has_balkonhas_voortuin / has_zijtuin / has_achtertuin → has_tuinhas_heat_recovery_shower → has_heat_recoverystorage_attached / storage_material → storage_typeDe Beleidsboek 2026 telt deze niet mee voor punten. We parsen ze voor andere features op de site (filtering, weergave) maar niet voor de huurcheck.
has_fiber (glasvezel)has_tv_cablehas_natural_ventilationhas_mechanical_ventilationhas_roller_shutters (rolluiken)has_solar_thermal / has_solar_panelsfloor_number / total_floorsSommige zijn écht zeldzaam (sauna, domotica). Sommige zijn redundant - al verwerkt via een ander feature (paid_parking/permit_parking vallen onder de algemene has_private_parking-flag). Onderstaande percentages zijn gemeten op de WWS-trainbare subset (n=11.917 quality-filtered Funda rows, peildatum 2026-04-29):
has_airco - 3,76% True (445 / 11.917 rows via Funda parsed_features.has_airco). Rubriek 3b (Koeling, sinds 1-7-2024). Maximale impact = 2 pt (1 pt/vertrek, max 2 totaal) ≈ €10/maand. Verwacht populatie-effect: 3,8% × €10 ≈ €0,38/maand gemiddeld; geen materiële verdict-impact. Bewust niet apart gesampled.has_alarm - 0,96% True (113 rows). Rubriek 11, max 1 pt. Te kleine impact om apart te modelleren.has_carport - 0,00% True (0 rows in onze trainingsset). Onze Funda-set is appartementen-zwaar - carports komen nauwelijks voor.has_paid_parking - 22,07% True (2.609 rows). NIET zeldzaam, maar redundant: al gedekt door has_private_parking / has_parking_garage in het puntenmodel (rubriek 10 onderscheidt eigen-vs-publiek-vs-betaald via die twee booleans).has_permit_parking - 22,83% True (2.699 rows). Idem - vergunningparkeren wordt impliciet meegenomen via has_private_parking=False.has_sauna - 0,25% True (30 rows). Te zeldzaam voor stabiele sampling.has_domotica - 0,41% True (49 rows). Idem.has_patio - 1,29% True (153 rows). Verwerkt via outdoor_type.Totaal: ~50 parsed features → 22 sampled + ~6 deterministisch (oppervlakte, bouwjaar, etc.) + ~22 niet gebruikt voor scoring (categorieën hierboven). Dit is bewust: features die niet in WWS staan toevoegen zou de score laten afwijken van de wet, en zeldzame features sampelen geeft instabiele resultaten.
Welke listings krijgen een verdict?
Alleen Tier 1 listings - die met geverifieerd huisnummer + Kadaster WOZ-lookup op de juiste woning. Dat zijn er 22.614 (42.8% van onze populatie). We rapporteren WWS en WWSO altijd los van elkaar omdat ze fundamenteel verschillende regimes zijn: WWS-zelfstandig 50,2% op 16.496 listings [49,4-51,0%] en WWSO-onzelfstandig 77,9% op 6.118 kamers [76,9-79,0%]. Het blended cijfer (57,7%) is mechanisch opwaarts vertekend door WWSO (kamers hebben definitorisch geen vrije sector) en hoort niet als losse headline gebruikt te worden - vraag altijd naar het zelfstandig-cijfer voor het reguliere huurmarkt-debat.
Lat/lon-only listings (HousingAnywhere e.d.), Tier 2 (alleen wijk) en Tier 3 (alleen postcode) krijgen geen verdict op de listings-pagina - geen schatting, geen kleur. We labelen deze als "adres ontbreekt". De live /huurcheck tool werkt altijd op Tier 1 niveau omdat u uw eigen adres invult.