Navigating Institutional Pluralism and Indigenous Rights: The Sámi–Forestry Company Conflict and Its Implications for Multinational Finance and ESG Risk
收藏资源简介:
Navigating Institutional Pluralism and Indigenous Rights: The Sámi–Forestry Company Conflict and Its Implications for Multinational Finance and ESG Risk DescriptionThis repository supports a study analyzing the intersection of Indigenous governance, carbon emissions, and multinational forestry activity. The focus is on the Sámi people of northern Sweden, whose customary land rights conflict with commercial land use regimes. The study explores how institutional pluralism and ESG risk intersect, drawing on panel data from CO₂ emissions, GDP, and V-Dem institutional indicators. All code and data files are designed for use in Google Colab, ensuring reproducibility and accessibility. Included Files /content/CO2_Long_Format.csv — Fossil CO₂ emissions by country and year. /content/GDP_Per_Capita_Cleaned.csv — GDP per capita (PPP-adjusted). /content/V-Dem-CY-Core-v15.csv — V-Dem indicators: rule of law, democracy, corruption. /content/SAMI_MERGED_FINAL.csv — Optional premerged dataset. How to Use in Google Colab Open Colab:Go to https://colab.research.google.com Upload Files:Click the folder icon → Upload each .csv file and sami.py. Install Required Packages (if needed):Run this in a Colab code cell: !pip install statsmodels patsy Run Script:Then execute: This runs all analysis steps including fixed-effects models and VIF diagnostics. Python Script -------------------------------------------------------------------- # STEP 1: Install packages (run manually in Colab if needed) # !pip install statsmodels patsy # STEP 2: Import libraries import pandas as pd import numpy as np import statsmodels.formula.api as smf from statsmodels.stats.outliers_influence import variance_inflation_factor from patsy import dmatrices # STEP 3: Load datasets (update paths if needed) co2 = pd.read_csv('/content/CO2_Long_Format.csv') gdp = pd.read_csv('/content/GDP_Per_Capita_Cleaned.csv') vdem = pd.read_csv('/content/V-Dem-CY-Core-v15.csv', low_memory=False) # STEP 4: Standardize and prepare columns co2.columns = co2.columns.str.strip().str.lower() gdp.columns = gdp.columns.str.strip().str.lower() vdem.columns = vdem.columns.str.strip().str.lower() vdem = vdem.rename(columns={'country_name': 'country'}) for df in [co2, gdp, vdem]: df['country'] = df['country'].astype(str).str.strip().str.lower() df['year'] = pd.to_numeric(df['year'], errors='coerce') # STEP 5: Merge datasets merged = co2.merge(gdp, on=['country', 'year'], how='inner') merged = merged.merge(vdem, on=['country', 'year'], how='inner') # STEP 6: Create variables merged['co2_estimate'] = pd.to_numeric(merged['co2_estimate'], errors='coerce') merged['gdp_per_capita'] = pd.to_numeric(merged['gdp_per_capita'], errors='coerce') merged['log_co2'] = np.log(merged['co2_estimate'].replace({0: np.nan})) merged['log_gdp_pc'] = np.log(merged['gdp_per_capita'].replace({0: np.nan})) # STEP 7: Filter and prepare panel merged = merged[merged['year'] >= 1960] required_cols = ['log_co2', 'log_gdp_pc', 'v2x_rule', 'v2x_polyarchy', 'v2x_libdem', 'v2x_corr', 'country', 'year'] df_panel = merged[required_cols].dropna() df_panel['log_gdp_x_rule'] = df_panel['log_gdp_pc'] * df_panel['v2x_rule'] # STEP 8: Main fixed-effects regression model = smf.ols( formula='log_co2 ~ log_gdp_pc + v2x_rule + log_gdp_x_rule + v2x_polyarchy + v2x_libdem + v2x_corr + C(country) + C(year)', data=df_panel ).fit(cov_type='cluster', cov_kwds={'groups': df_panel['country']}) print("=== FULL MODEL ===") print(model.summary()) # STEP 9: VIF Analysis (excluding fixed effects) y, X = dmatrices( 'log_co2 ~ log_gdp_pc + v2x_rule + log_gdp_x_rule + v2x_polyarchy + v2x_libdem + v2x_corr', data=df_panel, return_type='dataframe' ) vif_data = pd.DataFrame() vif_data['Variable'] = X.columns vif_data['VIF'] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])] print("\n=== VIF ANALYSIS ===") print(vif_data) # STEP 10: Refined regression model_refined = smf.ols( formula='log_co2 ~ log_gdp_pc + v2x_rule + log_gdp_x_rule + C(country) + C(year)', data=df_panel ).fit(cov_type='cluster', cov_kwds={'groups': df_panel['country']}) print("\n=== REFINED MODEL ===") print(model_refined.summary()) Citation Author(s). (2025). Navigating Institutional Pluralism and Indigenous Rights: The Sámi–Forestry Company Conflict and Its Implications for Multinational Finance and ESG Risk. Zenodo. https://doi.org/your-doi-here License Creative Commons Attribution 4.0 International (CC BY 4.0)https://creativecommons.org/licenses/by/4.0/ Let me know if you'd like a .md file or help submitting it directly to Zenodo.



