From 17feee8ea5360fd4f23e98e735510cbf9b41c7fc Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Thu, 26 Sep 2024 19:49:06 +0200 Subject: [PATCH 01/10] Refactor capital stock estimation logic and handle missing columns --- unbreakable/utils/data_estimator.py | 46 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/unbreakable/utils/data_estimator.py b/unbreakable/utils/data_estimator.py index e1f3422..da9c4a6 100644 --- a/unbreakable/utils/data_estimator.py +++ b/unbreakable/utils/data_estimator.py @@ -19,35 +19,35 @@ def estimate_effective_capital_stock( Raises: ValueError: If 'inc' or 'owns_house' columns are not present in the DataFrame. """ - if "inc" not in households.columns or "owns_house" not in households.columns: - raise ValueError( - "Both 'inc' and 'owns_house' columns must be present to estimate capital stock." + if "inc" in households.columns and "owns_house" in households.columns: + households = households.copy() + households.loc[households["owns_house"] == True, "k_house"] = ( + households["inc"] / params["economic_params"]["average_productivity"] ) - households = households.copy() - households.loc[households["owns_house"] == True, "k_house"] = ( - households["inc"] / params["economic_params"]["average_productivity"] - ) - - households.loc[households["owns_house"] == False, "k_house"] = 0 + households.loc[households["owns_house"] == False, "k_house"] = 0 - # NOTE - # Keff is the effective capital stock of the household - # Physical assets such as land, homes, and durable goods used to generate income - # For now we assume that keff is equal to the dwelling value k_house - households["keff"] = households["k_house"] + # NOTE + # Keff is the effective capital stock of the household + # Physical assets such as land, homes, and durable goods used to generate income + # For now we assume that keff is equal to the dwelling value k_house + households["keff"] = households["k_house"] - # TODO Estimate effective capital stock for renters in a more realistic way - # Estimate effective capital stock for renters based on savings rate - savings_rate = (households["inc"] - households["exp"]) / households["inc"] + # TODO Estimate effective capital stock for renters in a more realistic way + # Estimate effective capital stock for renters based on savings rate + savings_rate = (households["inc"] - households["exp"]) / households["inc"] - households.loc[households["owns_house"] == False, "keff"] = ( - households["inc"] - * savings_rate - / params["economic_params"]["average_productivity"] - ) + households.loc[households["owns_house"] == False, "keff"] = ( + households["inc"] + * savings_rate + / params["economic_params"]["average_productivity"] + ) - return households + return households + else: + raise ValueError( + "Both 'inc' and 'owns_house' columns must be present to estimate capital stock." + ) def estimate_welfare(households: pd.DataFrame, params: dict) -> pd.DataFrame: From e80252a6dc9a614baed916c2d33e8bee2b0ed0ef Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Thu, 26 Sep 2024 19:49:22 +0200 Subject: [PATCH 02/10] Refactor precompute_reconstruction_rates function and save optimal reconstruction rates to CSV --- unbreakable/modules/household_recovery.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/unbreakable/modules/household_recovery.py b/unbreakable/modules/household_recovery.py index b581dbc..5cdb3c6 100644 --- a/unbreakable/modules/household_recovery.py +++ b/unbreakable/modules/household_recovery.py @@ -195,9 +195,7 @@ def precompute_reconstruction_rates( # Round vulnerabilities to 2 decimal places to ensure 0.01 step optimal_rates_df["v"] = optimal_rates_df["v"].round(2) - optimal_rates_df.to_csv( - "../../data/generated/optimal_reconstruction_rates.csv", index=False - ) + return optimal_rates_df if __name__ == "__main__": @@ -212,6 +210,14 @@ def precompute_reconstruction_rates( # Generate vulnerabilities with exact 0.01 step dwelling_vulnerabilities = np.round(np.arange(0.2, 0.91, 0.01), 2) - precompute_reconstruction_rates( + optimal_rates = precompute_reconstruction_rates( economic_params, recovery_params, dwelling_vulnerabilities ) + + # Save precomputed rates to CSV + country_name = "Example" + + optimal_rates.to_csv( + f"../../data/generated/{country_name}/optimal_reconstruction_rates.csv", + index=False, + ) From 0b114f051d0b085ab24509eacf4b1235630303bf Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Thu, 26 Sep 2024 19:49:46 +0200 Subject: [PATCH 03/10] Reduce minimum households threshold in Example.yaml --- config/Example.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/Example.yaml b/config/Example.yaml index 7f7d243..7f8a518 100644 --- a/config/Example.yaml +++ b/config/Example.yaml @@ -64,7 +64,7 @@ constants: min_threshold: 0.2 # with vulnerability <= 0.13, recovery rate can be up to 5 max_threshold: 0.9 # with vulnerability >= 0.98, recovery rate skyrockets to 10 - min_households: 10000 + min_households: 250 atol: 100000 # Analysis parameters From aa64ff0e3f94698464a61d51c86a2746823bedfb Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Thu, 26 Sep 2024 19:50:39 +0200 Subject: [PATCH 04/10] Add notebook to precompute optimal recovery rates for the example --- .../Example/optimal_reconstruction_rates.csv | 72 +++++++++++++++++++ data_preparation/Example/asset-impats.ipynb | 2 +- .../Example/reconstruction-rates.ipynb | 61 ++++++++++++++++ 3 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 data/generated/Example/optimal_reconstruction_rates.csv create mode 100644 data_preparation/Example/reconstruction-rates.ipynb diff --git a/data/generated/Example/optimal_reconstruction_rates.csv b/data/generated/Example/optimal_reconstruction_rates.csv new file mode 100644 index 0000000..eadddb9 --- /dev/null +++ b/data/generated/Example/optimal_reconstruction_rates.csv @@ -0,0 +1,72 @@ +v,reconstruction_rate +0.2,0.45000000000000023 +0.21,0.4300000000000002 +0.22,0.4100000000000002 +0.23,0.3900000000000002 +0.24,0.37000000000000016 +0.25,0.36000000000000015 +0.26,0.34000000000000014 +0.27,0.3200000000000001 +0.28,0.3100000000000001 +0.29,0.2900000000000001 +0.3,0.2800000000000001 +0.31,0.2700000000000001 +0.32,0.26000000000000006 +0.33,0.24000000000000007 +0.34,0.23000000000000007 +0.35,0.22000000000000006 +0.36,0.21000000000000005 +0.37,0.20000000000000004 +0.38,0.19000000000000003 +0.39,0.18000000000000002 +0.4,0.17 +0.41,0.17 +0.42,0.16 +0.43,0.15 +0.44,0.13999999999999999 +0.45,0.13999999999999999 +0.46,0.12999999999999998 +0.47,0.11999999999999998 +0.48,0.11999999999999998 +0.49,0.10999999999999999 +0.5,0.10999999999999999 +0.51,0.09999999999999999 +0.52,0.09999999999999999 +0.53,0.09 +0.54,0.09 +0.55,0.08 +0.56,0.08 +0.57,0.07 +0.58,0.07 +0.59,0.07 +0.6,0.060000000000000005 +0.61,0.060000000000000005 +0.62,0.060000000000000005 +0.63,0.05 +0.64,0.05 +0.65,0.05 +0.66,0.05 +0.67,0.04 +0.68,0.04 +0.69,0.04 +0.7,0.04 +0.71,0.04 +0.72,0.03 +0.73,0.03 +0.74,0.03 +0.75,0.03 +0.76,0.03 +0.77,0.03 +0.78,0.02 +0.79,0.02 +0.8,0.02 +0.81,0.02 +0.82,0.02 +0.83,0.02 +0.84,0.02 +0.85,0.02 +0.86,0.02 +0.87,0.01 +0.88,0.01 +0.89,0.01 +0.9,0.01 diff --git a/data_preparation/Example/asset-impats.ipynb b/data_preparation/Example/asset-impats.ipynb index 9adeae0..4eee118 100644 --- a/data_preparation/Example/asset-impats.ipynb +++ b/data_preparation/Example/asset-impats.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "outputs": [], "source": [ - "from unbreakable.utils.data_generator import *" + "from unbreakable.utils.data_generator import generate_asset_damage" ] }, { diff --git a/data_preparation/Example/reconstruction-rates.ipynb b/data_preparation/Example/reconstruction-rates.ipynb new file mode 100644 index 0000000..02c0f8a --- /dev/null +++ b/data_preparation/Example/reconstruction-rates.ipynb @@ -0,0 +1,61 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from unbreakable.modules.household_recovery import precompute_reconstruction_rates" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# NOTE These parameters must match the ones used in the config file Example.yaml\n", + "economic_params = {\n", + " \"average_productivity\": 0.25,\n", + " \"consumption_utility\": 1.5,\n", + " \"discount_rate\": 0.04,\n", + "}\n", + "recovery_params = {\"max_years\": 10, \"lambda_increment\": 0.01}\n", + "\n", + "# Generate vulnerabilities with exact 0.01 step\n", + "dwelling_vulnerabilities = np.round(np.arange(0.2, 0.91, 0.01), 2)\n", + "\n", + "optimal_rates = precompute_reconstruction_rates(\n", + " economic_params, recovery_params, dwelling_vulnerabilities\n", + ")\n", + "\n", + "optimal_rates.to_csv(\n", + " \"../../data/generated/Example/optimal_reconstruction_rates.csv\", index=False\n", + " )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "unbreakable", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From b2a948e8e5f6365195a648c980dd66a194dac9eb Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Fri, 27 Sep 2024 17:30:19 +0200 Subject: [PATCH 05/10] Refactor configuration and data generation logic --- config/Example.yaml | 4 +- unbreakable/utils/data_generator.py | 98 +++++++++++++++++++++-------- 2 files changed, 74 insertions(+), 28 deletions(-) diff --git a/config/Example.yaml b/config/Example.yaml index 7f8a518..4043f55 100644 --- a/config/Example.yaml +++ b/config/Example.yaml @@ -17,7 +17,7 @@ constants: # Recovery parameters recovery_params: - use_precomputed_reconstruction_rates: true + use_precomputed_reconstruction_rates: false lambda_increment: 0.01 max_years: 10 @@ -64,7 +64,7 @@ constants: min_threshold: 0.2 # with vulnerability <= 0.13, recovery rate can be up to 5 max_threshold: 0.9 # with vulnerability >= 0.98, recovery rate skyrockets to 10 - min_households: 250 + min_households: 10000 atol: 100000 # Analysis parameters diff --git a/unbreakable/utils/data_generator.py b/unbreakable/utils/data_generator.py index 6a58550..ce3d9fe 100644 --- a/unbreakable/utils/data_generator.py +++ b/unbreakable/utils/data_generator.py @@ -61,9 +61,10 @@ def generate_households( np.random.seed(seed) # Constants - income_to_expenditure_ratio = 1.2 + average_productivity = 0.25 + income_to_expenditure_ratio = 1.3 housing_expenditure_ratio = 0.3 - effective_capital_stock_factor = 1 / 0.35 + effective_capital_stock_factor = 1 / average_productivity home_ownership_rate = 0.7 min_savings_rate = 0.05 @@ -89,7 +90,7 @@ def generate_households( default="Medium", ) - owns_home = np.random.rand(num_households) < ( + owns_house = np.random.rand(num_households) < ( (income - 1000) / 2000 * 0.5 + home_ownership_rate - 0.25 ) @@ -99,8 +100,8 @@ def generate_households( data = { "inc": income, - "owns_home": owns_home, - "keff": income * effective_capital_stock_factor, + "owns_house": owns_house, + "k_house": income * effective_capital_stock_factor, "spatial_unit": assigned_spatial_units, "female_headed": female_headed, "urban": urban, @@ -112,18 +113,28 @@ def generate_households( data["floor"] = [select_material(inc, FLOOR_SCORES) for inc in income] # Calculate housing expenditure - data["exp_house"] = np.where( - data["owns_home"], 0, income * housing_expenditure_ratio - ) + data["rent"] = np.where(data["owns_house"], 0, income * housing_expenditure_ratio) # Calculate total expenditure ensuring minimum savings max_expenditure = income * (1 - min_savings_rate) data["exp"] = np.minimum( - income / income_to_expenditure_ratio, max_expenditure - data["exp_house"] + income / income_to_expenditure_ratio, max_expenditure - data["rent"] ) # Calculate savings - data["sav"] = income - data["exp"] - data["exp_house"] + data["sav"] = income - data["exp"] - data["rent"] + + # Assign effective capital stock to dwelling value + data["keff"] = data["k_house"] + data["keff"] = np.where(data["owns_house"] == False, 0, data["keff"]) + + # Estimate effective capital stock for renters based on savings rate + savings_rate = (data["inc"] - data["exp"]) / data["inc"] + data["keff"] = np.where( + data["owns_house"] == False, + data["inc"] * savings_rate / average_productivity, + data["keff"], + ) # Assign each household a unique ID and weight data["household_id"] = range(1, num_households + 1) @@ -142,8 +153,9 @@ def generate_households( "inc", "exp", "sav", - "owns_home", - "exp_house", + "owns_house", + "rent", + "k_house", "keff", "roof", "walls", @@ -157,11 +169,11 @@ def generate_households( # Assert conditions assert ( - data["inc"] >= data["exp"] + data["exp_house"] + data["inc"] >= data["exp"] + data["rent"] ).all(), "Income should be greater than expenditure" assert (data["sav"] >= 0).all(), "Savings should be positive" assert (data["exp"] >= 0).all(), "Expenditure should be positive" - assert (data["exp_house"] >= 0).all(), "Housing expenditure should be positive" + assert (data["rent"] >= 0).all(), "Rent should be positive" return pd.DataFrame(data)[sorted_columns] @@ -193,7 +205,7 @@ def select_material(income: float, material_scores: Dict[str, float]) -> str: def generate_asset_damage( - disaster_type: str, num_spatial_units: int, seed: int = 42 + disaster_type: str, exposure_data: pd.Series, num_spatial_units: int, seed: int = 42 ) -> pd.DataFrame: """Generate dummy asset damage data for a given disaster type and number of spatial units.""" np.random.seed(seed) # For reproducibility @@ -203,23 +215,38 @@ def generate_asset_damage( data = [] + residential_to_non_residential_ratio = ( + 0.25 # Ratio of residential to non-residential assets + ) + for rp in return_periods: rp_factor = rp / 250 # Normalize return period for spatial_unit in spatial_units: - residential = np.random.uniform(100_000_000, 250_000_000) - non_residential = np.random.uniform(50_000_000, 100_000_000) - total = residential + non_residential + total_exposed_stock = exposure_data.loc[ + exposure_data["spatial_unit"] == spatial_unit, "total_exposed_stock" + ].iloc[0] + + # Get residential and non-residential exposure + residential_exposure = total_exposed_stock * ( + 1 - residential_to_non_residential_ratio + ) + + non_residential_exposure = ( + total_exposed_stock * residential_to_non_residential_ratio + ) + + total = residential_exposure + non_residential_exposure # Adjust PML and loss fraction based on disaster type and return period if disaster_type == "flood": - base_loss = 0.05 + base_loss = 0.005 max_loss = 0.3 elif disaster_type == "hurricane": - base_loss = 0.1 + base_loss = 0.01 max_loss = 0.4 elif disaster_type == "earthquake": - base_loss = 0.15 + base_loss = 0.015 max_loss = 0.5 else: raise ValueError(f"Invalid disaster type: {disaster_type}") @@ -238,8 +265,8 @@ def generate_asset_damage( { "disaster_type": disaster_type, "spatial_unit": spatial_unit, - "residential": round(residential, 2), - "non_residential": round(non_residential, 2), + "residential": round(residential_exposure, 2), + "non_residential": round(non_residential_exposure, 2), "total_exposed_stock": round(total, 2), "rp": rp, "pml": round(pml, 2), @@ -251,12 +278,31 @@ def generate_asset_damage( if __name__ == "__main__": + # Specify the number of households and spatial units + num_households = 300 + num_spatial_units = 3 + seed = 42 + + # Generate dummy household survey data + households = generate_households(num_households, num_spatial_units, seed) + households.to_csv("../../data/processed/household_survey/Example.csv", index=False) + + # Get how much stock each household is exposed to + households["total_exposed_stock"] = ( + households["keff"] * households["household_weight"] + ) + + exposure_data = ( + households.groupby("spatial_unit")["total_exposed_stock"].sum().reset_index() + ) + # Generate dummy disaster risk and household survey data disaster_types = ["flood", "hurricane", "earthquake"] + for disaster in disaster_types: - df = generate_asset_damage(disaster, num_spatial_units=3) + df = generate_asset_damage( + disaster, exposure_data, num_spatial_units, seed=seed + ) df.to_csv( f"../../data/processed/asset_impacts/Example/{disaster}.csv", index=False ) - households = generate_households(100, num_spatial_units=3) - households.to_csv("../../data/processed/household_survey/Example.csv", index=False) From d14d60c4a36177a209270cf6123150f282fac341 Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Fri, 27 Sep 2024 17:30:31 +0200 Subject: [PATCH 06/10] Fix rent validation to allow zero values --- unbreakable/utils/data_validator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unbreakable/utils/data_validator.py b/unbreakable/utils/data_validator.py index 4587a03..12ea2d3 100644 --- a/unbreakable/utils/data_validator.py +++ b/unbreakable/utils/data_validator.py @@ -28,7 +28,7 @@ def validate_rent( """ if rent.isna().any(): raise ValueError("Rent cannot be NaN") - if (rent <= 0).any(): + if (rent < 0).any(): raise ValueError("Rent must be positive") if (rent >= income).any(): raise ValueError("Rent must be less than income") From e4963fb1c6bc08e7a831355713e23b3a0b2e8678 Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Fri, 27 Sep 2024 17:30:40 +0200 Subject: [PATCH 07/10] Refactor align_assets function to use 'keff' instead of 'k_house' for calculating survey assets and alignment --- unbreakable/utils/data_matcher.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/unbreakable/utils/data_matcher.py b/unbreakable/utils/data_matcher.py index 32633b1..d93fc54 100644 --- a/unbreakable/utils/data_matcher.py +++ b/unbreakable/utils/data_matcher.py @@ -62,15 +62,13 @@ def align_assets( Returns: pd.DataFrame: Households with aligned assets and adjusted values. """ - survey_assets = (households["k_house"] * households["household_weight"]).sum() + survey_assets = (households["keff"] * households["household_weight"]).sum() if not np.isclose(exposed_assets, survey_assets, atol=atol): scaling_factor = exposed_assets / survey_assets households = scale_household_data(households, scaling_factor) - survey_assets_aligned = ( - households["k_house"] * households["household_weight"] - ).sum() + survey_assets_aligned = (households["keff"] * households["household_weight"]).sum() assert round(exposed_assets) == round( survey_assets_aligned From 84d6903e269c8f935618b44266c063f7883fcade Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Fri, 27 Sep 2024 17:31:16 +0200 Subject: [PATCH 08/10] Split dwelling and effective capital stock estimation --- unbreakable/utils/data_estimator.py | 34 ++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/unbreakable/utils/data_estimator.py b/unbreakable/utils/data_estimator.py index da9c4a6..5633e09 100644 --- a/unbreakable/utils/data_estimator.py +++ b/unbreakable/utils/data_estimator.py @@ -3,11 +3,33 @@ from typing import Optional +def estimate_dwelling_value(households: pd.DataFrame, params: dict) -> pd.DataFrame: + """ + Estimate dwelling value based on income and average productivity. + + Args: + households (pd.DataFrame): DataFrame containing household data. + params (dict): Dictionary of parameters for estimation. + + Returns: + pd.DataFrame: DataFrame with estimated dwelling value. + + """ + estimate = params.get("estimate", False) + if not estimate: + return households + households = households.copy() + households.loc[households["owns_house"] == True, "k_house"] = ( + households["inc"] / params["economic_params"]["average_productivity"] + ) + return households + + def estimate_effective_capital_stock( households: pd.DataFrame, params: dict ) -> pd.DataFrame: """ - Estimate effective capital stock for homeowners. + Estimate effective capital stock. Args: households (pd.DataFrame): DataFrame containing household data. @@ -19,12 +41,12 @@ def estimate_effective_capital_stock( Raises: ValueError: If 'inc' or 'owns_house' columns are not present in the DataFrame. """ - if "inc" in households.columns and "owns_house" in households.columns: - households = households.copy() - households.loc[households["owns_house"] == True, "k_house"] = ( - households["inc"] / params["economic_params"]["average_productivity"] - ) + estimate = params.get("estimate", False) + if not estimate: + return households + + if "inc" in households.columns and "owns_house" in households.columns: households.loc[households["owns_house"] == False, "k_house"] = 0 # NOTE From 520d9c157c4efd87f9c9b36b4603c7297ec48e79 Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Fri, 27 Sep 2024 17:31:31 +0200 Subject: [PATCH 09/10] Update with new parameters --- config/Example.yaml | 28 +++++++++++++---------- unbreakable/experiments/config_handler.py | 2 ++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/config/Example.yaml b/config/Example.yaml index 4043f55..205306a 100644 --- a/config/Example.yaml +++ b/config/Example.yaml @@ -4,20 +4,20 @@ constants: # Each spatial unit has an array of outcomes that are calculated for it spatial_units: + - region_0 - region_1 - region_2 - - region_3 # Global economic parameters specific to the country economic_params: average_productivity: 0.25 # average of cgdpo / cn for the last 5 years from the Penn World Table https://www.rug.nl/ggdc/productivity/pwt/?lang=en - income_and_expenditure_growth: 0.02 # assumption source: ? + income_and_expenditure_growth: 0.02 consumption_utility: 1.5 # assumption source: Hallegatte et al. (2017) choose a standard value of 1.5 to represent the elasticity of the marginal utility of consumption - discount_rate: 0.04 # assumption source: ? + discount_rate: 0.04 # Recovery parameters recovery_params: - use_precomputed_reconstruction_rates: false + use_precomputed_reconstruction_rates: true lambda_increment: 0.01 max_years: 10 @@ -38,24 +38,28 @@ constants: # Estimation and randomization parameters income_params: - estimate: true - randomize: true + estimate: false + randomize: false distribution: uniform - inc_exp_ratio: 1.3 # assumption source? + inc_exp_ratio: 1.3 delta: 0.1 # absolute deviation from the base income to expenditure ratio savings_params: - estimate: true - randomize: true + estimate: false + randomize: false cap_with_max_savings_rate: false # whether to cap the savings rate with the maximum savings rate distribution: uniform delta: 0.01 # absolute deviation from the base savings rate max_savings_rate: 0.1 # maximum savings rate to prevent unrealistic values during randomization rent_params: - estimate: true - randomize: true + estimate: false + randomize: false distribution: uniform - pct_of_income: 0.14 # assumption source? + pct_of_income: 0.3 delta: 0.05 # absolute deviation from the base rent as a percentage of income + dwelling_params: + estimate: false + effective_capital_stock_params: + estimate: false dwelling_vulnerability_params: randomize: true distribution: uniform diff --git a/unbreakable/experiments/config_handler.py b/unbreakable/experiments/config_handler.py index 822ce2d..ee356ac 100644 --- a/unbreakable/experiments/config_handler.py +++ b/unbreakable/experiments/config_handler.py @@ -73,6 +73,8 @@ def validate_config(config: Dict[str, Any]) -> None: "pct_of_income", "delta", }, + "effective_capital_stock_params": {"estimate"}, + "dwelling_params": {"estimate"}, "dwelling_vulnerability_params": { "randomize", "distribution", From ef479307357343fb6e2914f8b7ed8da27cc8dd3d Mon Sep 17 00:00:00 2001 From: Mikhail Sirenko Date: Fri, 27 Sep 2024 17:32:02 +0200 Subject: [PATCH 10/10] Fix the bug in the way how disaster impact is filtered --- .../asset_impacts/Example/earthquake.csv | 24 +- .../processed/asset_impacts/Example/flood.csv | 24 +- .../asset_impacts/Example/hurricane.csv | 24 +- data/processed/household_survey/Example.csv | 402 ++++++++++---- data_preparation/Example/asset-impats.ipynb | 169 ------ data_preparation/Example/generate-data.ipynb | 200 +++++++ .../Example/household-survey.ipynb | 244 -------- .../Example/reconstruction-rates.ipynb | 61 -- .../Example/1-economic-and-poverty.ipynb | 519 ++++++++++++++++++ ..._period=100_scenarios=16_policies=0.tar.gz | Bin 0 -> 30821 bytes ...n_period=100_scenarios=6_policies=0.tar.gz | Bin 0 -> 12197 bytes ...n_period=250_scenarios=6_policies=0.tar.gz | Bin 0 -> 12133 bytes unbreakable/example.py | 6 +- .../experiments/outcome_names_ordered.json | 2 +- unbreakable/main.py | 4 +- unbreakable/modules/disaster_impact.py | 6 +- .../utils/household_data_preprocessor.py | 9 +- 17 files changed, 1074 insertions(+), 620 deletions(-) delete mode 100644 data_preparation/Example/asset-impats.ipynb create mode 100644 data_preparation/Example/generate-data.ipynb delete mode 100644 data_preparation/Example/household-survey.ipynb delete mode 100644 data_preparation/Example/reconstruction-rates.ipynb create mode 100644 notebooks/Example/1-economic-and-poverty.ipynb create mode 100644 results/Example/disaster_type=flood_return_period=100_scenarios=16_policies=0.tar.gz create mode 100644 results/Example/disaster_type=flood_return_period=100_scenarios=6_policies=0.tar.gz create mode 100644 results/Example/disaster_type=flood_return_period=250_scenarios=6_policies=0.tar.gz diff --git a/data/processed/asset_impacts/Example/earthquake.csv b/data/processed/asset_impacts/Example/earthquake.csv index 73695b8..3a4681c 100644 --- a/data/processed/asset_impacts/Example/earthquake.csv +++ b/data/processed/asset_impacts/Example/earthquake.csv @@ -1,13 +1,13 @@ disaster_type,spatial_unit,residential,non_residential,total_exposed_stock,rp,pml,loss_fraction -earthquake,region_0,156181017.83,97535715.32,253716733.15,10,47495618.74,0.187 -earthquake,region_1,189798772.63,57800932.02,247599704.65,10,37139955.7,0.15 -earthquake,region_2,108712541.83,93308807.29,202021349.11,10,35174240.36,0.174 -earthquake,region_0,206210886.67,51029224.71,257240111.38,50,68680790.78,0.267 -earthquake,region_1,224866396.12,60616955.53,285483351.65,50,53722969.89,0.188 -earthquake,region_2,127510676.48,65212112.15,192722788.63,50,42876126.35,0.222 -earthquake,region_0,164791752.8,64561457.01,229353209.81,100,69077812.89,0.301 -earthquake,region_1,120924079.1,64607232.43,185531311.52,100,51324674.09,0.277 -earthquake,region_2,168410497.63,89258798.07,257669295.7,100,66985611.25,0.26 -earthquake,region_0,177135165.76,79620728.44,256755894.21,250,116732794.12,0.455 -earthquake,region_1,191131727.79,58526206.18,249657933.97,250,113970134.92,0.457 -earthquake,region_2,242332830.59,98281601.65,340614432.24,250,170307216.12,0.5 +earthquake,region_0,22816317.94,7605439.31,30421757.25,10,664837.44,0.022 +earthquake,region_1,28084296.43,9361432.14,37445728.57,10,2975865.62,0.079 +earthquake,region_2,21622864.59,7207621.53,28830486.13,10,1660618.53,0.058 +earthquake,region_0,22816317.94,7605439.31,30421757.25,50,3707373.26,0.122 +earthquake,region_1,28084296.43,9361432.14,37445728.57,50,2905858.34,0.078 +earthquake,region_2,21622864.59,7207621.53,28830486.13,50,2237229.93,0.078 +earthquake,region_0,22816317.94,7605439.31,30421757.25,100,5013759.96,0.165 +earthquake,region_1,28084296.43,9361432.14,37445728.57,100,9197330.53,0.246 +earthquake,region_2,21622864.59,7207621.53,28830486.13,100,6317091.09,0.219 +earthquake,region_0,22816317.94,7605439.31,30421757.25,250,15210878.62,0.5 +earthquake,region_1,28084296.43,9361432.14,37445728.57,250,16927657.99,0.452 +earthquake,region_2,21622864.59,7207621.53,28830486.13,250,14415243.06,0.5 diff --git a/data/processed/asset_impacts/Example/flood.csv b/data/processed/asset_impacts/Example/flood.csv index 812b5f6..e2be942 100644 --- a/data/processed/asset_impacts/Example/flood.csv +++ b/data/processed/asset_impacts/Example/flood.csv @@ -1,13 +1,13 @@ disaster_type,spatial_unit,residential,non_residential,total_exposed_stock,rp,pml,loss_fraction -flood,region_0,156181017.83,97535715.32,253716733.15,10,21109078.49,0.083 -flood,region_1,189798772.63,57800932.02,247599704.65,10,12379985.23,0.05 -flood,region_2,108712541.83,93308807.29,202021349.11,10,14164020.06,0.07 -flood,region_0,206210886.67,51029224.71,257240111.38,50,37811977.41,0.147 -flood,region_1,224866396.12,60616955.53,285483351.65,50,19464967.69,0.068 -flood,region_2,127510676.48,65212112.15,192722788.63,50,19749391.72,0.102 -flood,region_0,164791752.8,64561457.01,229353209.81,100,36968363.51,0.161 -flood,region_1,120924079.1,64607232.43,185531311.52,100,25350290.48,0.137 -flood,region_2,168410497.63,89258798.07,257669295.7,100,30911909.85,0.12 -flood,region_0,177135165.76,79620728.44,256755894.21,250,65381615.28,0.255 -flood,region_1,191131727.79,58526206.18,249657933.97,250,64038548.12,0.257 -flood,region_2,242332830.59,98281601.65,340614432.24,250,102184329.67,0.3 +flood,region_0,22816317.94,7605439.31,30421757.25,10,152108.79,0.005 +flood,region_1,28084296.43,9361432.14,37445728.57,10,2316820.8,0.062 +flood,region_2,21622864.59,7207621.53,28830486.13,10,1153201.98,0.04 +flood,region_0,22816317.94,7605439.31,30421757.25,50,2247128.91,0.074 +flood,region_1,28084296.43,9361432.14,37445728.57,50,1108463.37,0.03 +flood,region_2,21622864.59,7207621.53,28830486.13,50,853366.59,0.03 +flood,region_0,22816317.94,7605439.31,30421757.25,100,2397488.83,0.079 +flood,region_1,28084296.43,9361432.14,37445728.57,100,5976997.87,0.16 +flood,region_2,21622864.59,7207621.53,28830486.13,100,3837669.29,0.133 +flood,region_0,22816317.94,7605439.31,30421757.25,250,9126527.17,0.3 +flood,region_1,28084296.43,9361432.14,37445728.57,250,9438512.28,0.252 +flood,region_2,21622864.59,7207621.53,28830486.13,250,8649145.84,0.3 diff --git a/data/processed/asset_impacts/Example/hurricane.csv b/data/processed/asset_impacts/Example/hurricane.csv index 178c6b6..6bcccca 100644 --- a/data/processed/asset_impacts/Example/hurricane.csv +++ b/data/processed/asset_impacts/Example/hurricane.csv @@ -1,13 +1,13 @@ disaster_type,spatial_unit,residential,non_residential,total_exposed_stock,rp,pml,loss_fraction -hurricane,region_0,156181017.83,97535715.32,253716733.15,10,34302348.62,0.135 -hurricane,region_1,189798772.63,57800932.02,247599704.65,10,24759970.47,0.1 -hurricane,region_2,108712541.83,93308807.29,202021349.11,10,24669130.21,0.122 -hurricane,region_0,206210886.67,51029224.71,257240111.38,50,53246384.09,0.207 -hurricane,region_1,224866396.12,60616955.53,285483351.65,50,36593968.79,0.128 -hurricane,region_2,127510676.48,65212112.15,192722788.63,50,31312759.03,0.162 -hurricane,region_0,164791752.8,64561457.01,229353209.81,100,53023088.2,0.231 -hurricane,region_1,120924079.1,64607232.43,185531311.52,100,38337482.29,0.207 -hurricane,region_2,168410497.63,89258798.07,257669295.7,100,48948760.55,0.19 -hurricane,region_0,177135165.76,79620728.44,256755894.21,250,91057204.7,0.355 -hurricane,region_1,191131727.79,58526206.18,249657933.97,250,89004341.52,0.357 -hurricane,region_2,242332830.59,98281601.65,340614432.24,250,136245772.9,0.4 +hurricane,region_0,22816317.94,7605439.31,30421757.25,10,397125.98,0.013 +hurricane,region_1,28084296.43,9361432.14,37445728.57,10,2646343.21,0.071 +hurricane,region_2,21622864.59,7207621.53,28830486.13,10,1406910.26,0.049 +hurricane,region_0,22816317.94,7605439.31,30421757.25,50,2977251.08,0.098 +hurricane,region_1,28084296.43,9361432.14,37445728.57,50,2007160.85,0.054 +hurricane,region_2,21622864.59,7207621.53,28830486.13,50,1545298.26,0.054 +hurricane,region_0,22816317.94,7605439.31,30421757.25,100,3705624.4,0.122 +hurricane,region_1,28084296.43,9361432.14,37445728.57,100,7587164.2,0.203 +hurricane,region_2,21622864.59,7207621.53,28830486.13,100,5077380.19,0.176 +hurricane,region_0,22816317.94,7605439.31,30421757.25,250,12168702.9,0.4 +hurricane,region_1,28084296.43,9361432.14,37445728.57,250,13183085.14,0.352 +hurricane,region_2,21622864.59,7207621.53,28830486.13,250,11532194.45,0.4 diff --git a/data/processed/household_survey/Example.csv b/data/processed/household_survey/Example.csv index bfbf990..83c1804 100644 --- a/data/processed/household_survey/Example.csv +++ b/data/processed/household_survey/Example.csv @@ -1,101 +1,301 @@ -spatial_unit,household_id,household_weight,inc,exp,sav,owns_home,exp_house,keff,roof,walls,floor,poverty_line,is_poor,female_headed,urban,literacy -region_0,1,71.01662479702647,2248.3570765056165,1873.6308970880139,374.7261794176027,True,0.0,6423.877361444619,Shingle (asphalt),Concrete/Concrete Blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,False,High -region_1,2,16.101365248511875,1930.8678494144076,1255.064102119365,96.54339247072028,False,579.2603548243222,5516.765284041165,Tile,Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,False,Medium -region_1,3,58.052547656514506,2323.844269050346,1936.5368908752885,387.3073781750577,True,0.0,6639.55505442956,Finished – Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,True,True,High -region_0,4,61.06478959190273,2761.514928204013,2301.262440170011,460.252488034002,True,0.0,7890.042652011465,Shingle (other),Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_0,5,42.988936458936216,1882.923312638332,1569.1027605319434,313.8205521063885,True,0.0,5379.780893252377,Shingle (asphalt),Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,Medium -region_1,6,73.90797932684757,1882.9315215254096,1569.1096012711748,313.8219202542348,True,0.0,5379.804347215456,Concrete,Brick/Blocks,Other,1631.2129563527978,False,False,False,Medium -region_2,7,93.50233446213247,2789.6064077536957,2324.6720064614133,464.9344012922825,True,0.0,7970.304022153417,Shingle (wood),Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_1,8,92.63128277777086,2383.717364576454,1986.4311371470453,397.2862274294089,True,0.0,6810.621041647012,Finished – Asbestos,Finished – Cement blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,True,High -region_0,9,45.633097769009076,1765.262807032524,1471.0523391937702,294.21046783875386,True,0.0,5043.608020092926,Shingle (wood),Brick/Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,False,Low -region_1,10,12.21056653823477,2271.2800217929826,1892.7333514941522,378.54667029883035,True,0.0,6489.371490837093,Shingle (other),Finished – Stone with lime/cement,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,High -region_0,11,98.49927869727112,1768.291153593769,1473.575961328141,294.71519226562805,True,0.0,5052.26043883934,Tile,Concrete/Concrete blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,False,Medium -region_1,12,84.05091055814748,1767.1351232148716,1472.6126026790596,294.52252053581196,True,0.0,5048.957494899633,Finished – Metal,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1631.2129563527978,False,False,False,Medium -region_2,13,13.341605439123418,2120.981135783017,1767.484279819181,353.4968559638362,True,0.0,6059.9461022371925,Shingle (wood),Wood & Concrete,Finished – Parquet or polished wood,1631.2129563527978,False,False,False,Medium -region_1,14,92.16334637911986,1043.359877671101,869.4665647259176,173.89331294518342,True,0.0,2981.0282219174314,Finished – Asbestos,Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,True,False,False,Low -region_1,15,87.1197398441507,1137.5410837434836,947.9509031195697,189.59018062391385,True,0.0,3250.1173821242387,Concrete,Wood/Timber,Finished – Cement/red bricks,1631.2129563527978,True,True,True,Low -region_0,16,52.36496765548114,1718.8562353795137,1432.380196149595,286.4760392299188,True,0.0,4911.017815370039,Concrete,Natural – Other,Other,1631.2129563527978,False,True,False,Low -region_0,17,59.53626813874799,1493.5844398327881,970.8298858913122,74.67922199163951,False,448.0753319498364,4267.384113807966,Finished – Concrete,Concrete/Concrete blocks,Rudimentary – Wood planks,1631.2129563527978,True,False,False,Low -region_0,18,40.5012676831429,2157.123666297637,1797.603055248031,359.52061104960603,True,0.0,6163.210475136106,Shingle (other),Concrete/Concrete Blocks,Other,1631.2129563527978,False,False,False,High -region_1,19,6.421402243381102,1545.9879622393946,1288.3233018661622,257.66466037323244,True,0.0,4417.108463541128,"Sheet metal (galvanize, galvalume)",Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1631.2129563527978,True,True,False,Low -region_2,20,34.184526922944194,1293.8481493323543,841.0012970660302,64.6924074666178,False,388.15444479970625,3696.708998092441,Concrete,Finished – Stone with lime/cement,Rudimentary – Wood planks,1631.2129563527978,True,False,False,Low -region_0,21,80.48249141120313,2732.824384460777,2277.353653717314,455.4707307434628,True,0.0,7808.069669887934,Tile,Concrete/Concrete Blocks,Other,1631.2129563527978,False,False,True,High -region_0,22,1.458570277455683,1887.1118497567322,1226.622702341876,94.35559248783659,False,566.1335549270196,5391.748142162092,Finished – Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,Medium -region_1,23,34.016417997423275,2033.764102343962,1694.8034186199684,338.9606837239935,True,0.0,5810.754578125606,"Sheet metal (galvanize, galvalume)",Finished – Cement blocks,Finished – Cement/red bricks,1631.2129563527978,False,True,False,Medium -region_0,24,40.41870066550339,1287.6259068932716,1073.0215890777263,214.6043178155453,True,0.0,3678.9311625522046,Finished – Asbestos,Brick/Blocks,Rudimentary – Wood planks,1631.2129563527978,True,False,False,Low -region_2,25,54.20216469085437,1727.8086377374086,1439.8405314478405,287.96810628956814,True,0.0,4936.596107821168,Finished – Asbestos,Wood & Concrete,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,Low -region_2,26,92.06570602486329,2055.461294854933,1712.884412379111,342.576882475822,True,0.0,5872.74655672838,Finished – Metal,Finished – Cement blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,False,Medium -region_0,27,35.288253442230165,1424.5032112888484,1187.0860094073737,237.41720188147474,True,0.0,4070.009175110996,Finished – Metal,Brick/Blocks,Finished – Cement/red bricks,1631.2129563527978,True,False,False,Low -region_0,28,35.34836698772654,2187.849009172836,1823.2075076440299,364.641501528806,True,0.0,6250.9971690652455,Finished – Concrete,Finished – Stone with lime/cement,Rudimentary – Wood planks,1631.2129563527978,False,False,False,High -region_1,29,74.01262356286509,1699.6806550405975,1104.7924257763884,84.9840327520298,False,509.9041965121792,4856.230442973136,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,False,Low -region_2,30,45.769576148090906,1854.1531251033616,1545.1276042528013,309.02552085056027,True,0.0,5297.580357438176,Finished – Asbestos,Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,Medium -region_2,31,23.235877471058213,1699.1466938853016,1415.9555782377513,283.1911156475503,True,0.0,4854.70483967229,Shingle (other),Finished – Stone with lime/cement,Finished – Cement/red bricks,1631.2129563527978,False,False,False,Low -region_0,32,45.791512097136646,2926.139092254469,2438.449243545391,487.689848709078,True,0.0,8360.39740644134,"Sheet metal (galvanize, galvalume)",Natural – Other,Rudimentary – Wood planks,1631.2129563527978,False,False,False,High -region_1,33,14.944845017600185,1993.2513876310331,1661.042823025861,332.2085646051721,True,0.0,5695.003964660094,"Sheet metal (galvanize, galvalume)",Brick/Blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,Medium -region_2,34,18.462311664116108,1471.1445355220499,1225.9537796017082,245.19075592034164,True,0.0,4203.270101491571,Tile,Brick/Blocks,Finished – Parquet or polished wood,1631.2129563527978,True,False,False,Low -region_2,35,50.338409501208496,2411.2724560515944,1567.3270964335366,120.56362280257952,False,723.3817368154783,6889.349874433127,Shingle (other),Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,True,False,High -region_1,36,42.47361950095024,1389.5781750144888,1157.9818125120742,231.59636250241465,True,0.0,3970.223357184254,Shingle (wood),Brick/Blocks,Rudimentary – Wood planks,1631.2129563527978,True,False,False,Low -region_1,37,91.5697442057419,2104.431797502378,1367.8806683765456,105.22158987511887,False,631.3295392507133,6012.662278578222,Finished – Asbestos,Brick/Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,False,Medium -region_2,38,36.87699601254668,1020.1649380601123,663.1072097390729,51.00824690300567,False,306.0494814180337,2914.7569658860352,Finished – Concrete,Concrete/Concrete Blocks,Rudimentary – Wood planks,1631.2129563527978,True,True,False,Low -region_2,39,58.4782466775263,1335.9069755507849,1113.2558129589875,222.6511625917974,True,0.0,3816.8770730022425,Finished – Metal,Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,True,True,False,Low -region_1,40,63.59416450403351,2098.4306179345617,1748.6921816121348,349.7384363224269,True,0.0,5995.516051241605,Concrete,Finished – Cement blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,Medium -region_2,41,2.29635120224503,2369.2332899977055,1974.361074998088,394.8722149996174,True,0.0,6769.237971422016,"Sheet metal (galvanize, galvalume)",Concrete/Concrete blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,False,High -region_0,42,66.69019982965435,2085.6841405949854,1738.0701171624878,347.61402343249756,True,0.0,5959.097544557101,Tile,Finished – Cement blocks,Finished – Cement/red bricks,1631.2129563527978,False,True,False,Medium -region_0,43,18.62556072010539,1942.1758588058797,1618.4798823382332,323.69597646764646,True,0.0,5549.073882302513,Finished – Concrete,Concrete/Concrete Blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,False,Medium -region_1,44,96.14596142947606,1849.4481522053557,1202.141298933481,92.47240761026796,False,554.8344456616067,5284.137577729588,Shingle (asphalt),Finished – Cement blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,False,Medium -region_1,45,15.717610047558182,1260.7390048162863,1050.6158373469052,210.1231674693811,True,0.0,3602.1114423322465,Tile,Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,True,False,False,Low -region_1,46,42.04778824897535,1640.0778958026458,1366.7315798355382,273.34631596710756,True,0.0,4685.936845150417,Finished – Concrete,Wood/Timber,Rudimentary – Wood planks,1631.2129563527978,False,True,False,Low -region_0,47,9.449617139785742,1769.6806145201062,1150.292399438069,88.48403072600547,False,530.9041843560318,5056.230327200304,Concrete,Wood & Concrete,Finished – Cement/red bricks,1631.2129563527978,False,False,False,Medium -region_2,48,99.69055093274879,2528.561113109458,2107.1342609245485,421.4268521849094,True,0.0,7224.46032316988,Shingle (asphalt),Finished – Stone with lime/cement,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,High -region_0,49,50.71730602279302,2171.8091447842307,1411.6759441097502,108.59045723921133,False,651.5427434352692,6205.168985097802,Finished – Metal,Finished – GRC/Gypsum/Asbestos,Rudimentary – Wood planks,1631.2129563527978,False,False,False,High -region_2,50,59.943116714684336,1118.479922318633,932.0666019321942,186.41332038643884,True,0.0,3195.65692091038,Shingle (other),Brick/Blocks,Finished – Parquet or polished wood,1631.2129563527978,True,True,False,Low -region_0,51,7.640571261454321,2162.0419846973973,1801.701653914498,360.3403307828994,True,0.0,6177.262813421135,Finished – Metal,Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,False,High -region_2,52,75.2460865695186,1807.4588597918419,1174.848258864697,90.37294298959227,False,542.2376579375525,5164.168170833834,Finished – Asbestos,Brick/Blocks,Other,1631.2129563527978,False,True,True,Medium -region_0,53,21.78065371646299,1661.5389998470207,1080.0003499005634,83.07694999235116,False,498.46169995410617,4747.254285277202,Tile,Wood & Concrete,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,Low -region_1,54,89.90737465463066,2305.8381444204338,1498.794793873282,115.29190722102157,False,691.7514433261301,6588.108984058383,Tile,Finished – Stone with lime/cement,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_0,55,21.30882440771871,2515.4997612479756,2096.24980103998,419.2499602079956,True,0.0,7187.1421749942165,Finished – Asbestos,Finished – Cement blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_2,56,19.87808434570299,2465.6400595580994,2054.7000496317496,410.94000992634983,True,0.0,7044.685884451713,Finished – Metal,Concrete/Concrete blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,True,High -region_0,57,4.618417116961393,1580.3912383886807,1316.9926986572339,263.3985397314468,True,0.0,4515.403538253374,Concrete,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1631.2129563527978,True,False,False,Low -region_0,58,47.73462756588992,1845.3938120743928,1537.8281767286608,307.56563534573206,True,0.0,5272.553748783979,Concrete,Finished – Cement blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,False,Medium -region_0,59,56.919272192999024,2165.631715701782,1407.6606152061581,108.2815857850893,False,649.6895147105346,6187.519187719377,Shingle (other),Wood & Concrete,Rudimentary – Wood planks,1631.2129563527978,False,False,True,High -region_1,60,7.505155303406884,2487.7725635611796,2073.1438029676497,414.62876059352993,True,0.0,7107.921610174799,Tile,Wood & Concrete,Rudimentary – Wood planks,1631.2129563527978,False,False,True,High -region_0,61,77.77723405280605,1760.412881077355,1144.268372700281,88.02064405386761,False,528.1238643232065,5029.751088792443,Shingle (asphalt),Finished – Cement blocks,Finished – Cement/red bricks,1631.2129563527978,False,True,True,Low -region_1,62,45.875594640054736,1907.1705116680914,1589.3087597234096,317.8617519446818,True,0.0,5449.058604765975,Finished – Concrete,Rudimentary – Plywood,Finished – Cement/red bricks,1631.2129563527978,False,False,True,Medium -region_1,63,52.91463666343042,1446.8325129969858,1205.6937608308215,241.1387521661643,True,0.0,4133.807179991388,Concrete,Wood & Concrete,Finished – Cement/red bricks,1631.2129563527978,True,False,False,Low -region_0,64,44.635511946884584,1401.8966879596646,911.2328471737819,70.09483439798333,False,420.5690063878994,4005.419108456185,Concrete,Concrete/Concrete Blocks,Rudimentary – Wood planks,1631.2129563527978,True,False,False,Low -region_0,65,40.67554302665727,2406.262911197099,2005.2190926642493,401.04381853284985,True,0.0,6875.036889134569,Finished – Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_0,66,56.40439279951357,2678.1200142854113,1740.7780092855173,133.9060007142706,False,803.4360042856234,7651.771469386889,Tile,Concrete/Concrete blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,High -region_2,67,16.36878434714054,1963.994939209833,1276.5967104863917,98.19974696049155,False,589.1984817629499,5611.414112028095,Finished – Concrete,Concrete/Concrete Blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,False,Medium -region_0,68,19.01088491903184,2501.766448946012,2084.805374121677,416.96107482433536,True,0.0,7147.904139845749,Finished – Metal,Concrete/Concrete Blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,True,High -region_1,69,86.3167764803382,2180.818012523817,1417.5317081404805,109.04090062619127,False,654.245403757145,6230.908607210906,Shingle (wood),Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,False,High -region_0,70,94.66543075122964,1677.4401226974378,1090.3360797533346,83.87200613487187,False,503.2320368092313,4792.686064849822,Finished – Concrete,Concrete/Concrete Blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,True,Low -region_2,71,37.957622311695545,2180.697802754207,1817.2481689618392,363.44963379236765,True,0.0,6230.565150726306,Finished – Metal,Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_0,72,27.803722641211824,2769.0182832329847,1799.86188410144,138.4509141616494,False,830.7054849698953,7911.4808092370995,Shingle (other),Natural – Other,Rudimentary – Wood planks,1631.2129563527978,False,True,True,High -region_2,73,64.75595478066256,1982.0869804450242,1651.7391503708536,330.3478300741706,True,0.0,5663.105658414355,Finished – Metal,Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,True,False,Medium -region_2,74,41.46468293871154,2782.3218279070034,2318.601523255836,463.7203046511672,True,0.0,7949.490936877152,Tile,Brick/Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_0,75,3.5132492103741413,1000.0,833.3333333333334,166.66666666666663,True,0.0,2857.1428571428573,Finished – Asbestos,Finished – Cement blocks,Rudimentary – Wood planks,1631.2129563527978,True,False,False,Low -region_1,76,16.459107139252843,2410.9512521876118,1567.1183139219474,120.54756260938086,False,723.2853756562835,6888.4321491074625,Shingle (wood),Rudimentary – Plywood,Finished – Cement/red bricks,1631.2129563527978,False,True,False,High -region_2,77,71.88125065589236,2043.5235341190855,1702.9362784325713,340.58725568651425,True,0.0,5838.638668911673,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,True,False,Medium -region_0,78,66.23347024910498,1850.4963247670662,1542.080270639222,308.4160541278443,True,0.0,5287.132356477332,Shingle (wood),Finished – Cement blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,Medium -region_0,79,3.6825032578448655,2045.8803882677512,1329.8222523740383,102.29401941338756,False,613.7641164803254,5845.3725379078605,Finished – Metal,Plywood,Finished – Parquet or polished wood,1631.2129563527978,False,True,False,Medium -region_1,80,22.975244031361996,1006.2155426995536,838.512952249628,167.70259044992554,True,0.0,2874.901550570153,Finished – Concrete,Wood/Timber,Finished – Parquet or polished wood,1631.2129563527978,True,True,False,Low -region_2,81,23.87640486221907,1890.164056081244,1575.1367134010368,315.0273426802073,True,0.0,5400.468731660698,Finished – Metal,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,Medium -region_2,82,67.51738161627411,2178.5562857558734,1416.0615857413177,108.9278142877937,False,653.566885726762,6224.4465307310675,"Sheet metal (galvanize, galvalume)",Concrete/Concrete Blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,High -region_0,83,2.9513432376820514,2738.947022370758,1780.315564540993,136.94735111853777,False,821.6841067112274,7825.562921059309,Finished – Metal,Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_0,84,11.30674961647281,1740.8648908631762,1450.7207423859802,290.14414847719604,True,0.0,4973.899688180503,Finished – Concrete,Wood & Concrete,Finished – Cement/red bricks,1631.2129563527978,False,True,False,Low -region_1,85,80.19169245194574,1595.7531985534063,1037.239579059714,79.78765992767035,False,478.72595956602186,4559.294853009732,Shingle (asphalt),Natural – Other,Finished – Cement/red bricks,1631.2129563527978,True,False,False,Low -region_1,86,18.675921543379026,1749.1214782077318,1457.6012318397766,291.5202463679552,True,0.0,4997.489937736376,Finished – Concrete,Brick/Blocks,Rudimentary – Wood planks,1631.2129563527978,False,False,False,Low -region_2,87,65.6218646773356,2457.701058851037,2048.0842157091975,409.6168431418396,True,0.0,7022.003025288677,Concrete,Wood & Concrete,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,High -region_2,88,24.580095323625926,2164.3755548298423,1803.6462956915352,360.72925913830704,True,0.0,6183.930156656692,Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,True,High -region_0,89,10.84469788317517,1735.1198981164807,1127.8279337757126,86.75599490582397,False,520.5359694349441,4957.485423189945,Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,Low -region_2,90,25.074046908945956,2256.633716556678,1880.528097130565,376.105619426113,True,0.0,6447.524904447651,Concrete,Concrete/Concrete Blocks,Other,1631.2129563527978,False,False,True,High -region_1,91,72.50442625371025,2048.5387746740203,1331.5502035381132,102.42693873370092,False,614.5616324022061,5852.967927640058,Concrete,Finished – Cement blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,False,Medium -region_1,92,85.7139503425223,2484.3224952664445,2070.2687460553707,414.05374921107386,True,0.0,7098.064272189842,Shingle (asphalt),Finished – Cement blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,False,High -region_0,93,83.19176659213217,1648.9734530613239,1374.1445442177699,274.828908843554,True,0.0,4711.352723032354,Concrete,Brick/Blocks,Finished – Parquet or polished wood,1631.2129563527978,False,True,False,Low -region_1,94,40.32116943222703,1836.1689267011159,1530.14077225093,306.02815445018587,True,0.0,5246.19693343176,Finished – Concrete,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,Medium -region_1,95,67.14042852049397,1803.9459234339213,1503.2882695282678,300.65765390565343,True,0.0,5154.131209811204,Shingle (wood),Concrete/Concrete blocks,Finished – Cement/red bricks,1631.2129563527978,False,False,False,Medium -region_1,96,21.293445246166275,1268.2425259339407,824.3576418570614,63.412126296697124,False,380.4727577801822,3623.5500740969733,Finished – Metal,Wood & Concrete,Rudimentary – Wood planks,1631.2129563527978,True,True,False,Low -region_1,97,30.021625295840312,2148.060138532288,1790.0501154435733,358.01002308871466,True,0.0,6137.314681520823,Shingle (asphalt),Concrete/Concrete Blocks,Other,1631.2129563527978,False,False,False,Medium -region_0,98,89.73724603359085,2130.5276360899447,1384.842963458464,106.5263818044973,False,639.1582908269834,6087.221817399843,Concrete,Wood & Concrete,Finished – Parquet or polished wood,1631.2129563527978,False,False,False,Medium -region_0,99,2.2871904275628676,2002.5567283212304,1668.7972736010254,333.759454720205,True,0.0,5721.590652346373,Concrete,Concrete/Concrete blocks,Finished – Parquet or polished wood,1631.2129563527978,False,False,True,Medium -region_2,100,9.46534455459234,1882.7064333124265,1568.9220277603554,313.7844055520711,True,0.0,5379.1612380355045,Concrete,Brick/Blocks,Other,1631.2129563527978,False,False,True,Medium +spatial_unit,household_id,household_weight,inc,exp,sav,owns_house,rent,k_house,keff,roof,walls,floor,poverty_line,is_poor,female_headed,urban,literacy +region_0,1,91.74688834827953,2248.3570765056165,1729.505443465859,518.8516330397576,True,0.0,8993.428306022466,8993.428306022466,Tile,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_0,2,43.66753683081633,1930.8678494144076,1485.2829610880058,445.5848883264018,True,0.0,7723.47139765763,7723.47139765763,Concrete,Wood & Concrete,Other,1587.805320337052,False,True,True,Medium +region_0,3,32.567815013792746,2323.844269050346,1787.5725146541124,536.2717543962337,True,0.0,9295.377076201385,9295.377076201385,Finished – Concrete,Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_1,4,58.63767591281727,2761.514928204013,2124.2422524646254,637.2726757393875,True,0.0,11046.059712816052,11046.059712816052,Finished – Concrete,Natural – Other,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_0,5,37.74606992032513,1882.923312638332,1223.900153214916,94.14616563191646,False,564.8769937914996,7531.693250553328,2636.092637693664,Finished – Metal,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_0,6,60.50634251322306,1882.9315215254096,1223.9054889915162,94.14657607627055,False,564.8794564576228,7531.726086101638,2636.1041301355735,Shingle (asphalt),Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_1,7,70.85300040173864,2789.6064077536957,2145.8510828874582,643.7553248662375,True,0.0,11158.425631014783,11158.425631014783,Finished – Concrete,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_1,8,69.15209683072155,2383.717364576454,1833.6287419818877,550.0886225945665,True,0.0,9534.869458305817,9534.869458305817,Finished – Metal,Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,9,38.08073581499201,1765.262807032524,1357.8944669480954,407.3683400844286,True,0.0,7061.051228130096,7061.051228130096,Finished – Concrete,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_1,10,17.519159968176528,2271.2800217929826,1747.1384783022943,524.1415434906883,True,0.0,9085.12008717193,9085.12008717193,Finished – Concrete,Finished – Stone with lime/cement,Other,1587.805320337052,False,False,False,High +region_1,11,43.622404507758546,1768.291153593769,1149.3892498359498,88.41455767968841,False,530.4873460781307,7073.164614375076,2475.6076150312765,Finished – Concrete,Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_2,12,15.116820264108965,1767.1351232148716,1359.3347101652857,407.8004130495858,True,0.0,7068.540492859486,7068.540492859486,Concrete,Finished – Stone with lime/cement,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_1,13,89.11960648319703,2120.981135783017,1378.6377382589612,106.04905678915077,False,636.2943407349052,8483.924543132069,2969.373590096224,Tile,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_1,14,35.241868613047885,1043.359877671101,802.5845212854623,240.7753563856387,True,0.0,4173.439510684404,4173.439510684404,Shingle (asphalt),Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,True,False,False,Low +region_1,15,16.291514975109052,1137.5410837434836,875.0316028796027,262.50948086388087,True,0.0,4550.164334973934,4550.164334973934,Tile,Finished – Stone with lime/cement,Finished – Parquet or polished wood,1587.805320337052,True,True,False,Low +region_1,16,3.5193282306693368,1718.8562353795137,1322.1971041380873,396.6591312414264,True,0.0,6875.424941518055,6875.424941518055,Finished – Metal,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Low +region_2,17,64.93641624236194,1493.5844398327881,970.8298858913122,74.67922199163951,False,448.0753319498364,5974.3377593311525,2091.0182157659037,Finished – Concrete,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,True,False,True,Low +region_1,18,64.05332942801958,2157.123666297637,1659.3258971520286,497.7977691456085,True,0.0,8628.494665190548,8628.494665190548,Finished – Asbestos,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_1,19,34.71981249154788,1545.9879622393946,1004.8921754556064,77.29939811196982,False,463.79638867181836,6183.9518489575785,2164.3831471351527,Finished – Metal,Plywood,Other,1587.805320337052,True,False,True,Low +region_2,20,8.099476995917449,1293.8481493323543,841.0012970660302,64.6924074666178,False,388.15444479970625,5175.392597329417,1811.3874090652962,Finished – Metal,Finished – Stone with lime/cement,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_0,21,41.55326059462797,2732.824384460777,2102.172603431367,630.6517810294099,True,0.0,10931.297537843107,10931.297537843107,Concrete,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,22,31.810532011275964,1887.1118497567322,1226.622702341876,94.35559248783659,False,566.1335549270196,7548.447399026929,2641.956589659425,Finished – Concrete,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,False,Medium +region_0,23,68.03494333376592,2033.764102343962,1564.4339248799706,469.3301774639913,True,0.0,8135.056409375848,8135.056409375848,Finished – Concrete,Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_2,24,60.972145695816344,1287.6259068932716,990.4814668409781,297.1444400522935,True,0.0,5150.503627573086,5150.503627573086,Finished – Metal,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,True,True,False,Low +region_2,25,37.09477909155646,1727.8086377374086,1329.0835674903142,398.72507024709444,True,0.0,6911.2345509496345,6911.2345509496345,Tile,Wood & Concrete,Rudimentary – Wood planks,1587.805320337052,False,False,False,Low +region_1,26,22.57136287124402,2055.461294854933,1336.0498416557061,102.7730647427469,False,616.6383884564799,8221.845179419732,2877.645812796907,Tile,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_0,27,98.8155606494036,1424.5032112888484,925.9270873377516,71.22516056444232,False,427.35096338665454,5698.012845155394,1994.3044958043874,Tile,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,28,45.946160498415374,2187.849009172836,1682.9607762867968,504.8882328860391,True,0.0,8751.396036691343,8751.396036691343,Shingle (other),Concrete/Concrete blocks,Other,1587.805320337052,False,False,True,High +region_0,29,69.13914934224347,1699.6806550405975,1104.7924257763884,84.9840327520298,False,509.9041965121792,6798.72262016239,2379.552917056836,Shingle (other),Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,True,Low +region_2,30,14.914743790257717,1854.1531251033616,1205.1995313171851,92.70765625516799,False,556.2459375310085,7416.6125004134465,2595.814375144706,Shingle (asphalt),Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_2,31,49.07338026628038,1699.1466938853016,1307.035918373309,392.11077551199264,True,0.0,6796.586775541206,6796.586775541206,"Sheet metal (galvanize, galvalume)",Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_0,32,3.7261352670770833,2926.139092254469,2250.8762248111298,675.262867443339,True,0.0,11704.556369017875,11704.556369017875,Concrete,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,High +region_1,33,51.04005667313454,1993.2513876310331,1295.6134019601714,99.66256938155186,False,597.9754162893099,7973.005550524133,2790.551942683447,Concrete,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_1,34,96.43772330465254,1471.1445355220499,1131.649642709269,339.4948928127808,True,0.0,5884.5781420881995,5884.5781420881995,Concrete,Plywood,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,35,39.036464585594224,2411.2724560515944,1854.824966193534,556.4474898580604,True,0.0,9645.089824206378,9645.089824206378,Shingle (asphalt),Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_1,36,4.860605244916247,1389.5781750144888,1068.9062884726836,320.6718865418052,True,0.0,5558.312700057955,5558.312700057955,Shingle (wood),Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,True,False,True,Low +region_2,37,4.0646233010150095,2104.431797502378,1367.8806683765456,105.22158987511887,False,631.3295392507133,8417.727190009511,2946.2045165033287,Finished – Concrete,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,True,True,Medium +region_2,38,39.410689234740076,1020.1649380601123,663.1072097390729,51.00824690300567,False,306.0494814180337,4080.659752240449,1428.2309132841574,Shingle (wood),Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,True,False,False,Low +region_2,39,16.84246870985621,1335.9069755507849,868.33953410801,66.79534877753946,False,400.77209266523545,5343.6279022031395,1870.2697657710996,Concrete,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,True,True,False,Low +region_2,40,3.3118575364904053,2098.4306179345617,1614.1773984112012,484.2532195233605,True,0.0,8393.722471738247,8393.722471738247,Shingle (wood),Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_2,41,75.8651477810675,2369.2332899977055,1540.0016384985083,118.4616644998855,False,710.7699869993116,9476.933159990822,3316.9266059967886,Finished – Concrete,Wood & Concrete,Other,1587.805320337052,False,False,True,High +region_1,42,46.39377787930718,2085.6841405949854,1355.6946913867405,104.28420702974927,False,625.7052421784956,8342.736562379941,2919.9577968329795,Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_1,43,29.6352324252928,1942.1758588058797,1493.9814298506767,448.19442895520297,True,0.0,7768.703435223519,7768.703435223519,Finished – Metal,Wood & Concrete,Other,1587.805320337052,False,False,True,Medium +region_1,44,90.1082351186316,1849.4481522053557,1202.141298933481,92.47240761026796,False,554.8344456616067,7397.792608821423,2589.2274130874985,Finished – Concrete,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,True,Medium +region_1,45,12.497757059852034,1260.7390048162863,969.7992344740663,290.93977034221996,True,0.0,5042.956019265145,5042.956019265145,Finished – Concrete,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,True,True,True,Low +region_2,46,95.6359640665766,1640.0778958026458,1261.5983813866505,378.47951441599525,True,0.0,6560.311583210583,6560.311583210583,Finished – Concrete,Plywood,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_2,47,32.08270502035793,1769.6806145201062,1361.2927804000817,408.38783412002454,True,0.0,7078.722458080425,7078.722458080425,Shingle (other),Finished – GRC/Gypsum/Asbestos,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_2,48,88.95196355855944,2528.561113109458,1945.0470100841983,583.5141030252596,True,0.0,10114.244452437832,10114.244452437832,Tile,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_0,49,60.691344771466696,2171.8091447842307,1670.622419064793,501.18672571943785,True,0.0,8687.236579136923,8687.236579136923,Finished – Concrete,Rudimentary – Plywood,Finished – Cement/red bricks,1587.805320337052,False,True,True,Medium +region_1,50,82.84402861440726,1118.479922318633,727.0119495071115,55.923996115931686,False,335.5439766955899,4473.919689274532,1565.8718912460863,Tile,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,51,98.41730315783596,2162.0419846973973,1663.109218997998,498.9327656993994,True,0.0,8648.16793878959,8648.16793878959,Shingle (asphalt),Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,False,True,True,Medium +region_2,52,29.552138344055827,1807.4588597918419,1174.848258864697,90.37294298959227,False,542.2376579375525,7229.835439167367,2530.442403708579,Finished – Concrete,Finished – Stone with lime/cement,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_1,53,96.1524130553517,1661.5389998470207,1278.1069229592467,383.432076887774,True,0.0,6646.155999388083,6646.155999388083,Finished – Metal,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Low +region_1,54,39.55870759533961,2305.8381444204338,1773.7216495541797,532.116494866254,True,0.0,9223.352577681735,9223.352577681735,Concrete,Wood & Concrete,Rudimentary – Wood planks,1587.805320337052,False,True,True,High +region_2,55,39.16567856895531,2515.4997612479756,1934.9998163445966,580.499944903379,True,0.0,10061.999044991902,10061.999044991902,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_0,56,34.698323321196064,2465.6400595580994,1896.6461996600765,568.993859898023,True,0.0,9862.560238232398,9862.560238232398,Shingle (asphalt),Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_0,57,54.599353127410936,1580.3912383886807,1215.6855679912928,364.70567039738785,True,0.0,6321.564953554723,6321.564953554723,Concrete,Natural – Other,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_0,58,16.260359274670222,1845.3938120743928,1419.5337015956868,425.860110478706,True,0.0,7381.575248297571,7381.575248297571,Tile,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_2,59,55.817437050443104,2165.631715701782,1407.6606152061581,108.2815857850893,False,649.6895147105346,8662.526862807128,3031.8844019824955,Shingle (asphalt),Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_1,60,54.6287764285904,2487.7725635611796,1913.671202739369,574.1013608218107,True,0.0,9951.090254244718,9951.090254244718,Concrete,Finished – Cement blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_2,61,76.42827944788213,1760.412881077355,1354.1637546748884,406.2491264024666,True,0.0,7041.65152430942,7041.65152430942,Tile,Finished – Cement blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Low +region_2,62,83.53134623182098,1907.1705116680914,1467.0542397446857,440.11627192340575,True,0.0,7628.682046672366,7628.682046672366,Finished – Concrete,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_1,63,44.60369368092998,1446.8325129969858,940.4411334480405,72.3416256498495,False,434.0497538990957,5787.330051987943,2025.565518195781,"Sheet metal (galvanize, galvalume)",Natural – Other,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_0,64,30.93099168579788,1401.8966879596646,1078.3820676612804,323.5146202983842,True,0.0,5607.5867518386585,5607.5867518386585,Finished – Metal,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,True,True,False,Low +region_0,65,26.674154834392354,2406.262911197099,1564.0708922781146,120.31314555985489,False,721.8788733591297,9625.051644788397,3368.7680756759382,Shingle (other),Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_2,66,20.26775983378232,2678.1200142854113,2060.0923186810855,618.0276956043258,True,0.0,10712.480057141645,10712.480057141645,Tile,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_0,67,6.7071106377034635,1963.994939209833,1276.5967104863917,98.19974696049155,False,589.1984817629499,7855.979756839332,2749.5929148937657,Concrete,Wood/Timber,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_2,68,34.90234990463662,2501.766448946012,1924.4357299584708,577.3307189875413,True,0.0,10007.065795784049,10007.065795784049,Shingle (asphalt),Wood & Concrete,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_2,69,27.75452152094754,2180.818012523817,1417.5317081404805,109.04090062619127,False,654.245403757145,8723.272050095267,3053.145217533345,"Sheet metal (galvanize, galvalume)",Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_1,70,96.67532120077433,1677.4401226974378,1290.338555921106,387.10156677633177,True,0.0,6709.760490789751,6709.760490789751,Tile,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_1,71,56.21317379875435,2180.697802754207,1417.453571790234,109.0348901377107,False,654.2093408262621,8722.791211016827,3052.976923855891,Shingle (other),Wood/Timber,Finished – Parquet or polished wood,1587.805320337052,False,True,False,High +region_1,72,35.38042686402025,2769.0182832329847,2130.0140640253726,639.0042192076121,True,0.0,11076.073132931939,11076.073132931939,Finished – Asbestos,Wood/Timber,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_2,73,58.4662924983759,1982.0869804450242,1524.6822926500186,457.40468779500566,True,0.0,7928.347921780097,7928.347921780097,Finished – Concrete,Natural – Other,Finished – Cement/red bricks,1587.805320337052,False,True,False,Medium +region_1,74,14.780473433223856,2782.3218279070034,2140.247559928464,642.0742679785394,True,0.0,11129.287311628013,11129.287311628013,Finished – Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,False,High +region_0,75,44.96033117101809,1000.0,650.0,50.0,False,300.0,4000.0,1400.0,Tile,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,True,True,True,Low +region_0,76,62.99719782068532,2410.9512521876118,1567.1183139219474,120.54756260938086,False,723.2853756562835,9643.805008750447,3375.3317530626573,Finished – Metal,Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,77,49.400885347452686,2043.5235341190855,1328.2902971774056,102.17617670595428,False,613.0570602357257,8174.094136476342,2860.9329477667197,Finished – Asbestos,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_2,78,40.7761012647781,1850.4963247670662,1423.4587113592816,427.03761340778465,True,0.0,7401.985299068265,7401.985299068265,Shingle (wood),Finished – Stone with lime/cement,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_1,79,99.39099050107012,2045.8803882677512,1573.754144821347,472.12624344640426,True,0.0,8183.521553071005,8183.521553071005,Finished – Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_2,80,88.15116145274378,1006.2155426995536,654.0401027547098,50.31077713497774,False,301.86466280986605,4024.8621707982143,1408.7017597793752,Finished – Concrete,Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_2,81,62.71718985778457,1890.164056081244,1453.972350831726,436.191705249518,True,0.0,7560.656224324976,7560.656224324976,Shingle (other),Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_0,82,57.368358757045996,2178.5562857558734,1675.812527504518,502.74375825135553,True,0.0,8714.225143023494,8714.225143023494,Finished – Concrete,Brick/Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_0,83,62.44538750263382,2738.947022370758,2106.882324900583,632.0646974701749,True,0.0,10955.788089483032,10955.788089483032,Finished – Asbestos,Rudimentary – Plywood,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_1,84,20.92989867442089,1740.8648908631762,1339.12683912552,401.7380517376562,True,0.0,6963.459563452705,6963.459563452705,Finished – Metal,Natural – Other,Other,1587.805320337052,False,False,False,Low +region_2,85,40.11863658316754,1595.7531985534063,1227.502460425697,368.25073812770916,True,0.0,6383.012794213625,6383.012794213625,Shingle (asphalt),Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,True,Low +region_2,86,4.9064937561990325,1749.1214782077318,1345.4780601597936,403.6434180479382,True,0.0,6996.485912830927,6996.485912830927,Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_0,87,48.07905771119584,2457.701058851037,1890.5392760392592,567.1617828117778,True,0.0,9830.804235404148,9830.804235404148,Shingle (asphalt),Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,True,High +region_2,88,54.759433811808655,2164.3755548298423,1664.9042729460325,499.47128188380975,True,0.0,8657.502219319369,8657.502219319369,Finished – Metal,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_0,89,23.54722387421775,1735.1198981164807,1127.8279337757126,86.75599490582397,False,520.5359694349441,6940.479592465923,2429.1678573630725,Tile,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Low +region_1,90,96.43885586938586,2256.633716556678,1735.872089658983,520.7616268976949,True,0.0,9026.534866226712,9026.534866226712,Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_0,91,91.03600648278696,2048.5387746740203,1575.799057441554,472.7397172324663,True,0.0,8194.155098696081,8194.155098696081,Shingle (other),Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,Medium +region_2,92,72.49218031013469,2484.3224952664445,1911.017304051111,573.3051912153335,True,0.0,9937.289981065778,9937.289981065778,Finished – Asbestos,Finished – GRC/Gypsum/Asbestos,Rudimentary – Wood planks,1587.805320337052,False,False,False,High +region_1,93,53.8052762477709,1648.9734530613239,1268.44111773948,380.5323353218439,True,0.0,6595.8938122452955,6595.8938122452955,Finished – Concrete,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_0,94,87.12694680512081,1836.1689267011159,1193.5098023557252,91.80844633505592,False,550.8506780103347,7344.6757068044635,2570.6364973815625,Concrete,Brick/Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_0,95,13.934582038522828,1803.9459234339213,1172.564850232049,90.19729617169605,False,541.1837770301763,7215.783693735685,2525.5242928074895,Concrete,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_1,96,79.26046963321362,1268.2425259339407,975.571173795339,292.6713521386017,True,0.0,5072.970103735763,5072.970103735763,Shingle (asphalt),Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_1,97,13.35726058271798,2148.060138532288,1652.3539527171445,495.7061858151435,True,0.0,8592.240554129152,8592.240554129152,Tile,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_0,98,79.62685559239114,2130.5276360899447,1384.842963458464,106.5263818044973,False,639.1582908269834,8522.110544359779,2982.7386905259227,Tile,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_2,99,28.30098925688434,2002.5567283212304,1301.6618734087997,100.12783641606154,False,600.7670184963691,8010.2269132849215,2803.5794196497227,Finished – Concrete,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_0,100,87.8319675208007,1882.7064333124265,1448.2357179326357,434.4707153797908,True,0.0,7530.825733249706,7530.825733249706,Finished – Concrete,Wood/Timber,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_1,101,94.46016728871439,1292.3146289747929,840.0045088336153,64.61573144873972,False,387.6943886924378,5169.2585158991715,1809.2404805647102,Tile,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,True,True,False,Low +region_0,102,15.730800971106447,1789.6773386173204,1376.6748758594772,413.0024627578432,True,0.0,7158.709354469282,7158.709354469282,Finished – Metal,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_1,103,46.804884901473955,1828.6427417366153,1188.6177821288,91.43213708683083,False,548.5928225209846,7314.570966946461,2560.0998384312616,"Sheet metal (galvanize, galvalume)",Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_1,104,98.11775043810583,1598.8613653891905,1229.893357991685,368.9680073975055,True,0.0,6395.445461556762,6395.445461556762,Concrete,Brick/Blocks,Other,1587.805320337052,False,False,False,Low +region_2,105,48.857336161341514,1919.3571441669953,1247.582143708547,95.96785720834987,False,575.8071432500985,7677.428576667981,2687.1000018337936,Shingle (asphalt),Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_1,106,86.49120472893996,2202.0254284072694,1693.8657141594379,508.1597142478315,True,0.0,8808.101713629077,8808.101713629077,Finished – Metal,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,High +region_1,107,59.28442069100066,2943.0929506052653,2263.9176543117424,679.1752962935229,True,0.0,11772.371802421061,11772.371802421061,Finished – Metal,Finished – Stone with lime/cement,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_2,108,38.15766088404058,2087.2889064159194,1605.6068510891687,481.68205532675074,True,0.0,8349.155625663678,8349.155625663678,Shingle (asphalt),Rudimentary – Plywood,Finished – Parquet or polished wood,1587.805320337052,False,True,False,Medium +region_1,109,29.29257199706115,2128.775195361382,1637.519381047217,491.25581431416504,True,0.0,8515.100781445528,8515.100781445528,Shingle (asphalt),Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_2,110,21.11908601752264,1962.7770421169164,1509.8284939360894,452.94854818082695,True,0.0,7851.108168467666,7851.108168467666,"Sheet metal (galvanize, galvalume)",Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_2,111,76.41802094639202,1040.6143923504792,800.4726095003685,240.14178285011064,True,0.0,4162.457569401917,4162.457569401917,Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_1,112,39.26751017547976,1986.7430622753916,1528.2638940579934,458.4791682173982,True,0.0,7946.972249101566,7946.972249101566,Concrete,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,False,Medium +region_1,113,51.61627075787436,2030.1151049705131,1319.5748182308334,101.50575524852582,False,609.0345314911539,8120.4604198820525,2842.1611469587187,Shingle (other),Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_0,114,49.74022252011701,3000.0,2307.6923076923076,692.3076923076924,True,0.0,12000.0,12000.0,Tile,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_2,115,58.15062389407999,1903.8195176094387,1464.4765520072604,439.3429656021783,True,0.0,7615.278070437755,7615.278070437755,Finished – Concrete,Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_0,116,86.69213741683068,2150.7736711668063,1398.002886258424,107.53868355834038,False,645.2321013500418,8603.094684667225,3011.083139633529,Concrete,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_1,117,98.09319501475952,1982.6441151473784,1288.7186748457957,99.1322057573692,False,594.7932345442135,7930.576460589514,2775.701761206331,Concrete,Finished – Cement blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_0,118,41.35083664880788,1415.660981190234,920.1796377736521,70.78304905951171,False,424.6982943570702,5662.643924760936,1981.9253736663277,Shingle (wood),Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_2,119,82.92437328852401,2571.4114072575103,1671.4174147173817,128.57057036287551,False,771.4234221772531,10285.645629030041,3599.975970160514,Concrete,Brick/Blocks,Other,1587.805320337052,False,False,True,High +region_0,120,76.68825167081705,2375.966516343387,1827.6665510333746,548.2999653100123,True,0.0,9503.866065373548,9503.866065373548,Finished – Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_2,121,57.779366194101755,2395.5159735215234,1842.7045950165564,552.811378504967,True,0.0,9582.063894086094,9582.063894086094,Finished – Concrete,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_1,122,95.64866721758138,1545.3062726026305,1004.4490771917096,77.26531363013174,False,463.59188178078915,6181.225090410522,2163.4287816436836,Finished – Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,123,20.846977037311877,2701.3971554680497,2077.9978118984995,623.3993435695502,True,0.0,10805.588621872199,10805.588621872199,Concrete,Finished – Stone with lime/cement,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_2,124,11.817156820652519,1299.0744686038597,999.2880527721998,299.78641583165995,True,0.0,5196.297874415439,5196.297874415439,Finished – Metal,Concrete/Concrete Blocks,Other,1587.805320337052,True,False,True,Low +region_1,125,85.54223472858679,2293.428546900135,1490.7285554850878,114.67142734500692,False,688.0285640700405,9173.71418760054,3210.7999656601896,Concrete,Plywood,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_1,126,44.47583184674108,3000.0,2307.6923076923076,692.3076923076924,True,0.0,12000.0,12000.0,Shingle (other),Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,High +region_1,127,84.84991656649899,1504.7318374346557,1157.486028795889,347.2458086387667,True,0.0,6018.927349738623,6018.927349738623,Finished – Concrete,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,True,False,True,Low +region_1,128,89.41593031434608,1716.851135198614,1320.6547193835493,396.1964158150647,True,0.0,6867.404540794456,6867.404540794456,Tile,Concrete/Concrete blocks,Other,1587.805320337052,False,False,False,Low +region_2,129,7.183301768288072,2049.8256825438207,1576.7889865721697,473.03669597165094,True,0.0,8199.302730175283,8199.302730175283,Finished – Asbestos,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,False,True,False,Medium +region_0,130,88.46301153562001,1748.2621729419004,1344.817056109154,403.4451168327464,True,0.0,6993.048691767602,6993.048691767602,Shingle (asphalt),Wood/Timber,Rudimentary – Wood planks,1587.805320337052,False,True,False,Low +region_0,131,45.3835864815728,1224.6682844669335,942.0525265130258,282.61575795390775,True,0.0,4898.673137867734,4898.673137867734,Tile,Rudimentary – Plywood,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,132,51.53281641141899,2034.2814874030137,1322.2829668119589,101.71407437015068,False,610.2844462209041,8137.125949612055,2847.994082364219,Finished – Concrete,Finished – Cement blocks,Other,1587.805320337052,False,False,True,Medium +region_0,133,63.03265859822781,1468.8481431369476,1129.8831870284212,338.9649561085264,True,0.0,5875.39257254779,5875.39257254779,Finished – Concrete,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,True,False,True,Low +region_0,134,92.71187806627859,2236.796215317591,1720.6124733212237,516.1837419963672,True,0.0,8947.184861270363,8947.184861270363,Shingle (asphalt),Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_1,135,2.892493348546639,1540.2878828830985,1001.1871238740141,77.01439414415489,False,462.0863648649295,6161.151531532394,2156.4030360363377,"Sheet metal (galvanize, galvalume)",Wood/Timber,Rudimentary – Wood planks,1587.805320337052,True,False,False,Low +region_1,136,48.20750336346389,2774.96720250877,1803.7286816307005,138.74836012543835,False,832.4901607526309,11099.86881003508,3884.954083512277,Shingle (asphalt),Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_0,137,69.0844822006255,1608.3733538318816,1045.4426799907228,80.4186676915943,False,482.51200614956446,6433.493415327526,2251.722695364635,Tile,Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Low +region_2,138,72.54798881212461,1838.9692418971622,1195.3300072331554,91.9484620948582,False,551.6907725691486,7355.876967588649,2574.5569386560273,Shingle (other),Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_1,139,69.5607107221737,2406.758608684835,1851.3527759114115,555.4058327734235,True,0.0,9627.03443473934,9627.03443473934,Finished – Metal,Finished – Stone with lime/cement,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_2,140,14.309077811404064,1384.5678417830222,899.9690971589644,69.22839208915121,False,415.37035253490666,5538.271367132089,1938.3949784962317,Concrete,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_0,141,30.64016324879644,2113.729967302065,1625.9461286938958,487.78383860816894,True,0.0,8454.91986920826,8454.91986920826,Tile,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_1,142,36.51283701628433,2653.571377141214,2041.2087516470874,612.3626254941264,True,0.0,10614.285508564855,10614.285508564855,"Sheet metal (galvanize, galvalume)",Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,143,80.639283560271,1196.2583827193862,920.1987559379893,276.0596267813969,True,0.0,4785.033530877545,4785.033530877545,Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,True,True,False,Low +region_1,144,28.59722736904075,2092.3169292661523,1609.4745609739632,482.8423682921891,True,0.0,8369.26771706461,8369.26771706461,Shingle (asphalt),Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_0,145,21.859791422853114,2129.9413971242116,1638.4164593263165,491.52493779789506,True,0.0,8519.765588496846,8519.765588496846,Finished – Concrete,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_2,146,95.78735388477152,2390.9114358886554,1839.1626429912733,551.7487928973821,True,0.0,9563.645743554622,9563.645743554622,Tile,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_0,147,1.877465226233421,1381.5246445609591,1062.7112650468916,318.8133795140675,True,0.0,5526.0985782438365,5526.0985782438365,Concrete,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,True,False,True,Low +region_0,148,99.78426471251584,1339.7716934578618,1030.5936103522013,309.17808310566056,True,0.0,5359.086773831447,5359.086773831447,Finished – Metal,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,True,False,True,Low +region_1,149,68.00530858688217,2260.970782808449,1739.2082944680376,521.7624883404112,True,0.0,9043.883131233795,9043.883131233795,Shingle (other),Wood & Concrete,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_2,150,83.0184606454626,2148.492336616593,1652.6864127819947,495.8059238345984,True,0.0,8593.969346466372,8593.969346466372,Finished – Concrete,Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_0,151,30.167320238273124,2125.2464251729384,1381.4101763624099,106.26232125864703,False,637.5739275518815,8500.985700691754,2975.3449952421142,Shingle (asphalt),Brick/Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_0,152,2.417212489038938,2173.2241047484877,1671.7108498065288,501.51325494195885,True,0.0,8692.89641899395,8692.89641899395,Shingle (other),Wood & Concrete,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_2,153,74.04908233759147,1659.9876392107547,1276.9135686236573,383.07407058709737,True,0.0,6639.950556843019,6639.950556843019,Shingle (wood),Finished – Stone with lime/cement,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Low +region_0,154,83.58031510306691,2116.1268485805017,1627.7898835234628,488.3369650570389,True,0.0,8464.507394322007,8464.507394322007,Finished – Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,False,True,False,Medium +region_0,155,74.3071370633984,2146.5362366493405,1395.2485538220712,107.32681183246711,False,643.9608709948021,8586.144946597362,3005.150731309077,Finished – Metal,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_2,156,15.14217844278302,1642.824290986816,1263.7109930667816,379.1132979200345,True,0.0,6571.297163947264,6571.297163947264,Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_2,157,75.58936430343994,2932.8872555723783,2256.06711967106,676.8201359013183,True,0.0,11731.549022289513,11731.549022289513,"Sheet metal (galvanize, galvalume)",Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,158,77.12335542865645,2236.9164604558937,1720.7049695814567,516.211490874437,True,0.0,8947.665841823575,8947.665841823575,Shingle (wood),Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_2,159,66.19551105133543,1404.3482513986755,1080.267885691289,324.0803657073866,True,0.0,5617.393005594702,5617.393005594702,Tile,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,True,False,True,Low +region_1,160,76.84547734676303,2328.276804316915,1513.3799228059943,116.41384021584611,False,698.4830412950745,9313.10721726766,3259.5875260436824,Finished – Asbestos,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,161,84.74622252809549,1512.6591648863393,983.2284571761205,75.63295824431702,False,453.7977494659018,6050.636659545357,2117.7228308408753,Finished – Metal,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,True,True,True,Low +region_1,162,61.746807309508384,2393.542301871226,1841.186386054789,552.3559158164369,True,0.0,9574.169207484903,9574.169207484903,Shingle (asphalt),Finished – Stone with lime/cement,Other,1587.805320337052,False,False,False,High +region_1,163,9.771866682998226,2579.297789503702,1676.5435631774062,128.96488947518526,False,773.7893368511105,10317.191158014808,3611.016905305183,Concrete,Finished – GRC/Gypsum/Asbestos,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_1,164,49.27515315705388,1589.6588408241448,1033.278246535694,79.48294204120737,False,476.8976522472434,6358.635363296579,2225.522377153803,Shingle (other),Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Low +region_0,165,8.687284132488902,2481.6880646221607,1908.9908189401235,572.6972456820372,True,0.0,9926.752258488643,9926.752258488643,Concrete,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_1,166,41.34676007221065,2206.390463468249,1434.1538012543617,110.31952317341256,False,661.9171390404747,8825.561853872996,3088.946648855549,Finished – Asbestos,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,High +region_1,167,41.303542423437136,2411.030079997245,1854.638523074804,556.3915569224412,True,0.0,9644.12031998898,9644.12031998898,Shingle (other),Finished – Cement blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_0,168,7.534974569883916,2948.396491326974,2267.997301020749,680.3991903062247,True,0.0,11793.585965307895,11793.585965307895,Shingle (asphalt),Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_0,169,35.53323286297845,1877.3059419985648,1444.0814938450499,433.2244481535149,True,0.0,7509.223767994259,7509.223767994259,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_0,170,11.98881178034017,1623.1319178212552,1055.0357465838158,81.15659589106286,False,486.93957534637656,6492.527671285021,2272.3846849497577,Finished – Concrete,Concrete/Concrete Blocks,Other,1587.805320337052,False,False,True,Low +region_2,171,81.015285790913,1555.2427851872383,1196.3406039901834,358.9021811970549,True,0.0,6220.971140748953,6220.971140748953,Finished – Concrete,Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,True,True,True,Low +region_0,172,94.8211145704826,1592.0948575172808,1034.8616573862325,79.60474287586408,False,477.62845725518423,6368.379430069123,2228.932800524193,Finished – Concrete,Finished – Stone with lime/cement,Rudimentary – Wood planks,1587.805320337052,False,True,False,Low +region_0,173,8.159331050535922,1961.4491452929478,1274.9419444404161,98.07245726464737,False,588.4347435878843,7845.796581171791,2746.028803410127,Concrete,Rudimentary – Plywood,Rudimentary – Wood planks,1587.805320337052,False,False,False,Medium +region_1,174,95.55640552187845,2170.575987408322,1669.67383646794,500.90215094038194,True,0.0,8682.303949633288,8682.303949633288,Shingle (wood),Natural – Other,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_0,175,52.73508333433777,2138.3453996650096,1389.924509782256,106.91726998325066,False,641.5036198995028,8553.381598660038,2993.683559531014,Tile,Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_2,176,30.657002117433517,2413.591624518012,1856.6089419369323,556.9826825810796,True,0.0,9654.366498072048,9654.366498072048,Finished – Concrete,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_0,177,8.609345452340188,2006.5009459389535,1543.4622661068872,463.03867983206624,True,0.0,8026.003783755814,8026.003783755814,Finished – Metal,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,True,False,Medium +region_2,178,50.561802538971364,2726.7670385786587,2097.513106598968,629.2539319796906,True,0.0,10907.068154314635,10907.068154314635,Finished – Metal,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_0,179,79.65703890458411,1867.671583381022,1436.6704487546322,431.0011346263898,True,0.0,7470.686333524088,7470.686333524088,Tile,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_0,180,71.00156124940311,3000.0,2307.6923076923076,692.3076923076924,True,0.0,12000.0,12000.0,Finished – Metal,Finished – Cement blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_0,181,5.972375134933403,2312.8336738825033,1503.341888023627,115.64168369412528,False,693.850102164751,9251.334695530013,3237.967143435505,Shingle (wood),Finished – GRC/Gypsum/Asbestos,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_0,182,8.217281701422447,1571.4212217918587,1208.7855552245067,362.635666567352,True,0.0,6285.684887167435,6285.684887167435,Finished – Metal,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,True,False,True,Low +region_2,183,40.88445498063108,1464.5537509694439,1126.5798084380338,337.9739425314101,True,0.0,5858.215003877775,5858.215003877775,"Sheet metal (galvanize, galvalume)",Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_2,184,30.233758910746385,2241.2362076215927,1724.0278520166098,517.2083556049829,True,0.0,8964.94483048637,8964.94483048637,Finished – Asbestos,Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_1,185,24.006047982548736,1888.2686073370746,1452.5143133362112,435.7542940008634,True,0.0,7553.0744293482985,7553.0744293482985,Finished – Concrete,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_2,186,28.819445391962645,2357.000247046046,1532.05016057993,117.85001235230209,False,707.1000741138138,9428.000988184183,3299.8003458644635,Shingle (wood),Finished – Cement blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_0,187,80.54479158639158,2236.6188122867725,1720.4760094513633,516.1428028354092,True,0.0,8946.47524914709,8946.47524914709,Concrete,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_1,188,92.99357730955353,1963.5855436715635,1510.450418208895,453.1351254626686,True,0.0,7854.342174686254,7854.342174686254,Shingle (other),Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_1,189,41.105166758229075,1576.6031409657976,1024.7920416277684,78.83015704828995,False,472.98094228973923,6306.41256386319,2207.2443973521167,Finished – Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,True,False,True,Low +region_1,190,90.70498921111721,1242.5763876570677,807.6746519770941,62.12881938285335,False,372.7729162971203,4970.305550628271,1739.6069427198945,Finished – Asbestos,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,True,False,True,Low +region_0,191,32.828074423540315,1776.7425239664894,1154.8826405782181,88.83712619832454,False,533.0227571899468,7106.970095865958,2487.4395335530853,Finished – Asbestos,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,False,Medium +region_2,192,48.16726164803537,2428.199397161736,1867.8456901244124,560.3537070373238,True,0.0,9712.797588646945,9712.797588646945,Shingle (other),Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_0,193,23.37687078378397,2107.046872065102,1369.5804668423161,105.35234360325524,False,632.1140616195306,8428.187488260408,2949.8656208911434,Shingle (other),Concrete/Concrete Blocks,Other,1587.805320337052,False,False,True,Medium +region_1,194,64.40712817540856,1377.130610644006,1059.3312389569278,317.7993716870783,True,0.0,5508.522442576024,5508.522442576024,Finished – Concrete,Natural – Other,Finished – Parquet or polished wood,1587.805320337052,True,True,True,Low +region_0,195,97.91913040230608,2086.590462925591,1356.283800901634,104.32952314627971,False,625.9771388776772,8346.361851702364,2921.226648095828,Concrete,Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_0,196,60.74581650829449,2192.658689864418,1686.660530664937,505.9981591994813,True,0.0,8770.634759457673,8770.634759457673,Finished – Metal,Finished – Cement blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_2,197,36.42359432724134,1558.0712818994334,1012.7463332346317,77.90356409497167,False,467.42138456983,6232.285127597734,2181.299794659207,Concrete,Wood/Timber,Finished – Parquet or polished wood,1587.805320337052,True,False,True,Low +region_2,198,65.1339271530623,2076.8625529727638,1349.9606594322963,103.8431276486383,False,623.0587658918291,8307.450211891055,2907.6075741618697,Shingle (asphalt),Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_1,199,13.16914716807337,2029.1043592229998,1560.8495070946153,468.2548521283845,True,0.0,8116.417436891999,8116.417436891999,Finished – Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_0,200,88.97724894627447,1428.5148510846884,928.5346532050476,71.42574255423432,False,428.55445532540654,5714.059404338754,1999.9207915185634,"Sheet metal (galvanize, galvalume)",Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,True,True,True,Low +region_0,201,50.8053111272038,2178.8936801741415,1676.0720616724166,502.82161850172497,True,0.0,8715.574720696566,8715.574720696566,Shingle (asphalt),Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,False,Medium +region_2,202,45.485624461924566,2280.3922631841174,1754.1478947570133,526.2443684271041,True,0.0,9121.56905273647,9121.56905273647,Finished – Asbestos,Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_0,203,59.0006140568984,2541.5256215876384,1955.019708913568,586.5059126740705,True,0.0,10166.102486350554,10166.102486350554,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_0,204,62.85360241615084,2526.9010260174514,1943.770020013424,583.1310060040273,True,0.0,10107.604104069806,10107.604104069806,Finished – Asbestos,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_0,205,8.10580481642479,1311.1653160214546,1008.5887046318882,302.57661138956644,True,0.0,5244.661264085818,5244.661264085818,Shingle (wood),Finished – Stone with lime/cement,Other,1587.805320337052,True,True,False,Low +region_2,206,68.57910490111684,1531.0874800424385,1177.759600032645,353.3278800097935,True,0.0,6124.349920169754,6124.349920169754,Finished – Metal,Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,207,24.95123635123743,2257.51763360433,1736.5520258494846,520.9656077548455,True,0.0,9030.07053441732,9030.07053441732,Tile,Finished – Cement blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_1,208,71.6813106181524,2256.8929754561045,1736.0715195816188,520.8214558744858,True,0.0,9027.571901824418,9027.571901824418,Shingle (other),Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_0,209,82.43094464403548,2257.523843153024,1736.5568024254028,520.967040727621,True,0.0,9030.095372612095,9030.095372612095,Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_1,210,80.5918922476995,3000.0,2307.6923076923076,692.3076923076924,True,0.0,12000.0,12000.0,Finished – Metal,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,211,55.697595773381025,2285.4452553465835,1485.539415975279,114.27226276732938,False,685.633576603975,9141.781021386334,3199.6233574852176,Finished – Metal,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,212,52.49681933876437,2567.7828200902995,1669.0588330586943,128.3891410045154,False,770.3348460270898,10271.131280361198,3594.895948126421,Concrete,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_1,213,15.14472017260176,2477.0008817466014,1905.3852936512317,571.6155880953697,True,0.0,9908.003526986406,9908.003526986406,Finished – Concrete,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_1,214,77.75926888991043,2325.6956256528993,1788.9966351176147,536.6989905352846,True,0.0,9302.782502611597,9302.782502611597,Concrete,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_0,215,27.869528664224724,1842.3653776798271,1197.5374954918875,92.1182688839915,False,552.7096133039481,7369.4615107193085,2579.3115287517585,Concrete,Plywood,Finished – Cement/red bricks,1587.805320337052,False,True,True,Medium +region_1,216,50.172846858976705,2379.4846102466336,1830.372777112795,549.1118331338387,True,0.0,9517.938440986534,9517.938440986534,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_0,217,29.143135199824155,1613.587392731214,1241.2210713317031,372.366321399511,True,0.0,6454.349570924856,6454.349570924856,"Sheet metal (galvanize, galvalume)",Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,Low +region_0,218,14.24900793696962,1881.5906966299956,1447.3774589461505,434.21323768384514,True,0.0,7526.362786519982,7526.362786519982,Tile,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,False,Medium +region_2,219,63.32621199228192,1757.3182260854483,1351.7832508349602,405.53497525048806,True,0.0,7029.272904341793,7029.272904341793,"Sheet metal (galvanize, galvalume)",Concrete/Concrete Blocks,Rudimentary – Wood planks,1587.805320337052,False,True,True,Low +region_2,220,6.378871447467479,2040.9370696931612,1326.6090953005546,102.0468534846583,False,612.2811209079483,8163.748278772645,2857.3118975704265,Finished – Metal,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_2,221,75.1158781784938,3000.0,2307.6923076923076,692.3076923076924,True,0.0,12000.0,12000.0,Finished – Concrete,Natural – Other,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_2,222,32.44109273085055,1066.367403704126,820.282618233943,246.08478547018296,True,0.0,4265.469614816504,4265.469614816504,Finished – Metal,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,223,1.0133346074440466,2343.1300951872568,1802.407765528659,540.7223296585978,True,0.0,9372.520380749027,9372.520380749027,Finished – Metal,Concrete/Concrete Blocks,Other,1587.805320337052,False,False,True,High +region_2,224,51.60178478448575,1193.642064405174,775.8673418633631,59.682103220258796,False,358.0926193215522,4774.568257620696,1671.0988901672438,Concrete,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,225,5.638338944232709,1764.0340671052832,1356.9492823886792,407.08478471660396,True,0.0,7056.136268421133,7056.136268421133,Shingle (asphalt),Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,False,Low +region_2,226,28.34078622426905,2544.475298483683,1957.2886911412947,587.1866073423885,True,0.0,10177.901193934733,10177.901193934733,Finished – Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_1,227,70.99067225811591,2032.1400095477313,1563.184622729024,468.9553868187072,True,0.0,8128.560038190925,8128.560038190925,Tile,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_0,228,7.20627254056472,1461.127611035347,949.7329471729754,73.05638055176746,False,438.3382833106041,5844.510444141388,2045.5786554494862,Shingle (asphalt),Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,True,True,False,Low +region_1,229,84.09451074324423,1642.348145370016,1067.5262944905103,82.11740726850098,False,492.70444361100476,6569.392581480064,2299.287403518023,Concrete,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Low +region_1,230,1.3781723431997277,2339.798874467338,1799.8452880517984,539.9535864155396,True,0.0,9359.195497869352,9359.195497869352,Concrete,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_2,231,25.43556305098832,1634.8166841414318,1257.551295493409,377.26538864802274,True,0.0,6539.266736565727,6539.266736565727,Shingle (other),Natural – Other,Finished – Parquet or polished wood,1587.805320337052,False,True,True,Low +region_1,232,74.34950155905507,2108.2292947909873,1621.7148421469133,486.514452644074,True,0.0,8432.91717916395,8432.91717916395,Finished – Metal,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Medium +region_0,233,32.310744823201375,2022.7859199519069,1555.9891691937744,466.7967507581325,True,0.0,8091.143679807627,8091.143679807627,Concrete,Brick/Blocks,Other,1587.805320337052,False,False,False,Medium +region_0,234,11.08734641853534,1674.1998261970914,1287.8460201516086,386.35380604548277,True,0.0,6696.799304788366,6696.799304788366,"Sheet metal (galvanize, galvalume)",Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Low +region_2,235,36.66315796124236,3000.0,1950.0,150.0,False,900.0,12000.0,4200.0,Concrete,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_0,236,27.768935352068027,2316.9595111590056,1782.276547045389,534.6829641136167,True,0.0,9267.838044636022,9267.838044636022,Shingle (asphalt),Natural – Other,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_1,237,84.42847831389494,1000.0,769.2307692307692,230.76923076923083,True,0.0,4000.0,4000.0,"Sheet metal (galvanize, galvalume)",Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_0,238,32.021443840929166,2093.227157384714,1360.5976523000638,104.66135786923587,False,627.9681472154141,8372.908629538855,2930.5180203386,Finished – Concrete,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_2,239,79.10431470582472,1669.106767615806,1283.928282781389,385.17848483441685,True,0.0,6676.427070463224,6676.427070463224,Concrete,Plywood,Rudimentary – Wood planks,1587.805320337052,False,False,False,Low +region_1,240,89.29534233626273,2426.216667398112,1866.320513383163,559.8961540149489,True,0.0,9704.866669592448,9704.866669592448,Concrete,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_2,241,43.94792453807642,1603.7396307836498,1233.6458698335766,370.09376095007315,True,0.0,6414.958523134599,6414.958523134599,Finished – Concrete,Natural – Other,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Low +region_1,242,91.0843712415848,1942.6317792665504,1494.3321378973465,448.299641369204,True,0.0,7770.527117066202,7770.527117066202,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_0,243,38.354487342356094,2252.4936394902284,1464.1208656686483,112.62468197451153,False,675.7480918470685,9009.974557960913,3153.49109528632,Shingle (asphalt),Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,False,True,False,High +region_2,244,96.44376323252071,2432.8775970850606,1871.4443054500466,561.433291635014,True,0.0,9731.510388340243,9731.510388340243,Concrete,Concrete/Concrete Blocks,Other,1587.805320337052,False,False,True,High +region_2,245,9.83966292803172,1399.8517964721118,909.9036677068727,69.99258982360556,False,419.9555389416335,5599.407185888447,1959.7925150609565,Finished – Metal,Finished – Stone with lime/cement,Rudimentary – Wood planks,1587.805320337052,True,False,True,Low +region_1,246,69.01490738382103,1832.7493820795257,1409.8072169842505,422.9421650952752,True,0.0,7330.997528318103,7330.997528318103,"Sheet metal (galvanize, galvalume)",Rudimentary – Plywood,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_2,247,49.887590005235936,1762.5273444195218,1355.7902649380937,406.73707948142805,True,0.0,7050.109377678087,7050.109377678087,Shingle (other),Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Low +region_1,248,39.37723174010906,1673.335383713144,1287.181064394726,386.15431931841795,True,0.0,6693.341534852576,6693.341534852576,Tile,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_1,249,63.63847599611149,2882.7271201405483,2217.4824001081142,665.2447200324341,True,0.0,11530.908480562193,11530.908480562193,Finished – Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,High +region_1,250,70.68185207179879,2202.490855480478,1694.223734984983,508.26712049549496,True,0.0,8809.963421921912,8809.963421921912,Shingle (asphalt),Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_1,251,1.4319636953805996,1369.5580228324775,890.2127148411103,68.47790114162399,False,410.86740684974325,5478.23209132991,1917.381231965469,Tile,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,True,False,True,Low +region_0,252,17.528355785972675,2458.9309735273882,1891.485364251837,567.4456092755513,True,0.0,9835.723894109553,9835.723894109553,Finished – Metal,Plywood,Finished – Parquet or polished wood,1587.805320337052,False,False,False,High +region_1,253,71.59155901279755,3000.0,1950.0,150.0,False,900.0,12000.0,4200.0,Concrete,Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,254,66.97215594424245,2516.2326302755737,1935.5635617504413,580.6690685251324,True,0.0,10064.930521102295,10064.930521102295,Shingle (wood),Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_0,255,96.63870300773904,1240.3150170229933,806.2047610649456,62.015750851149676,False,372.094505106898,4961.260068091973,1736.4410238321907,Finished – Metal,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,True,True,False,Low +region_2,256,76.34274123482751,1757.8829635668744,1142.6239263184684,87.8941481783437,False,527.3648890700623,7031.531854267498,2461.036148993624,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_0,257,95.12649806540247,2633.455574593311,2025.7350573794702,607.720517213841,True,0.0,10533.822298373245,10533.822298373245,Finished – Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_1,258,70.55150965194589,1646.1652671906097,1070.007423673896,82.30826335953077,False,493.8495801571829,6584.661068762439,2304.6313740668547,Finished – Metal,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Low +region_0,259,30.507168655304874,2221.909714073114,1444.241314147524,111.09548570365598,False,666.5729142219342,8887.638856292457,3110.6735997023607,Finished – Asbestos,Wood/Timber,Rudimentary – Wood planks,1587.805320337052,False,True,True,High +region_0,260,11.43112730283479,2387.3170267146684,1836.3977128574372,550.9193138572311,True,0.0,9549.268106858673,9549.268106858673,Shingle (other),Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,261,78.40056247114862,1536.5347642109587,1181.9498186238143,354.5849455871444,True,0.0,6146.139056843835,6146.139056843835,Shingle (other),Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,True,False,True,Low +region_2,262,64.77077292611568,1970.2373219690999,1515.5671707454615,454.6701512236384,True,0.0,7880.9492878763995,7880.9492878763995,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_1,263,5.7704152269363265,1000.0,650.0,50.0,False,300.0,4000.0,1400.0,Finished – Metal,Wood/Timber,Other,1587.805320337052,True,False,False,Low +region_0,264,36.64499612419686,1487.8061793328552,967.0740165663558,74.39030896664286,False,446.34185379985655,5951.224717331421,2082.9286510659977,Finished – Metal,Finished – Stone with lime/cement,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_0,265,95.72318173294433,1873.7159243034198,1217.9153507972228,93.68579621517108,False,562.1147772910259,7494.863697213679,2623.202294024788,Concrete,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,False,Medium +region_0,266,50.53971342530992,1376.1084090175752,1058.5449300135194,317.5634790040558,True,0.0,5504.433636070301,5504.433636070301,Finished – Concrete,Finished – Stone with lime/cement,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,267,43.840184465950756,2816.2056519658177,2166.312039973706,649.8936119921118,True,0.0,11264.82260786327,11264.82260786327,Shingle (other),Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_1,268,46.31226091077011,1284.9293110196836,988.4071623228335,296.5221486968501,True,0.0,5139.717244078734,5139.717244078734,Concrete,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_1,269,21.67938967651121,1779.9777566515081,1156.9855418234802,88.99888783257552,False,533.9933269954524,7119.9110266060325,2491.968859312112,Tile,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_1,270,37.50200991561473,2065.3702886430456,1588.7463758792658,476.6239127637798,True,0.0,8261.481154572182,8261.481154572182,Finished – Concrete,Brick/Blocks,Other,1587.805320337052,False,True,True,Medium +region_1,271,37.611512342730485,2720.6366445330577,2092.797418871583,627.8392256614748,True,0.0,10882.546578132231,10882.546578132231,Concrete,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_2,272,6.183146998559768,1282.0689244102803,986.2068649309848,295.86205947929545,True,0.0,5128.275697641121,5128.275697641121,Finished – Concrete,Natural – Other,Rudimentary – Wood planks,1587.805320337052,True,False,True,Low +region_0,273,76.98919522327391,2581.58187607748,1985.8322123672922,595.7496637101879,True,0.0,10326.32750430992,10326.32750430992,"Sheet metal (galvanize, galvalume)",Wood/Timber,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_0,274,42.23393875848402,2005.1165305097936,1542.3973311613797,462.7191993484139,True,0.0,8020.4661220391745,8020.4661220391745,Shingle (other),Wood & Concrete,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_0,275,82.39580879482591,1509.2456744760245,1160.9582111354034,348.2874633406211,True,0.0,6036.982697904098,6036.982697904098,"Sheet metal (galvanize, galvalume)",Brick/Blocks,Rudimentary – Wood planks,1587.805320337052,True,False,True,Low +region_0,276,85.18445211086964,2231.0517371316355,1450.183629135563,111.5525868565818,False,669.3155211394907,8924.206948526542,3123.47243198429,Finished – Metal,Finished – Cement blocks,Finished – Cement/red bricks,1587.805320337052,False,False,False,High +region_0,277,21.98741141516715,2099.529847786735,1615.02295983595,484.5068879507851,True,0.0,8398.11939114694,8398.11939114694,Concrete,Wood & Concrete,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_0,278,66.07799473484273,1699.8915614206026,1307.6088934004636,392.282668020139,True,0.0,6799.56624568241,6799.56624568241,Tile,Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Low +region_0,279,47.75589861213519,2034.9010424950095,1565.3084942269304,469.5925482680791,True,0.0,8139.604169980038,8139.604169980038,Finished – Metal,Concrete/Concrete blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,Medium +region_0,280,88.13551705422702,1807.3432015691199,1390.2640012070153,417.07920036210453,True,0.0,7229.372806276479,7229.372806276479,Finished – Asbestos,Brick/Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,True,Medium +region_2,281,22.35832723846896,2056.758672625624,1582.1220558658647,474.63661675975936,True,0.0,8227.034690502496,8227.034690502496,Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,False,False,False,Medium +region_0,282,68.10350683069437,2331.0653372605234,1793.1271825080948,537.9381547524285,True,0.0,9324.261349042094,9324.261349042094,Finished – Metal,Brick/Blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,True,High +region_2,283,61.167460103019536,2793.008408072676,2148.468006209751,644.5404018629251,True,0.0,11172.033632290704,11172.033632290704,Concrete,Concrete/Concrete blocks,Finished – Parquet or polished wood,1587.805320337052,False,False,True,High +region_1,284,30.234846279611446,1381.0922505865756,1062.3786542973658,318.7135962892098,True,0.0,5524.369002346302,5524.369002346302,Finished – Concrete,Finished – GRC/Gypsum/Asbestos,Finished – Cement/red bricks,1587.805320337052,True,False,False,Low +region_0,285,14.523489461466088,3000.0,2307.6923076923076,692.3076923076924,True,0.0,12000.0,12000.0,Shingle (other),Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_1,286,65.51233628725038,1023.9561002387491,665.5714651551868,51.19780501193753,False,307.1868300716247,4095.8244009549962,1433.5385403342489,Finished – Metal,Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,True,False,False,Low +region_1,287,74.12114835510074,1924.1074524822084,1250.6698441134354,96.20537262411051,False,577.2322357446625,7696.4298099288335,2693.750433475092,Finished – Concrete,Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,True,False,Medium +region_1,288,32.24710703257165,2294.1586032422883,1764.7373871094526,529.4212161328358,True,0.0,9176.634412969153,9176.634412969153,Finished – Metal,Finished – Cement blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,High +region_2,289,64.83842779820907,2140.495933867516,1646.5353337442432,493.960600123273,True,0.0,8561.983735470065,8561.983735470065,Finished – Metal,Finished – Stone with lime/cement,Finished – Parquet or polished wood,1587.805320337052,False,False,True,Medium +region_1,290,40.11795985353882,1688.6502400897032,1298.9617231459254,389.6885169437778,True,0.0,6754.600960358813,6754.600960358813,Shingle (other),Brick/Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,Low +region_1,291,71.60748144497916,1895.9388748213623,1458.4145190933557,437.52435572800664,True,0.0,7583.755499285449,7583.755499285449,Shingle (wood),Concrete/Concrete Blocks,Finished – Parquet or polished wood,1587.805320337052,False,True,False,Medium +region_1,292,20.72231221451126,1753.4995326705837,1139.7746962358792,87.67497663352935,False,526.0498598011751,7013.998130682335,2454.899345738818,"Sheet metal (galvanize, galvalume)",Wood/Timber,Finished – Cement/red bricks,1587.805320337052,False,False,True,Low +region_0,293,89.13128526098126,1705.3176215278943,1311.782785790688,393.5348357372063,True,0.0,6821.270486111577,6821.270486111577,Shingle (other),Wood/Timber,Finished – Parquet or polished wood,1587.805320337052,False,False,False,Low +region_0,294,29.453550050092392,2424.8010485105124,1865.2315757773172,559.5694727331952,True,0.0,9699.20419404205,9699.20419404205,Finished – Concrete,Wood/Timber,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,295,37.410812787859136,2178.5077429825237,1675.7751869096335,502.73255607289025,True,0.0,8714.030971930095,8714.030971930095,Shingle (asphalt),Concrete/Concrete Blocks,Finished – Cement/red bricks,1587.805320337052,False,False,True,Medium +region_2,296,6.751103255954629,1653.545202369673,1074.8043815402875,82.67726011848362,False,496.06356071090187,6614.180809478692,2314.963283317542,Finished – Metal,Brick/Blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,Low +region_0,297,12.039709019806363,2449.799937716625,1884.46149055125,565.3384471653751,True,0.0,9799.1997508665,9799.1997508665,Finished – Concrete,Rudimentary – Plywood,Finished – Cement/red bricks,1587.805320337052,False,False,True,High +region_2,298,52.070328368520485,2153.649760438305,1656.653661875619,496.9960985626858,True,0.0,8614.59904175322,8614.59904175322,Finished – Asbestos,Finished – GRC/Gypsum/Asbestos,Rudimentary – Wood planks,1587.805320337052,False,False,True,Medium +region_0,299,27.49167499606918,2406.43105941948,1851.1008149380614,555.3302444814185,True,0.0,9625.72423767792,9625.72423767792,Concrete,Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,False,High +region_1,300,83.71254234847724,2314.8144209618063,1780.6264776629278,534.1879432988785,True,0.0,9259.257683847225,9259.257683847225,Shingle (wood),Concrete/Concrete blocks,Rudimentary – Wood planks,1587.805320337052,False,False,True,High diff --git a/data_preparation/Example/asset-impats.ipynb b/data_preparation/Example/asset-impats.ipynb deleted file mode 100644 index 4eee118..0000000 --- a/data_preparation/Example/asset-impats.ipynb +++ /dev/null @@ -1,169 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from unbreakable.utils.data_generator import generate_asset_damage" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "disaster_types = [\"flood\", \"hurricane\", \"earthquake\"]\n", - "for disaster in disaster_types:\n", - " df = generate_asset_damage(disaster, num_spatial_units=3)\n", - " df.to_csv(\n", - " f\"../../data/processed/asset_impacts/Example/{disaster}.csv\", index=False\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disaster_typespatial_unitresidentialnon_residentialtotal_exposed_stockrppmlloss_fraction
0earthquakeregion_01.561810e+0897535715.322.537167e+081047495618.740.187
1earthquakeregion_11.897988e+0857800932.022.475997e+081037139955.700.150
2earthquakeregion_21.087125e+0893308807.292.020213e+081035174240.360.174
3earthquakeregion_02.062109e+0851029224.712.572401e+085068680790.780.267
4earthquakeregion_12.248664e+0860616955.532.854834e+085053722969.890.188
\n", - "
" - ], - "text/plain": [ - " disaster_type spatial_unit residential non_residential \\\n", - "0 earthquake region_0 1.561810e+08 97535715.32 \n", - "1 earthquake region_1 1.897988e+08 57800932.02 \n", - "2 earthquake region_2 1.087125e+08 93308807.29 \n", - "3 earthquake region_0 2.062109e+08 51029224.71 \n", - "4 earthquake region_1 2.248664e+08 60616955.53 \n", - "\n", - " total_exposed_stock rp pml loss_fraction \n", - "0 2.537167e+08 10 47495618.74 0.187 \n", - "1 2.475997e+08 10 37139955.70 0.150 \n", - "2 2.020213e+08 10 35174240.36 0.174 \n", - "3 2.572401e+08 50 68680790.78 0.267 \n", - "4 2.854834e+08 50 53722969.89 0.188 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.head()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "unbreakable", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/data_preparation/Example/generate-data.ipynb b/data_preparation/Example/generate-data.ipynb new file mode 100644 index 0000000..44727b1 --- /dev/null +++ b/data_preparation/Example/generate-data.ipynb @@ -0,0 +1,200 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from unbreakable.utils.data_generator import generate_households, generate_asset_damage\n", + "from unbreakable.modules.household_recovery import precompute_reconstruction_rates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate households and asset damage" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Specify the number of households and spatial units\n", + "num_households = 300\n", + "num_spatial_units = 3\n", + "seed = 42\n", + "\n", + "# Generate dummy household survey data\n", + "households = generate_households(num_households, num_spatial_units, seed)\n", + "households.to_csv(\"../../data/processed/household_survey/Example.csv\", index=False)\n", + "\n", + "# Get how much stock each household is exposed to\n", + "households[\"total_exposed_stock\"] = (\n", + " households[\"keff\"] * households[\"household_weight\"]\n", + ")\n", + "\n", + "exposure_data = (\n", + " households.groupby(\"spatial_unit\")[\"total_exposed_stock\"].sum().reset_index()\n", + ")\n", + "\n", + "\n", + "# Generate dummy disaster risk and household survey data\n", + "disaster_types = [\"flood\", \"hurricane\", \"earthquake\"]\n", + "\n", + "for disaster in disaster_types:\n", + " df = generate_asset_damage(disaster, exposure_data, num_spatial_units, seed=seed)\n", + " df.to_csv(\n", + " f\"../../data/processed/asset_impacts/Example/{disaster}.csv\", index=False\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
spatial_unittotal_exposed_stock
0region_030421757.0
1region_137445729.0
2region_228830486.0
\n", + "
" + ], + "text/plain": [ + " spatial_unit total_exposed_stock\n", + "0 region_0 30421757.0\n", + "1 region_1 37445729.0\n", + "2 region_2 28830486.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exposure_data.round()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 30421757.25\n", + "1 37445728.57\n", + "2 28830486.13\n", + "Name: total_exposed_stock, dtype: float64" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['total_exposed_stock'].iloc[:3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Calculate recovery rates to speed up simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# NOTE These parameters must match the ones used in the config file Example.yaml\n", + "economic_params = {\n", + " \"average_productivity\": 0.25,\n", + " \"consumption_utility\": 1.5,\n", + " \"discount_rate\": 0.04,\n", + "}\n", + "recovery_params = {\"max_years\": 10, \"lambda_increment\": 0.01}\n", + "\n", + "# Generate vulnerabilities with exact 0.01 step\n", + "dwelling_vulnerabilities = np.round(np.arange(0.2, 0.91, 0.01), 2)\n", + "\n", + "optimal_rates = precompute_reconstruction_rates(\n", + " economic_params, recovery_params, dwelling_vulnerabilities\n", + ")\n", + "\n", + "optimal_rates.to_csv(\n", + " \"../../data/generated/Example/optimal_reconstruction_rates.csv\", index=False\n", + " )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "unbreakable", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/data_preparation/Example/household-survey.ipynb b/data_preparation/Example/household-survey.ipynb deleted file mode 100644 index 8a51257..0000000 --- a/data_preparation/Example/household-survey.ipynb +++ /dev/null @@ -1,244 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from unbreakable.utils.data_generator import generate_households" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "num_households = 300\n", - "num_spatial_units = 3\n", - "seed = 42\n", - "data = generate_households(num_households, num_spatial_units, seed)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
spatial_unithousehold_idhousehold_weightincexpsavowns_homeexp_housekeffroofwallsfloorpoverty_lineis_poorfemale_headedurbanliteracy
0region_0191.7468882248.3570771873.630897374.726179True0.0000006423.877361TileBrick/BlocksFinished – Parquet or polished wood1587.80532FalseFalseTrueHigh
1region_0243.6675371930.8678491609.056541321.811308True0.0000005516.765284ConcreteWood & ConcreteOther1587.80532FalseTrueTrueMedium
2region_0332.5678152323.8442691936.536891387.307378True0.0000006639.555054Finished – ConcreteWood & ConcreteFinished – Parquet or polished wood1587.80532FalseFalseFalseHigh
3region_1458.6376762761.5149282301.262440460.252488True0.0000007890.042652Finished – ConcreteNatural – OtherFinished – Parquet or polished wood1587.80532FalseFalseTrueHigh
4region_0537.7460701882.9233131223.90015394.146166False564.8769945379.780893Finished – MetalWood & ConcreteFinished – Cement/red bricks1587.80532FalseFalseTrueMedium
\n", - "
" - ], - "text/plain": [ - " spatial_unit household_id household_weight inc exp \\\n", - "0 region_0 1 91.746888 2248.357077 1873.630897 \n", - "1 region_0 2 43.667537 1930.867849 1609.056541 \n", - "2 region_0 3 32.567815 2323.844269 1936.536891 \n", - "3 region_1 4 58.637676 2761.514928 2301.262440 \n", - "4 region_0 5 37.746070 1882.923313 1223.900153 \n", - "\n", - " sav owns_home exp_house keff roof \\\n", - "0 374.726179 True 0.000000 6423.877361 Tile \n", - "1 321.811308 True 0.000000 5516.765284 Concrete \n", - "2 387.307378 True 0.000000 6639.555054 Finished – Concrete \n", - "3 460.252488 True 0.000000 7890.042652 Finished – Concrete \n", - "4 94.146166 False 564.876994 5379.780893 Finished – Metal \n", - "\n", - " walls floor poverty_line \\\n", - "0 Brick/Blocks Finished – Parquet or polished wood 1587.80532 \n", - "1 Wood & Concrete Other 1587.80532 \n", - "2 Wood & Concrete Finished – Parquet or polished wood 1587.80532 \n", - "3 Natural – Other Finished – Parquet or polished wood 1587.80532 \n", - "4 Wood & Concrete Finished – Cement/red bricks 1587.80532 \n", - "\n", - " is_poor female_headed urban literacy \n", - "0 False False True High \n", - "1 False True True Medium \n", - "2 False False False High \n", - "3 False False True High \n", - "4 False False True Medium " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "data.to_csv('../../data/processed/household_survey/Example.csv', index=False)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "unbreakable", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/data_preparation/Example/reconstruction-rates.ipynb b/data_preparation/Example/reconstruction-rates.ipynb deleted file mode 100644 index 02c0f8a..0000000 --- a/data_preparation/Example/reconstruction-rates.ipynb +++ /dev/null @@ -1,61 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "from unbreakable.modules.household_recovery import precompute_reconstruction_rates" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# NOTE These parameters must match the ones used in the config file Example.yaml\n", - "economic_params = {\n", - " \"average_productivity\": 0.25,\n", - " \"consumption_utility\": 1.5,\n", - " \"discount_rate\": 0.04,\n", - "}\n", - "recovery_params = {\"max_years\": 10, \"lambda_increment\": 0.01}\n", - "\n", - "# Generate vulnerabilities with exact 0.01 step\n", - "dwelling_vulnerabilities = np.round(np.arange(0.2, 0.91, 0.01), 2)\n", - "\n", - "optimal_rates = precompute_reconstruction_rates(\n", - " economic_params, recovery_params, dwelling_vulnerabilities\n", - ")\n", - "\n", - "optimal_rates.to_csv(\n", - " \"../../data/generated/Example/optimal_reconstruction_rates.csv\", index=False\n", - " )" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "unbreakable", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/Example/1-economic-and-poverty.ipynb b/notebooks/Example/1-economic-and-poverty.ipynb new file mode 100644 index 0000000..01c5fc6 --- /dev/null +++ b/notebooks/Example/1-economic-and-poverty.ipynb @@ -0,0 +1,519 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import numpy as np\n", + "import geopandas as gpd\n", + "from ema_workbench import load_results\n", + "from unbreakable.experiments.experiment_results_formatter import format_experiment_results" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "country = \"Example\"\n", + "disaster_type = \"flood\"\n", + "return_periond = 100\n", + "\n", + "n_scenarios = 6\n", + "n_policies = 0\n", + "\n", + "spu_name = 'Region'\n", + "\n", + "results_path = (\n", + " f\"../../results/{country}/disaster_type={disaster_type}_return_period={return_periond}_scenarios={n_scenarios}_policies={n_policies}.tar.gz\"\n", + ")\n", + "results = load_results(results_path)\n", + "results = format_experiment_results(results, include_policies=False, include_uncertainties=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Economic impacts" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "economic_columns = [\n", + " \"avg_annual_consumption_loss\",\n", + " \"avg_annual_consumption_loss_pct\",\n", + "]\n", + "results['annual_average_consumption_loss_pct'] *= 100" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "count 18.000000\n", + "mean 18.640593\n", + "std 0.509090\n", + "min 18.074649\n", + "25% 18.241013\n", + "50% 18.468228\n", + "75% 19.239292\n", + "max 19.468463\n", + "Name: annual_average_consumption_loss_pct, dtype: float64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results['annual_average_consumption_loss_pct'].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results['annual_average_consumption_loss_pct'].hist();\n", + "plt.ylabel(\"Count\");\n", + "plt.xlabel(\"Average annual consumption loss PC (%)\");\n", + "sns.despine()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
meanstd
spatial_unit
region_219.310.12
region_018.320.22
region_118.290.12
\n", + "
" + ], + "text/plain": [ + " mean std\n", + "spatial_unit \n", + "region_2 19.31 0.12\n", + "region_0 18.32 0.22\n", + "region_1 18.29 0.12" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.groupby('spatial_unit')['annual_average_consumption_loss_pct'].describe()[['mean', 'std']].sort_values('mean', ascending=False).round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 1, figsize=(6, 4))\n", + "for spatial_unit in results['spatial_unit'].unique():\n", + " spatial_unit_results = results[results['spatial_unit'] == spatial_unit]\n", + " sns.kdeplot(\n", + " data=spatial_unit_results,\n", + " x=\"annual_average_consumption_loss_pct\",\n", + " ax=ax,\n", + " alpha=1,\n", + " label=spatial_unit,\n", + " )\n", + " sns.despine()\n", + "plt.xlim(0, 100)\n", + "plt.xlabel(\"Average annual consumption loss PC (%)\")\n", + "plt.ylabel(\"Density\")\n", + "plt.legend(title=\"District\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Poverty impacts" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 MeanStdMinMax
District    
region_00000
region_10000
region_20000
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# TODO: It seems that there is no variance between the model runs.\n", + "new_poor_count = results.groupby('spatial_unit')['new_poor_count'].describe().round(2)\n", + "new_poor_count.index.name = 'District'\n", + "new_poor_count = new_poor_count.drop(columns=['count', \n", + " #'std',\n", + " 'min',\n", + " # '25%',\n", + " '50%',\n", + " # '75%',\n", + " 'max'\n", + " ])\n", + "new_poor_count.columns = ['Mean', \n", + " 'Std', \n", + " 'Min', \n", + " # '25%', \n", + " # '50%', \n", + " # '75%', \n", + " 'Max'\n", + " ]\n", + "new_poor_count.sort_values('Mean', ascending=False).style.format(\"{:,.0f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "poverty_duration_columns = [f'poverty_duration_{i}'for i in range(1, 11)]\n", + "poverty_duration = results[['spatial_unit'] + poverty_duration_columns].groupby('spatial_unit').mean().round(2).sort_values(by='poverty_duration_5', ascending=False).round()\n", + "poverty_duration.columns = np.arange(1, 11)\n", + "poverty_duration.index.name = spu_name\n", + "poverty_duration = poverty_duration.replace(0, np.nan)\n", + "poverty_duration.sort_values(1, ascending=False).iloc[:,:3].to_clipboard()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
12345678910
Region
region_0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
region_1NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
region_2NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " 1 2 3 4 5 6 7 8 9 10\n", + "Region \n", + "region_0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "region_1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "region_2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "poverty_duration" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 affected_people_countnew_poor_countaffected_to_new_poor_ratio
spatial_unit   
region_01,058.270.000.00
region_12,586.230.000.00
region_21,633.890.000.00
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# TODO: It seems that there is no variance between the model runs.\n", + "df = results.groupby('spatial_unit')[['affected_people_count','new_poor_count']].mean()\n", + "df['affected_to_new_poor_ratio'] = df['new_poor_count'] / df['affected_people_count']\n", + "df.sort_values(['affected_to_new_poor_ratio', 'new_poor_count'], ascending=False).style.format(\"{:,.2f}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "unbreakable", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/results/Example/disaster_type=flood_return_period=100_scenarios=16_policies=0.tar.gz b/results/Example/disaster_type=flood_return_period=100_scenarios=16_policies=0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..051e0c90f4c7b2fd029e7ebf60cc1494e83aaeb9 GIT binary patch literal 30821 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 literal 0 HcmV?d00001 diff --git a/results/Example/disaster_type=flood_return_period=250_scenarios=6_policies=0.tar.gz b/results/Example/disaster_type=flood_return_period=250_scenarios=6_policies=0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8e7a87b72a01d0d276c38f635fc6c6ffb94efe64 GIT binary patch literal 12133 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 literal 0 HcmV?d00001 diff --git a/unbreakable/example.py b/unbreakable/example.py index f0f64ca..6a135ab 100644 --- a/unbreakable/example.py +++ b/unbreakable/example.py @@ -11,7 +11,7 @@ def main(): try: country = "Example" disaster_spec = [ - {"type": "flood", "event_time": 0, "return_period": None}, + {"type": "flood", "event_time": 0, "return_period": 250}, # {"type": "flood", "event_time": 0, "return_period": 50}, # {"type": "earthquake", "event_time": 0, "return_period": 100}, ] @@ -30,10 +30,10 @@ def main(): "disaster_spec": disaster_spec, "model": model, "return_period": return_period, - "n_scenarios": 1000, # number of replications + "n_scenarios": 6, # number of replications "n_policies": 0, "multiprocessing": False, # use multiprocessing - "n_processes": 16, # number of replications to run in parallel + "n_processes": 6, # number of replications to run in parallel } run_experiments(experimental_setup) diff --git a/unbreakable/experiments/outcome_names_ordered.json b/unbreakable/experiments/outcome_names_ordered.json index df94ee5..7641965 100644 --- a/unbreakable/experiments/outcome_names_ordered.json +++ b/unbreakable/experiments/outcome_names_ordered.json @@ -1 +1 @@ -["affected_households_count", "people_count", "affected_people_count", "initial_poor_count", "new_poor_count", "affected_poor_count", "initial_poverty_gap", "updated_initial_poverty_gap", "overall_poverty_gap", "resilience_consumption_based", "resilience_wellbeing_based", "annual_average_consumption_loss", "annual_average_consumption_loss_pct", "average_years_to_recover", "poverty_duration_0", "poverty_duration_1", "poverty_duration_2", "poverty_duration_3", "poverty_duration_4", "poverty_duration_5", "poverty_duration_6", "poverty_duration_7", "poverty_duration_8", "poverty_duration_9", "poverty_duration_10", "annual_average_consumption_loss_pct_female_headed_False", "average_consumption_loss_pct_difference_female_headed_False", "average_reconstruction_rate_female_headed_False", "average_reconstruction_rate_difference_female_headed_False", "r_consumption_based_female_headed_False", "r_consumption_based_difference_female_headed_False", "r_wellbeing_based_female_headed_False", "r_wellbeing_based_difference_female_headed_False", "annual_average_consumption_loss_pct_female_headed_True", "average_consumption_loss_pct_difference_female_headed_True", "average_reconstruction_rate_female_headed_True", "average_reconstruction_rate_difference_female_headed_True", "r_consumption_based_female_headed_True", "r_consumption_based_difference_female_headed_True", "r_wellbeing_based_female_headed_True", "r_wellbeing_based_difference_female_headed_True", "annual_average_consumption_loss_pct_urban_Urban", "average_consumption_loss_pct_difference_urban_Urban", "average_reconstruction_rate_urban_Urban", "average_reconstruction_rate_difference_urban_Urban", "r_consumption_based_urban_Urban", "r_consumption_based_difference_urban_Urban", "r_wellbeing_based_urban_Urban", "r_wellbeing_based_difference_urban_Urban", "annual_average_consumption_loss_pct_urban_Rural", "average_consumption_loss_pct_difference_urban_Rural", "average_reconstruction_rate_urban_Rural", "average_reconstruction_rate_difference_urban_Rural", "r_consumption_based_urban_Rural", "r_consumption_based_difference_urban_Rural", "r_wellbeing_based_urban_Rural", "r_wellbeing_based_difference_urban_Rural", "annual_average_consumption_loss_pct_educat4_highest_Primary (complete or incomplete)", "average_consumption_loss_pct_difference_educat4_highest_Primary (complete or incomplete)", "average_reconstruction_rate_educat4_highest_Primary (complete or incomplete)", "average_reconstruction_rate_difference_educat4_highest_Primary (complete or incomplete)", "r_consumption_based_educat4_highest_Primary (complete or incomplete)", "r_consumption_based_difference_educat4_highest_Primary (complete or incomplete)", "r_wellbeing_based_educat4_highest_Primary (complete or incomplete)", "r_wellbeing_based_difference_educat4_highest_Primary (complete or incomplete)", "annual_average_consumption_loss_pct_educat4_highest_Secondary (complete or incomplete)", "average_consumption_loss_pct_difference_educat4_highest_Secondary (complete or incomplete)", "average_reconstruction_rate_educat4_highest_Secondary (complete or incomplete)", "average_reconstruction_rate_difference_educat4_highest_Secondary (complete or incomplete)", "r_consumption_based_educat4_highest_Secondary (complete or incomplete)", "r_consumption_based_difference_educat4_highest_Secondary (complete or incomplete)", "r_wellbeing_based_educat4_highest_Secondary (complete or incomplete)", "r_wellbeing_based_difference_educat4_highest_Secondary (complete or incomplete)", "annual_average_consumption_loss_pct_educat4_highest_Tertiary (complete or incomplete)", "average_consumption_loss_pct_difference_educat4_highest_Tertiary (complete or incomplete)", "average_reconstruction_rate_educat4_highest_Tertiary (complete or incomplete)", "average_reconstruction_rate_difference_educat4_highest_Tertiary (complete or incomplete)", "r_consumption_based_educat4_highest_Tertiary (complete or incomplete)", "r_consumption_based_difference_educat4_highest_Tertiary (complete or incomplete)", "r_wellbeing_based_educat4_highest_Tertiary (complete or incomplete)", "r_wellbeing_based_difference_educat4_highest_Tertiary (complete or incomplete)", "annual_average_consumption_loss_pct_educat4_highest_No education", "average_consumption_loss_pct_difference_educat4_highest_No education", "average_reconstruction_rate_educat4_highest_No education", "average_reconstruction_rate_difference_educat4_highest_No education", "r_consumption_based_educat4_highest_No education", "r_consumption_based_difference_educat4_highest_No education", "r_wellbeing_based_educat4_highest_No education", "r_wellbeing_based_difference_educat4_highest_No education", "annual_average_consumption_loss_pct_employed_fraction_0.5", "average_consumption_loss_pct_difference_employed_fraction_0.5", "average_reconstruction_rate_employed_fraction_0.5", "average_reconstruction_rate_difference_employed_fraction_0.5", "r_consumption_based_employed_fraction_0.5", "r_consumption_based_difference_employed_fraction_0.5", "r_wellbeing_based_employed_fraction_0.5", "r_wellbeing_based_difference_employed_fraction_0.5", "annual_average_consumption_loss_pct_employed_fraction_0.25", "average_consumption_loss_pct_difference_employed_fraction_0.25", "average_reconstruction_rate_employed_fraction_0.25", "average_reconstruction_rate_difference_employed_fraction_0.25", "r_consumption_based_employed_fraction_0.25", "r_consumption_based_difference_employed_fraction_0.25", "r_wellbeing_based_employed_fraction_0.25", "r_wellbeing_based_difference_employed_fraction_0.25", "annual_average_consumption_loss_pct_employed_fraction_0.2", "average_consumption_loss_pct_difference_employed_fraction_0.2", "average_reconstruction_rate_employed_fraction_0.2", "average_reconstruction_rate_difference_employed_fraction_0.2", "r_consumption_based_employed_fraction_0.2", "r_consumption_based_difference_employed_fraction_0.2", "r_wellbeing_based_employed_fraction_0.2", "r_wellbeing_based_difference_employed_fraction_0.2", "annual_average_consumption_loss_pct_employed_fraction_0.1666666666666666", "average_consumption_loss_pct_difference_employed_fraction_0.1666666666666666", "average_reconstruction_rate_employed_fraction_0.1666666666666666", "average_reconstruction_rate_difference_employed_fraction_0.1666666666666666", "r_consumption_based_employed_fraction_0.1666666666666666", "r_consumption_based_difference_employed_fraction_0.1666666666666666", "r_wellbeing_based_employed_fraction_0.1666666666666666", "r_wellbeing_based_difference_employed_fraction_0.1666666666666666", "annual_average_consumption_loss_pct_employed_fraction_0.6666666666666666", "average_consumption_loss_pct_difference_employed_fraction_0.6666666666666666", "average_reconstruction_rate_employed_fraction_0.6666666666666666", "average_reconstruction_rate_difference_employed_fraction_0.6666666666666666", "r_consumption_based_employed_fraction_0.6666666666666666", "r_consumption_based_difference_employed_fraction_0.6666666666666666", "r_wellbeing_based_employed_fraction_0.6666666666666666", "r_wellbeing_based_difference_employed_fraction_0.6666666666666666", "annual_average_consumption_loss_pct_employed_fraction_0.4", "average_consumption_loss_pct_difference_employed_fraction_0.4", "average_reconstruction_rate_employed_fraction_0.4", "average_reconstruction_rate_difference_employed_fraction_0.4", "r_consumption_based_employed_fraction_0.4", "r_consumption_based_difference_employed_fraction_0.4", "r_wellbeing_based_employed_fraction_0.4", "r_wellbeing_based_difference_employed_fraction_0.4", "annual_average_consumption_loss_pct_employed_fraction_0.3333333333333333", "average_consumption_loss_pct_difference_employed_fraction_0.3333333333333333", "average_reconstruction_rate_employed_fraction_0.3333333333333333", "average_reconstruction_rate_difference_employed_fraction_0.3333333333333333", "r_consumption_based_employed_fraction_0.3333333333333333", "r_consumption_based_difference_employed_fraction_0.3333333333333333", "r_wellbeing_based_employed_fraction_0.3333333333333333", "r_wellbeing_based_difference_employed_fraction_0.3333333333333333", "annual_average_consumption_loss_pct_employed_fraction_0.1428571428571428", "average_consumption_loss_pct_difference_employed_fraction_0.1428571428571428", "average_reconstruction_rate_employed_fraction_0.1428571428571428", "average_reconstruction_rate_difference_employed_fraction_0.1428571428571428", "r_consumption_based_employed_fraction_0.1428571428571428", "r_consumption_based_difference_employed_fraction_0.1428571428571428", "r_wellbeing_based_employed_fraction_0.1428571428571428", "r_wellbeing_based_difference_employed_fraction_0.1428571428571428", "annual_average_consumption_loss_pct_employed_fraction_0.0", "average_consumption_loss_pct_difference_employed_fraction_0.0", "average_reconstruction_rate_employed_fraction_0.0", "average_reconstruction_rate_difference_employed_fraction_0.0", "r_consumption_based_employed_fraction_0.0", "r_consumption_based_difference_employed_fraction_0.0", "r_wellbeing_based_employed_fraction_0.0", "r_wellbeing_based_difference_employed_fraction_0.0", "annual_average_consumption_loss_pct_employed_fraction_0.2857142857142857", "average_consumption_loss_pct_difference_employed_fraction_0.2857142857142857", "average_reconstruction_rate_employed_fraction_0.2857142857142857", "average_reconstruction_rate_difference_employed_fraction_0.2857142857142857", "r_consumption_based_employed_fraction_0.2857142857142857", "r_consumption_based_difference_employed_fraction_0.2857142857142857", "r_wellbeing_based_employed_fraction_0.2857142857142857", "r_wellbeing_based_difference_employed_fraction_0.2857142857142857", "annual_average_consumption_loss_pct_employed_fraction_0.2222222222222222", "average_consumption_loss_pct_difference_employed_fraction_0.2222222222222222", "average_reconstruction_rate_employed_fraction_0.2222222222222222", "average_reconstruction_rate_difference_employed_fraction_0.2222222222222222", "r_consumption_based_employed_fraction_0.2222222222222222", "r_consumption_based_difference_employed_fraction_0.2222222222222222", "r_wellbeing_based_employed_fraction_0.2222222222222222", "r_wellbeing_based_difference_employed_fraction_0.2222222222222222", "annual_average_consumption_loss_pct_employed_fraction_0.125", "average_consumption_loss_pct_difference_employed_fraction_0.125", "average_reconstruction_rate_employed_fraction_0.125", "average_reconstruction_rate_difference_employed_fraction_0.125", "r_consumption_based_employed_fraction_0.125", "r_consumption_based_difference_employed_fraction_0.125", "r_wellbeing_based_employed_fraction_0.125", "r_wellbeing_based_difference_employed_fraction_0.125", "annual_average_consumption_loss_pct_employed_fraction_0.1818181818181818", "average_consumption_loss_pct_difference_employed_fraction_0.1818181818181818", "average_reconstruction_rate_employed_fraction_0.1818181818181818", "average_reconstruction_rate_difference_employed_fraction_0.1818181818181818", "r_consumption_based_employed_fraction_0.1818181818181818", "r_consumption_based_difference_employed_fraction_0.1818181818181818", "r_wellbeing_based_employed_fraction_0.1818181818181818", "r_wellbeing_based_difference_employed_fraction_0.1818181818181818", "annual_average_consumption_loss_pct_employed_fraction_0.2727272727272727", "average_consumption_loss_pct_difference_employed_fraction_0.2727272727272727", "average_reconstruction_rate_employed_fraction_0.2727272727272727", "average_reconstruction_rate_difference_employed_fraction_0.2727272727272727", "r_consumption_based_employed_fraction_0.2727272727272727", "r_consumption_based_difference_employed_fraction_0.2727272727272727", "r_wellbeing_based_employed_fraction_0.2727272727272727", "r_wellbeing_based_difference_employed_fraction_0.2727272727272727", "annual_average_consumption_loss_pct_employed_fraction_0.3636363636363636", "average_consumption_loss_pct_difference_employed_fraction_0.3636363636363636", "average_reconstruction_rate_employed_fraction_0.3636363636363636", "average_reconstruction_rate_difference_employed_fraction_0.3636363636363636", "r_consumption_based_employed_fraction_0.3636363636363636", "r_consumption_based_difference_employed_fraction_0.3636363636363636", "r_wellbeing_based_employed_fraction_0.3636363636363636", "r_wellbeing_based_difference_employed_fraction_0.3636363636363636", "annual_average_consumption_loss_pct_employed_fraction_0.375", "average_consumption_loss_pct_difference_employed_fraction_0.375", "average_reconstruction_rate_employed_fraction_0.375", "average_reconstruction_rate_difference_employed_fraction_0.375", "r_consumption_based_employed_fraction_0.375", "r_consumption_based_difference_employed_fraction_0.375", "r_wellbeing_based_employed_fraction_0.375", "r_wellbeing_based_difference_employed_fraction_0.375", "annual_average_consumption_loss_pct_employed_fraction_0.3", "average_consumption_loss_pct_difference_employed_fraction_0.3", "average_reconstruction_rate_employed_fraction_0.3", "average_reconstruction_rate_difference_employed_fraction_0.3", "r_consumption_based_employed_fraction_0.3", "r_consumption_based_difference_employed_fraction_0.3", "r_wellbeing_based_employed_fraction_0.3", "r_wellbeing_based_difference_employed_fraction_0.3", "annual_average_consumption_loss_pct_employed_fraction_0.0909090909090909", "average_consumption_loss_pct_difference_employed_fraction_0.0909090909090909", "average_reconstruction_rate_employed_fraction_0.0909090909090909", "average_reconstruction_rate_difference_employed_fraction_0.0909090909090909", "r_consumption_based_employed_fraction_0.0909090909090909", "r_consumption_based_difference_employed_fraction_0.0909090909090909", "r_wellbeing_based_employed_fraction_0.0909090909090909", "r_wellbeing_based_difference_employed_fraction_0.0909090909090909", "annual_average_consumption_loss_pct_employed_fraction_0.4285714285714285", "average_consumption_loss_pct_difference_employed_fraction_0.4285714285714285", "average_reconstruction_rate_employed_fraction_0.4285714285714285", "average_reconstruction_rate_difference_employed_fraction_0.4285714285714285", "r_consumption_based_employed_fraction_0.4285714285714285", "r_consumption_based_difference_employed_fraction_0.4285714285714285", "r_wellbeing_based_employed_fraction_0.4285714285714285", "r_wellbeing_based_difference_employed_fraction_0.4285714285714285", "annual_average_consumption_loss_pct_employed_fraction_0.5714285714285714", "average_consumption_loss_pct_difference_employed_fraction_0.5714285714285714", "average_reconstruction_rate_employed_fraction_0.5714285714285714", "average_reconstruction_rate_difference_employed_fraction_0.5714285714285714", "r_consumption_based_employed_fraction_0.5714285714285714", "r_consumption_based_difference_employed_fraction_0.5714285714285714", "r_wellbeing_based_employed_fraction_0.5714285714285714", "r_wellbeing_based_difference_employed_fraction_0.5714285714285714", "annual_average_consumption_loss_pct_employed_fraction_0.1333333333333333", "average_consumption_loss_pct_difference_employed_fraction_0.1333333333333333", "average_reconstruction_rate_employed_fraction_0.1333333333333333", "average_reconstruction_rate_difference_employed_fraction_0.1333333333333333", "r_consumption_based_employed_fraction_0.1333333333333333", "r_consumption_based_difference_employed_fraction_0.1333333333333333", "r_wellbeing_based_employed_fraction_0.1333333333333333", "r_wellbeing_based_difference_employed_fraction_0.1333333333333333", "annual_average_consumption_loss_pct_employed_fraction_0.75", "average_consumption_loss_pct_difference_employed_fraction_0.75", "average_reconstruction_rate_employed_fraction_0.75", "average_reconstruction_rate_difference_employed_fraction_0.75", "r_consumption_based_employed_fraction_0.75", "r_consumption_based_difference_employed_fraction_0.75", "r_wellbeing_based_employed_fraction_0.75", "r_wellbeing_based_difference_employed_fraction_0.75", "annual_average_consumption_loss_pct_employed_fraction_0.6", "average_consumption_loss_pct_difference_employed_fraction_0.6", "average_reconstruction_rate_employed_fraction_0.6", "average_reconstruction_rate_difference_employed_fraction_0.6", "r_consumption_based_employed_fraction_0.6", "r_consumption_based_difference_employed_fraction_0.6", "r_wellbeing_based_employed_fraction_0.6", "r_wellbeing_based_difference_employed_fraction_0.6", "annual_average_consumption_loss_pct_employed_fraction_0.4166666666666667", "average_consumption_loss_pct_difference_employed_fraction_0.4166666666666667", "average_reconstruction_rate_employed_fraction_0.4166666666666667", "average_reconstruction_rate_difference_employed_fraction_0.4166666666666667", "r_consumption_based_employed_fraction_0.4166666666666667", "r_consumption_based_difference_employed_fraction_0.4166666666666667", "r_wellbeing_based_employed_fraction_0.4166666666666667", "r_wellbeing_based_difference_employed_fraction_0.4166666666666667", "annual_average_consumption_loss_pct_employed_fraction_0.8", "average_consumption_loss_pct_difference_employed_fraction_0.8", "average_reconstruction_rate_employed_fraction_0.8", "average_reconstruction_rate_difference_employed_fraction_0.8", "r_consumption_based_employed_fraction_0.8", "r_consumption_based_difference_employed_fraction_0.8", "r_wellbeing_based_employed_fraction_0.8", "r_wellbeing_based_difference_employed_fraction_0.8", "annual_average_consumption_loss_pct_employed_fraction_0.2307692307692307", "average_consumption_loss_pct_difference_employed_fraction_0.2307692307692307", "average_reconstruction_rate_employed_fraction_0.2307692307692307", "average_reconstruction_rate_difference_employed_fraction_0.2307692307692307", "r_consumption_based_employed_fraction_0.2307692307692307", "r_consumption_based_difference_employed_fraction_0.2307692307692307", "r_wellbeing_based_employed_fraction_0.2307692307692307", "r_wellbeing_based_difference_employed_fraction_0.2307692307692307", "annual_average_consumption_loss_pct_employed_fraction_1.0", "average_consumption_loss_pct_difference_employed_fraction_1.0", "average_reconstruction_rate_employed_fraction_1.0", "average_reconstruction_rate_difference_employed_fraction_1.0", "r_consumption_based_employed_fraction_1.0", "r_consumption_based_difference_employed_fraction_1.0", "r_wellbeing_based_employed_fraction_1.0", "r_wellbeing_based_difference_employed_fraction_1.0", "annual_average_consumption_loss_pct_employed_fraction_0.1", "average_consumption_loss_pct_difference_employed_fraction_0.1", "average_reconstruction_rate_employed_fraction_0.1", "average_reconstruction_rate_difference_employed_fraction_0.1", "r_consumption_based_employed_fraction_0.1", "r_consumption_based_difference_employed_fraction_0.1", "r_wellbeing_based_employed_fraction_0.1", "r_wellbeing_based_difference_employed_fraction_0.1", "annual_average_consumption_loss_pct_employed_fraction_0.4444444444444444", "average_consumption_loss_pct_difference_employed_fraction_0.4444444444444444", "average_reconstruction_rate_employed_fraction_0.4444444444444444", "average_reconstruction_rate_difference_employed_fraction_0.4444444444444444", "r_consumption_based_employed_fraction_0.4444444444444444", "r_consumption_based_difference_employed_fraction_0.4444444444444444", "r_wellbeing_based_employed_fraction_0.4444444444444444", "r_wellbeing_based_difference_employed_fraction_0.4444444444444444", "annual_average_consumption_loss_pct_employed_fraction_0.7142857142857143", "average_consumption_loss_pct_difference_employed_fraction_0.7142857142857143", "average_reconstruction_rate_employed_fraction_0.7142857142857143", "average_reconstruction_rate_difference_employed_fraction_0.7142857142857143", "r_consumption_based_employed_fraction_0.7142857142857143", "r_consumption_based_difference_employed_fraction_0.7142857142857143", "r_wellbeing_based_employed_fraction_0.7142857142857143", "r_wellbeing_based_difference_employed_fraction_0.7142857142857143", "annual_average_consumption_loss_pct_employed_fraction_0.2142857142857142", "average_consumption_loss_pct_difference_employed_fraction_0.2142857142857142", "average_reconstruction_rate_employed_fraction_0.2142857142857142", "average_reconstruction_rate_difference_employed_fraction_0.2142857142857142", "r_consumption_based_employed_fraction_0.2142857142857142", "r_consumption_based_difference_employed_fraction_0.2142857142857142", "r_wellbeing_based_employed_fraction_0.2142857142857142", "r_wellbeing_based_difference_employed_fraction_0.2142857142857142", "annual_average_consumption_loss_pct_employed_fraction_0.0833333333333333", "average_consumption_loss_pct_difference_employed_fraction_0.0833333333333333", "average_reconstruction_rate_employed_fraction_0.0833333333333333", "average_reconstruction_rate_difference_employed_fraction_0.0833333333333333", "r_consumption_based_employed_fraction_0.0833333333333333", "r_consumption_based_difference_employed_fraction_0.0833333333333333", "r_wellbeing_based_employed_fraction_0.0833333333333333", "r_wellbeing_based_difference_employed_fraction_0.0833333333333333", "annual_average_consumption_loss_pct_employed_fraction_0.2666666666666666", "average_consumption_loss_pct_difference_employed_fraction_0.2666666666666666", "average_reconstruction_rate_employed_fraction_0.2666666666666666", "average_reconstruction_rate_difference_employed_fraction_0.2666666666666666", "r_consumption_based_employed_fraction_0.2666666666666666", "r_consumption_based_difference_employed_fraction_0.2666666666666666", "r_wellbeing_based_employed_fraction_0.2666666666666666", "r_wellbeing_based_difference_employed_fraction_0.2666666666666666", "annual_average_consumption_loss_pct_employed_fraction_0.0714285714285714", "average_consumption_loss_pct_difference_employed_fraction_0.0714285714285714", "average_reconstruction_rate_employed_fraction_0.0714285714285714", "average_reconstruction_rate_difference_employed_fraction_0.0714285714285714", "r_consumption_based_employed_fraction_0.0714285714285714", "r_consumption_based_difference_employed_fraction_0.0714285714285714", "r_wellbeing_based_employed_fraction_0.0714285714285714", "r_wellbeing_based_difference_employed_fraction_0.0714285714285714", "annual_average_consumption_loss_pct_imp_wat_rec_True", "average_consumption_loss_pct_difference_imp_wat_rec_True", "average_reconstruction_rate_imp_wat_rec_True", "average_reconstruction_rate_difference_imp_wat_rec_True", "r_consumption_based_imp_wat_rec_True", "r_consumption_based_difference_imp_wat_rec_True", "r_wellbeing_based_imp_wat_rec_True", "r_wellbeing_based_difference_imp_wat_rec_True", "annual_average_consumption_loss_pct_imp_wat_rec_False", "average_consumption_loss_pct_difference_imp_wat_rec_False", "average_reconstruction_rate_imp_wat_rec_False", "average_reconstruction_rate_difference_imp_wat_rec_False", "r_consumption_based_imp_wat_rec_False", "r_consumption_based_difference_imp_wat_rec_False", "r_wellbeing_based_imp_wat_rec_False", "r_wellbeing_based_difference_imp_wat_rec_False", "annual_average_consumption_loss_pct_imp_san_rec_True", "average_consumption_loss_pct_difference_imp_san_rec_True", "average_reconstruction_rate_imp_san_rec_True", "average_reconstruction_rate_difference_imp_san_rec_True", "r_consumption_based_imp_san_rec_True", "r_consumption_based_difference_imp_san_rec_True", "r_wellbeing_based_imp_san_rec_True", "r_wellbeing_based_difference_imp_san_rec_True", "annual_average_consumption_loss_pct_imp_san_rec_False", "average_consumption_loss_pct_difference_imp_san_rec_False", "average_reconstruction_rate_imp_san_rec_False", "average_reconstruction_rate_difference_imp_san_rec_False", "r_consumption_based_imp_san_rec_False", "r_consumption_based_difference_imp_san_rec_False", "r_wellbeing_based_imp_san_rec_False", "r_wellbeing_based_difference_imp_san_rec_False", "annual_average_consumption_loss_pct_hsize_ex_5_True", "average_consumption_loss_pct_difference_hsize_ex_5_True", "average_reconstruction_rate_hsize_ex_5_True", "average_reconstruction_rate_difference_hsize_ex_5_True", "r_consumption_based_hsize_ex_5_True", "r_consumption_based_difference_hsize_ex_5_True", "r_wellbeing_based_hsize_ex_5_True", "r_wellbeing_based_difference_hsize_ex_5_True", "annual_average_consumption_loss_pct_hsize_ex_5_False", "average_consumption_loss_pct_difference_hsize_ex_5_False", "average_reconstruction_rate_hsize_ex_5_False", "average_reconstruction_rate_difference_hsize_ex_5_False", "r_consumption_based_hsize_ex_5_False", "r_consumption_based_difference_hsize_ex_5_False", "r_wellbeing_based_hsize_ex_5_False", "r_wellbeing_based_difference_hsize_ex_5_False", "annual_average_consumption_loss_pct_household_has_disability_False", "average_consumption_loss_pct_difference_household_has_disability_False", "average_reconstruction_rate_household_has_disability_False", "average_reconstruction_rate_difference_household_has_disability_False", "r_consumption_based_household_has_disability_False", "r_consumption_based_difference_household_has_disability_False", "r_wellbeing_based_household_has_disability_False", "r_wellbeing_based_difference_household_has_disability_False", "annual_average_consumption_loss_pct_household_has_disability_True", "average_consumption_loss_pct_difference_household_has_disability_True", "average_reconstruction_rate_household_has_disability_True", "average_reconstruction_rate_difference_household_has_disability_True", "r_consumption_based_household_has_disability_True", "r_consumption_based_difference_household_has_disability_True", "r_wellbeing_based_household_has_disability_True", "r_wellbeing_based_difference_household_has_disability_True", "annual_average_consumption_loss_pct_is_single_parent_False", "average_consumption_loss_pct_difference_is_single_parent_False", "average_reconstruction_rate_is_single_parent_False", "average_reconstruction_rate_difference_is_single_parent_False", "r_consumption_based_is_single_parent_False", "r_consumption_based_difference_is_single_parent_False", "r_wellbeing_based_is_single_parent_False", "r_wellbeing_based_difference_is_single_parent_False", "annual_average_consumption_loss_pct_is_single_parent_True", "average_consumption_loss_pct_difference_is_single_parent_True", "average_reconstruction_rate_is_single_parent_True", "average_reconstruction_rate_difference_is_single_parent_True", "r_consumption_based_is_single_parent_True", "r_consumption_based_difference_is_single_parent_True", "r_wellbeing_based_is_single_parent_True", "r_wellbeing_based_difference_is_single_parent_True", "annual_average_consumption_loss_pct_dependency_ratio_High", "average_consumption_loss_pct_difference_dependency_ratio_High", "average_reconstruction_rate_dependency_ratio_High", "average_reconstruction_rate_difference_dependency_ratio_High", "r_consumption_based_dependency_ratio_High", "r_consumption_based_difference_dependency_ratio_High", "r_wellbeing_based_dependency_ratio_High", "r_wellbeing_based_difference_dependency_ratio_High", "annual_average_consumption_loss_pct_dependency_ratio_Low", "average_consumption_loss_pct_difference_dependency_ratio_Low", "average_reconstruction_rate_dependency_ratio_Low", "average_reconstruction_rate_difference_dependency_ratio_Low", "r_consumption_based_dependency_ratio_Low", "r_consumption_based_difference_dependency_ratio_Low", "r_wellbeing_based_dependency_ratio_Low", "r_wellbeing_based_difference_dependency_ratio_Low"] \ No newline at end of file +["households_count", "affected_households_count", "people_count", "affected_people_count", "initial_poor_count", "new_poor_count", "affected_poor_count", "initial_poverty_gap", "updated_initial_poverty_gap", "overall_poverty_gap", "resilience_consumption_based", "resilience_wellbeing_based", "annual_average_consumption_loss", "annual_average_consumption_loss_pct", "average_years_to_recover", "average_dwelling_vulnerability", "poverty_duration_0", "poverty_duration_1", "poverty_duration_2", "poverty_duration_3", "poverty_duration_4", "poverty_duration_5", "poverty_duration_6", "poverty_duration_7", "poverty_duration_8", "poverty_duration_9", "poverty_duration_10", "annual_average_consumption_loss_pct_female_headed_False", "average_consumption_loss_pct_difference_female_headed_False", "average_reconstruction_rate_female_headed_False", "average_reconstruction_rate_difference_female_headed_False", "r_consumption_based_female_headed_False", "r_consumption_based_difference_female_headed_False", "r_wellbeing_based_female_headed_False", "r_wellbeing_based_difference_female_headed_False", "annual_average_consumption_loss_pct_female_headed_True", "average_consumption_loss_pct_difference_female_headed_True", "average_reconstruction_rate_female_headed_True", "average_reconstruction_rate_difference_female_headed_True", "r_consumption_based_female_headed_True", "r_consumption_based_difference_female_headed_True", "r_wellbeing_based_female_headed_True", "r_wellbeing_based_difference_female_headed_True", "annual_average_consumption_loss_pct_urban_True", "average_consumption_loss_pct_difference_urban_True", "average_reconstruction_rate_urban_True", "average_reconstruction_rate_difference_urban_True", "r_consumption_based_urban_True", "r_consumption_based_difference_urban_True", "r_wellbeing_based_urban_True", "r_wellbeing_based_difference_urban_True", "annual_average_consumption_loss_pct_urban_False", "average_consumption_loss_pct_difference_urban_False", "average_reconstruction_rate_urban_False", "average_reconstruction_rate_difference_urban_False", "r_consumption_based_urban_False", "r_consumption_based_difference_urban_False", "r_wellbeing_based_urban_False", "r_wellbeing_based_difference_urban_False", "annual_average_consumption_loss_pct_literacy_Medium", "average_consumption_loss_pct_difference_literacy_Medium", "average_reconstruction_rate_literacy_Medium", "average_reconstruction_rate_difference_literacy_Medium", "r_consumption_based_literacy_Medium", "r_consumption_based_difference_literacy_Medium", "r_wellbeing_based_literacy_Medium", "r_wellbeing_based_difference_literacy_Medium", "annual_average_consumption_loss_pct_literacy_Low", "average_consumption_loss_pct_difference_literacy_Low", "average_reconstruction_rate_literacy_Low", "average_reconstruction_rate_difference_literacy_Low", "r_consumption_based_literacy_Low", "r_consumption_based_difference_literacy_Low", "r_wellbeing_based_literacy_Low", "r_wellbeing_based_difference_literacy_Low", "annual_average_consumption_loss_pct_literacy_High", "average_consumption_loss_pct_difference_literacy_High", "average_reconstruction_rate_literacy_High", "average_reconstruction_rate_difference_literacy_High", "r_consumption_based_literacy_High", "r_consumption_based_difference_literacy_High", "r_wellbeing_based_literacy_High", "r_wellbeing_based_difference_literacy_High"] \ No newline at end of file diff --git a/unbreakable/main.py b/unbreakable/main.py index d07666e..54a54e2 100644 --- a/unbreakable/main.py +++ b/unbreakable/main.py @@ -30,9 +30,9 @@ def main(): "disaster_spec": disaster_spec, "model": model, "return_period": return_period, - "n_scenarios": 2, + "n_scenarios": 16, "n_policies": 0, - "multiprocessing": False, + "multiprocessing": True, "n_processes": 16, } diff --git a/unbreakable/modules/disaster_impact.py b/unbreakable/modules/disaster_impact.py index a750c07..24aed58 100644 --- a/unbreakable/modules/disaster_impact.py +++ b/unbreakable/modules/disaster_impact.py @@ -217,7 +217,11 @@ def calculate_compound_impact(disaster_spec, disaster_impacts): # Disaster impacts have data on multiple return periods # Filter the disaster impacts for the return period in disaster_spec rp = disaster_spec[0].get("return_period") - filtered_impacts = disaster_impacts if rp is None else disaster_impacts[disaster_impacts["rp"] == rp] + filtered_impacts = ( + disaster_impacts + if rp is None + else disaster_impacts[disaster_impacts["rp"] == rp] + ) return {disaster_spec[0]["event_time"]: filtered_impacts} # Group disasters by event_time diff --git a/unbreakable/utils/household_data_preprocessor.py b/unbreakable/utils/household_data_preprocessor.py index cb9451b..38edd82 100644 --- a/unbreakable/utils/household_data_preprocessor.py +++ b/unbreakable/utils/household_data_preprocessor.py @@ -36,8 +36,8 @@ def prepare_household_data( households, params["min_households"], random_seed ) - # * This must be done after resampling and before matching - households = estimate_effective_capital_stock(households, params) + # Estimate the dwelling value + households = estimate_dwelling_value(households, params["dwelling_params"]) if params["disaster_params"]["impact_data_type"] == "assets": # There could be a mismatch between the assets in the household data and the exposure data @@ -45,6 +45,11 @@ def prepare_household_data( households, disaster_impacts, params["atol"] ) + # * This must be done after resampling and matching + households = estimate_effective_capital_stock( + households, params["effective_capital_stock_params"] + ) + # Estimate welfare based on consumption utility households = estimate_welfare(households, params)