import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
from sklearn.model_selection import cross_val_score, KFold
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import LabelEncoder
np.random.seed(42)
n = 800
# Generate data
size_sqft = np.random.normal(1800, 600, n)
size_sqft = np.clip(size_sqft, 500, 5000)
bedrooms = np.random.poisson(3, n) + 1
bathrooms = bedrooms - np.minimum(np.random.poisson(1, n), 1)
bathrooms = np.maximum(bathrooms, 1)
age_years = np.random.randint(0, 41, n)
distance_from_centre = np.random.normal(18, 12, n)
distance_from_centre = np.maximum(distance_from_centre, 1)
lga = np.random.choice(['Ikoyi', 'Victoria Island', 'Lekki', 'Ajah', 'Other'], n,
p=[0.15, 0.2, 0.25, 0.25, 0.15])
has_generator = np.random.binomial(1, 0.65, n)
# Price model
lga_premiums = {'Ikoyi': 150000, 'Victoria Island': 120000,
'Lekki': 50000, 'Ajah': 30000, 'Other': 0}
price_usd = (80000 + 100 * size_sqft + 20000 * bedrooms + 12000 * bathrooms -
1500 * age_years - 800 * distance_from_centre + 25000 * has_generator +
np.array([lga_premiums[x] for x in lga]) +
np.random.normal(0, 35000, n))
price_usd = np.maximum(price_usd, 30000)
lagos_properties = pd.DataFrame({
'size_sqft': size_sqft,
'bedrooms': bedrooms,
'bathrooms': bathrooms,
'age_years': age_years,
'distance_from_centre': distance_from_centre,
'lga': lga,
'has_generator': has_generator,
'price_usd': price_usd
})
# EDA
print("Exploratory Data Analysis:\n")
#> Exploratory Data Analysis:
print("Summary statistics:")
#> Summary statistics:
print(lagos_properties.describe())
#> size_sqft bedrooms ... has_generator price_usd
#> count 800.000000 800.00000 ... 800.000000 800.000000
#> mean 1797.531502 3.96750 ... 0.637500 414805.968850
#> std 584.411537 1.70956 ... 0.481023 103111.769721
#> min 500.000000 1.00000 ... 0.000000 116381.725794
#> 25% 1378.599644 3.00000 ... 0.000000 339734.429244
#> 50% 1807.678288 4.00000 ... 1.000000 410305.616129
#> 75% 2177.199805 5.00000 ... 1.000000 487557.855268
#> max 4111.638894 10.00000 ... 1.000000 697885.971900
#>
#> [8 rows x 7 columns]
print("\n\nPrice by LGA:")
#>
#>
#> Price by LGA:
by_lga = lagos_properties.groupby('lga')['price_usd'].agg(['count', 'mean', 'median'])
print(by_lga)
#> count mean median
#> lga
#> Ajah 222 377780.209686 369898.013057
#> Ikoyi 120 500550.167491 494798.564092
#> Lekki 182 399057.587461 392297.239534
#> Other 126 358187.786777 343935.695831
#> Victoria Island 150 467676.042526 469717.571349
# Simple regression
X_simple = sm.add_constant(lagos_properties['size_sqft'])
fit_simple = sm.OLS(lagos_properties['price_usd'], X_simple).fit()
# Multiple regression (encode LGA)
lga_dummies = pd.get_dummies(lagos_properties['lga'], drop_first=True, prefix='lga', dtype=int)
X_multi = sm.add_constant(pd.concat([
lagos_properties[['size_sqft', 'bedrooms', 'bathrooms', 'age_years',
'distance_from_centre', 'has_generator']],
lga_dummies
], axis=1))
fit_multi = sm.OLS(lagos_properties['price_usd'], X_multi).fit()
print("\n\nModel Comparison:")
#>
#>
#> Model Comparison:
print(f"Simple (size only):")
#> Simple (size only):
print(f" R² = {fit_simple.rsquared:.4f}")
#> R² = 0.3179
print(f" RMSE = ${np.sqrt(fit_simple.mse_resid):,.0f}\n")
#> RMSE = $85,213
print(f"Multiple (all features):")
#> Multiple (all features):
print(f" R² = {fit_multi.rsquared:.4f}")
#> R² = 0.8853
print(f" RMSE = ${np.sqrt(fit_multi.mse_resid):,.0f}")
#> RMSE = $35,144
print("\n\nMultiple Regression Summary:")
#>
#>
#> Multiple Regression Summary:
print(fit_multi.summary())
#> OLS Regression Results
#> ==============================================================================
#> Dep. Variable: price_usd R-squared: 0.885
#> Model: OLS Adj. R-squared: 0.884
#> Method: Least Squares F-statistic: 608.9
#> Date: Sun, 12 Apr 2026 Prob (F-statistic): 0.00
#> Time: 14:14:35 Log-Likelihood: -9503.4
#> No. Observations: 800 AIC: 1.903e+04
#> Df Residuals: 789 BIC: 1.908e+04
#> Df Model: 10
#> Covariance Type: nonrobust
#> ========================================================================================
#> coef std err t P>|t| [0.025 0.975]
#> ----------------------------------------------------------------------------------------
#> const 1.055e+05 6377.063 16.545 0.000 9.3e+04 1.18e+05
#> size_sqft 98.6160 2.133 46.233 0.000 94.429 102.803
#> bedrooms 2.144e+04 2602.021 8.240 0.000 1.63e+04 2.65e+04
#> bathrooms 1.073e+04 2571.904 4.171 0.000 5679.796 1.58e+04
#> age_years -1584.7497 106.670 -14.857 0.000 -1794.140 -1375.360
#> distance_from_centre -635.5155 108.665 -5.848 0.000 -848.821 -422.210
#> has_generator 2.565e+04 2590.364 9.903 0.000 2.06e+04 3.07e+04
#> lga_Ikoyi 1.233e+05 3996.291 30.865 0.000 1.15e+05 1.31e+05
#> lga_Lekki 2.853e+04 3534.940 8.070 0.000 2.16e+04 3.55e+04
#> lga_Other -2.607e+04 3931.721 -6.631 0.000 -3.38e+04 -1.84e+04
#> lga_Victoria Island 9.631e+04 3737.048 25.771 0.000 8.9e+04 1.04e+05
#> ==============================================================================
#> Omnibus: 1.368 Durbin-Watson: 2.129
#> Prob(Omnibus): 0.505 Jarque-Bera (JB): 1.319
#> Skew: -0.099 Prob(JB): 0.517
#> Kurtosis: 3.010 Cond. No. 1.06e+04
#> ==============================================================================
#>
#> Notes:
#> [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
#> [2] The condition number is large, 1.06e+04. This might indicate that there are
#> strong multicollinearity or other numerical problems.
# 5-fold CV for multiple model
X_cv = pd.concat([
lagos_properties[['size_sqft', 'bedrooms', 'bathrooms', 'age_years',
'distance_from_centre', 'has_generator']],
lga_dummies
], axis=1)
kfold = KFold(n_splits=5, shuffle=True, random_state=42)
cv_scores = cross_val_score(LinearRegression(), X_cv, lagos_properties['price_usd'],
cv=kfold, scoring='neg_mean_squared_error')
cv_rmse = np.sqrt(-cv_scores.mean())
print(f"\n5-Fold Cross-Validation RMSE: ${cv_rmse:,.0f}")
#>
#> 5-Fold Cross-Validation RMSE: $35,481
# Diagnostic plots
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# Residuals vs Fitted
residuals_multi = fit_multi.resid
fitted_multi = fit_multi.fittedvalues
axes[0, 0].scatter(fitted_multi, residuals_multi, alpha=0.5, s=20)
axes[0, 0].axhline(y=0, color='red', linestyle='--', linewidth=1)
axes[0, 0].set_xlabel('Fitted values')
axes[0, 0].set_ylabel('Residuals')
axes[0, 0].set_title('Residuals vs Fitted')
axes[0, 0].grid(True, alpha=0.3)
# Q-Q plot
stats.probplot(residuals_multi / residuals_multi.std(), dist="norm", plot=axes[0, 1])
#> ((array([-3.13269090e+00, -2.86240960e+00, -2.71124085e+00, -2.60445496e+00,
#> -2.52103830e+00, -2.45216961e+00, -2.39327695e+00, -2.34167369e+00,
#> -2.29564214e+00, -2.25401521e+00, -2.21596250e+00, -2.18087139e+00,
#> -2.14827658e+00, -2.11781604e+00, -2.08920237e+00, -2.06220345e+00,
#> -2.03662904e+00, -2.01232119e+00, -1.98914727e+00, -1.96699480e+00,
#> -1.94576754e+00, -1.92538245e+00, -1.90576741e+00, -1.88685932e+00,
#> -1.86860270e+00, -1.85094845e+00, -1.83385292e+00, -1.81727714e+00,
#> -1.80118612e+00, -1.78554840e+00, -1.77033549e+00, -1.75552160e+00,
#> -1.74108324e+00, -1.72699897e+00, -1.71324918e+00, -1.69981586e+00,
#> -1.68668245e+00, -1.67383370e+00, -1.66125548e+00, -1.64893473e+00,
#> -1.63685932e+00, -1.62501798e+00, -1.61340021e+00, -1.60199621e+00,
#> -1.59079683e+00, -1.57979349e+00, -1.56897816e+00, -1.55834331e+00,
#> -1.54788184e+00, -1.53758709e+00, -1.52745276e+00, -1.51747292e+00,
#> -1.50764196e+00, -1.49795460e+00, -1.48840581e+00, -1.47899083e+00,
#> -1.46970515e+00, -1.46054450e+00, -1.45150480e+00, -1.44258218e+00,
#> -1.43377295e+00, -1.42507361e+00, -1.41648079e+00, -1.40799130e+00,
#> -1.39960210e+00, -1.39131026e+00, -1.38311298e+00, -1.37500761e+00,
#> -1.36699158e+00, -1.35906244e+00, -1.35121783e+00, -1.34345551e+00,
#> -1.33577329e+00, -1.32816912e+00, -1.32064097e+00, -1.31318694e+00,
#> -1.30580516e+00, -1.29849386e+00, -1.29125132e+00, -1.28407589e+00,
#> -1.27696596e+00, -1.26992001e+00, -1.26293655e+00, -1.25601414e+00,
#> -1.24915140e+00, -1.24234700e+00, -1.23559963e+00, -1.22890805e+00,
#> -1.22227105e+00, -1.21568746e+00, -1.20915615e+00, -1.20267601e+00,
#> -1.19624598e+00, -1.18986504e+00, -1.18353218e+00, -1.17724643e+00,
#> -1.17100685e+00, -1.16481254e+00, -1.15866260e+00, -1.15255617e+00,
#> -1.14649242e+00, -1.14047054e+00, -1.13448973e+00, -1.12854922e+00,
#> -1.12264828e+00, -1.11678618e+00, -1.11096220e+00, -1.10517566e+00,
#> -1.09942590e+00, -1.09371225e+00, -1.08803409e+00, -1.08239079e+00,
#> -1.07678175e+00, -1.07120639e+00, -1.06566413e+00, -1.06015441e+00,
#> -1.05467668e+00, -1.04923042e+00, -1.04381511e+00, -1.03843024e+00,
#> -1.03307530e+00, -1.02774983e+00, -1.02245335e+00, -1.01718540e+00,
#> -1.01194553e+00, -1.00673329e+00, -1.00154826e+00, -9.96390023e-01,
#> -9.91258158e-01, -9.86152267e-01, -9.81071957e-01, -9.76016842e-01,
#> -9.70986547e-01, -9.65980701e-01, -9.60998946e-01, -9.56040927e-01,
#> -9.51106299e-01, -9.46194722e-01, -9.41305866e-01, -9.36439405e-01,
#> -9.31595021e-01, -9.26772402e-01, -9.21971241e-01, -9.17191239e-01,
#> -9.12432102e-01, -9.07693542e-01, -9.02975277e-01, -8.98277028e-01,
#> -8.93598524e-01, -8.88939498e-01, -8.84299689e-01, -8.79678839e-01,
#> -8.75076696e-01, -8.70493013e-01, -8.65927547e-01, -8.61380058e-01,
#> -8.56850313e-01, -8.52338082e-01, -8.47843138e-01, -8.43365259e-01,
#> -8.38904228e-01, -8.34459829e-01, -8.30031852e-01, -8.25620091e-01,
#> -8.21224340e-01, -8.16844401e-01, -8.12480076e-01, -8.08131172e-01,
#> -8.03797499e-01, -7.99478870e-01, -7.95175100e-01, -7.90886008e-01,
#> -7.86611417e-01, -7.82351151e-01, -7.78105037e-01, -7.73872906e-01,
#> -7.69654590e-01, -7.65449926e-01, -7.61258751e-01, -7.57080905e-01,
#> -7.52916233e-01, -7.48764578e-01, -7.44625790e-01, -7.40499717e-01,
#> -7.36386213e-01, -7.32285132e-01, -7.28196330e-01, -7.24119666e-01,
#> -7.20055001e-01, -7.16002197e-01, -7.11961121e-01, -7.07931637e-01,
#> -7.03913616e-01, -6.99906926e-01, -6.95911442e-01, -6.91927036e-01,
#> -6.87953584e-01, -6.83990965e-01, -6.80039057e-01, -6.76097741e-01,
#> -6.72166899e-01, -6.68246417e-01, -6.64336178e-01, -6.60436071e-01,
#> -6.56545984e-01, -6.52665808e-01, -6.48795432e-01, -6.44934752e-01,
#> -6.41083660e-01, -6.37242052e-01, -6.33409826e-01, -6.29586880e-01,
#> -6.25773113e-01, -6.21968426e-01, -6.18172722e-01, -6.14385902e-01,
#> -6.10607873e-01, -6.06838539e-01, -6.03077808e-01, -5.99325586e-01,
#> -5.95581784e-01, -5.91846311e-01, -5.88119078e-01, -5.84399997e-01,
#> -5.80688983e-01, -5.76985948e-01, -5.73290808e-01, -5.69603479e-01,
#> -5.65923879e-01, -5.62251925e-01, -5.58587537e-01, -5.54930634e-01,
#> -5.51281136e-01, -5.47638967e-01, -5.44004048e-01, -5.40376302e-01,
#> -5.36755654e-01, -5.33142029e-01, -5.29535353e-01, -5.25935551e-01,
#> -5.22342552e-01, -5.18756284e-01, -5.15176675e-01, -5.11603656e-01,
#> -5.08037156e-01, -5.04477106e-01, -5.00923439e-01, -4.97376086e-01,
#> -4.93834981e-01, -4.90300058e-01, -4.86771251e-01, -4.83248495e-01,
#> -4.79731726e-01, -4.76220880e-01, -4.72715894e-01, -4.69216706e-01,
#> -4.65723254e-01, -4.62235477e-01, -4.58753313e-01, -4.55276703e-01,
#> -4.51805587e-01, -4.48339906e-01, -4.44879602e-01, -4.41424617e-01,
#> -4.37974892e-01, -4.34530373e-01, -4.31091001e-01, -4.27656721e-01,
#> -4.24227477e-01, -4.20803215e-01, -4.17383880e-01, -4.13969419e-01,
#> -4.10559776e-01, -4.07154900e-01, -4.03754738e-01, -4.00359237e-01,
#> -3.96968346e-01, -3.93582013e-01, -3.90200188e-01, -3.86822819e-01,
#> -3.83449857e-01, -3.80081252e-01, -3.76716954e-01, -3.73356914e-01,
#> -3.70001085e-01, -3.66649417e-01, -3.63301863e-01, -3.59958375e-01,
#> -3.56618906e-01, -3.53283410e-01, -3.49951840e-01, -3.46624149e-01,
#> -3.43300292e-01, -3.39980223e-01, -3.36663898e-01, -3.33351272e-01,
#> -3.30042299e-01, -3.26736937e-01, -3.23435140e-01, -3.20136865e-01,
#> -3.16842070e-01, -3.13550710e-01, -3.10262744e-01, -3.06978128e-01,
#> -3.03696821e-01, -3.00418781e-01, -2.97143965e-01, -2.93872334e-01,
#> -2.90603844e-01, -2.87338457e-01, -2.84076130e-01, -2.80816824e-01,
#> -2.77560498e-01, -2.74307113e-01, -2.71056628e-01, -2.67809005e-01,
#> -2.64564204e-01, -2.61322186e-01, -2.58082913e-01, -2.54846345e-01,
#> -2.51612445e-01, -2.48381174e-01, -2.45152494e-01, -2.41926368e-01,
#> -2.38702758e-01, -2.35481627e-01, -2.32262937e-01, -2.29046651e-01,
#> -2.25832733e-01, -2.22621146e-01, -2.19411853e-01, -2.16204819e-01,
#> -2.13000007e-01, -2.09797381e-01, -2.06596906e-01, -2.03398545e-01,
#> -2.00202264e-01, -1.97008027e-01, -1.93815798e-01, -1.90625543e-01,
#> -1.87437228e-01, -1.84250816e-01, -1.81066275e-01, -1.77883568e-01,
#> -1.74702662e-01, -1.71523523e-01, -1.68346117e-01, -1.65170409e-01,
#> -1.61996366e-01, -1.58823955e-01, -1.55653141e-01, -1.52483891e-01,
#> -1.49316172e-01, -1.46149951e-01, -1.42985194e-01, -1.39821868e-01,
#> -1.36659941e-01, -1.33499380e-01, -1.30340152e-01, -1.27182224e-01,
#> -1.24025564e-01, -1.20870139e-01, -1.17715918e-01, -1.14562867e-01,
#> -1.11410954e-01, -1.08260149e-01, -1.05110417e-01, -1.01961728e-01,
#> -9.88140494e-02, -9.56673496e-02, -9.25215967e-02, -8.93767592e-02,
#> -8.62328054e-02, -8.30897037e-02, -7.99474227e-02, -7.68059308e-02,
#> -7.36651968e-02, -7.05251892e-02, -6.73858769e-02, -6.42472285e-02,
#> -6.11092129e-02, -5.79717989e-02, -5.48349555e-02, -5.16986515e-02,
#> -4.85628560e-02, -4.54275380e-02, -4.22926664e-02, -3.91582104e-02,
#> -3.60241391e-02, -3.28904216e-02, -2.97570271e-02, -2.66239247e-02,
#> -2.34910836e-02, -2.03584731e-02, -1.72260623e-02, -1.40938205e-02,
#> -1.09617170e-02, -7.82972108e-03, -4.69780193e-03, -1.56592886e-03,
#> 1.56592886e-03, 4.69780193e-03, 7.82972108e-03, 1.09617170e-02,
#> 1.40938205e-02, 1.72260623e-02, 2.03584731e-02, 2.34910836e-02,
#> 2.66239247e-02, 2.97570271e-02, 3.28904216e-02, 3.60241391e-02,
#> 3.91582104e-02, 4.22926664e-02, 4.54275380e-02, 4.85628560e-02,
#> 5.16986515e-02, 5.48349555e-02, 5.79717989e-02, 6.11092129e-02,
#> 6.42472285e-02, 6.73858769e-02, 7.05251892e-02, 7.36651968e-02,
#> 7.68059308e-02, 7.99474227e-02, 8.30897037e-02, 8.62328054e-02,
#> 8.93767592e-02, 9.25215967e-02, 9.56673496e-02, 9.88140494e-02,
#> 1.01961728e-01, 1.05110417e-01, 1.08260149e-01, 1.11410954e-01,
#> 1.14562867e-01, 1.17715918e-01, 1.20870139e-01, 1.24025564e-01,
#> 1.27182224e-01, 1.30340152e-01, 1.33499380e-01, 1.36659941e-01,
#> 1.39821868e-01, 1.42985194e-01, 1.46149951e-01, 1.49316172e-01,
#> 1.52483891e-01, 1.55653141e-01, 1.58823955e-01, 1.61996366e-01,
#> 1.65170409e-01, 1.68346117e-01, 1.71523523e-01, 1.74702662e-01,
#> 1.77883568e-01, 1.81066275e-01, 1.84250816e-01, 1.87437228e-01,
#> 1.90625543e-01, 1.93815798e-01, 1.97008027e-01, 2.00202264e-01,
#> 2.03398545e-01, 2.06596906e-01, 2.09797381e-01, 2.13000007e-01,
#> 2.16204819e-01, 2.19411853e-01, 2.22621146e-01, 2.25832733e-01,
#> 2.29046651e-01, 2.32262937e-01, 2.35481627e-01, 2.38702758e-01,
#> 2.41926368e-01, 2.45152494e-01, 2.48381174e-01, 2.51612445e-01,
#> 2.54846345e-01, 2.58082913e-01, 2.61322186e-01, 2.64564204e-01,
#> 2.67809005e-01, 2.71056628e-01, 2.74307113e-01, 2.77560498e-01,
#> 2.80816824e-01, 2.84076130e-01, 2.87338457e-01, 2.90603844e-01,
#> 2.93872334e-01, 2.97143965e-01, 3.00418781e-01, 3.03696821e-01,
#> 3.06978128e-01, 3.10262744e-01, 3.13550710e-01, 3.16842070e-01,
#> 3.20136865e-01, 3.23435140e-01, 3.26736937e-01, 3.30042299e-01,
#> 3.33351272e-01, 3.36663898e-01, 3.39980223e-01, 3.43300292e-01,
#> 3.46624149e-01, 3.49951840e-01, 3.53283410e-01, 3.56618906e-01,
#> 3.59958375e-01, 3.63301863e-01, 3.66649417e-01, 3.70001085e-01,
#> 3.73356914e-01, 3.76716954e-01, 3.80081252e-01, 3.83449857e-01,
#> 3.86822819e-01, 3.90200188e-01, 3.93582013e-01, 3.96968346e-01,
#> 4.00359237e-01, 4.03754738e-01, 4.07154900e-01, 4.10559776e-01,
#> 4.13969419e-01, 4.17383880e-01, 4.20803215e-01, 4.24227477e-01,
#> 4.27656721e-01, 4.31091001e-01, 4.34530373e-01, 4.37974892e-01,
#> 4.41424617e-01, 4.44879602e-01, 4.48339906e-01, 4.51805587e-01,
#> 4.55276703e-01, 4.58753313e-01, 4.62235477e-01, 4.65723254e-01,
#> 4.69216706e-01, 4.72715894e-01, 4.76220880e-01, 4.79731726e-01,
#> 4.83248495e-01, 4.86771251e-01, 4.90300058e-01, 4.93834981e-01,
#> 4.97376086e-01, 5.00923439e-01, 5.04477106e-01, 5.08037156e-01,
#> 5.11603656e-01, 5.15176675e-01, 5.18756284e-01, 5.22342552e-01,
#> 5.25935551e-01, 5.29535353e-01, 5.33142029e-01, 5.36755654e-01,
#> 5.40376302e-01, 5.44004048e-01, 5.47638967e-01, 5.51281136e-01,
#> 5.54930634e-01, 5.58587537e-01, 5.62251925e-01, 5.65923879e-01,
#> 5.69603479e-01, 5.73290808e-01, 5.76985948e-01, 5.80688983e-01,
#> 5.84399997e-01, 5.88119078e-01, 5.91846311e-01, 5.95581784e-01,
#> 5.99325586e-01, 6.03077808e-01, 6.06838539e-01, 6.10607873e-01,
#> 6.14385902e-01, 6.18172722e-01, 6.21968426e-01, 6.25773113e-01,
#> 6.29586880e-01, 6.33409826e-01, 6.37242052e-01, 6.41083660e-01,
#> 6.44934752e-01, 6.48795432e-01, 6.52665808e-01, 6.56545984e-01,
#> 6.60436071e-01, 6.64336178e-01, 6.68246417e-01, 6.72166899e-01,
#> 6.76097741e-01, 6.80039057e-01, 6.83990965e-01, 6.87953584e-01,
#> 6.91927036e-01, 6.95911442e-01, 6.99906926e-01, 7.03913616e-01,
#> 7.07931637e-01, 7.11961121e-01, 7.16002197e-01, 7.20055001e-01,
#> 7.24119666e-01, 7.28196330e-01, 7.32285132e-01, 7.36386213e-01,
#> 7.40499717e-01, 7.44625790e-01, 7.48764578e-01, 7.52916233e-01,
#> 7.57080905e-01, 7.61258751e-01, 7.65449926e-01, 7.69654590e-01,
#> 7.73872906e-01, 7.78105037e-01, 7.82351151e-01, 7.86611417e-01,
#> 7.90886008e-01, 7.95175100e-01, 7.99478870e-01, 8.03797499e-01,
#> 8.08131172e-01, 8.12480076e-01, 8.16844401e-01, 8.21224340e-01,
#> 8.25620091e-01, 8.30031852e-01, 8.34459829e-01, 8.38904228e-01,
#> 8.43365259e-01, 8.47843138e-01, 8.52338082e-01, 8.56850313e-01,
#> 8.61380058e-01, 8.65927547e-01, 8.70493013e-01, 8.75076696e-01,
#> 8.79678839e-01, 8.84299689e-01, 8.88939498e-01, 8.93598524e-01,
#> 8.98277028e-01, 9.02975277e-01, 9.07693542e-01, 9.12432102e-01,
#> 9.17191239e-01, 9.21971241e-01, 9.26772402e-01, 9.31595021e-01,
#> 9.36439405e-01, 9.41305866e-01, 9.46194722e-01, 9.51106299e-01,
#> 9.56040927e-01, 9.60998946e-01, 9.65980701e-01, 9.70986547e-01,
#> 9.76016842e-01, 9.81071957e-01, 9.86152267e-01, 9.91258158e-01,
#> 9.96390023e-01, 1.00154826e+00, 1.00673329e+00, 1.01194553e+00,
#> 1.01718540e+00, 1.02245335e+00, 1.02774983e+00, 1.03307530e+00,
#> 1.03843024e+00, 1.04381511e+00, 1.04923042e+00, 1.05467668e+00,
#> 1.06015441e+00, 1.06566413e+00, 1.07120639e+00, 1.07678175e+00,
#> 1.08239079e+00, 1.08803409e+00, 1.09371225e+00, 1.09942590e+00,
#> 1.10517566e+00, 1.11096220e+00, 1.11678618e+00, 1.12264828e+00,
#> 1.12854922e+00, 1.13448973e+00, 1.14047054e+00, 1.14649242e+00,
#> 1.15255617e+00, 1.15866260e+00, 1.16481254e+00, 1.17100685e+00,
#> 1.17724643e+00, 1.18353218e+00, 1.18986504e+00, 1.19624598e+00,
#> 1.20267601e+00, 1.20915615e+00, 1.21568746e+00, 1.22227105e+00,
#> 1.22890805e+00, 1.23559963e+00, 1.24234700e+00, 1.24915140e+00,
#> 1.25601414e+00, 1.26293655e+00, 1.26992001e+00, 1.27696596e+00,
#> 1.28407589e+00, 1.29125132e+00, 1.29849386e+00, 1.30580516e+00,
#> 1.31318694e+00, 1.32064097e+00, 1.32816912e+00, 1.33577329e+00,
#> 1.34345551e+00, 1.35121783e+00, 1.35906244e+00, 1.36699158e+00,
#> 1.37500761e+00, 1.38311298e+00, 1.39131026e+00, 1.39960210e+00,
#> 1.40799130e+00, 1.41648079e+00, 1.42507361e+00, 1.43377295e+00,
#> 1.44258218e+00, 1.45150480e+00, 1.46054450e+00, 1.46970515e+00,
#> 1.47899083e+00, 1.48840581e+00, 1.49795460e+00, 1.50764196e+00,
#> 1.51747292e+00, 1.52745276e+00, 1.53758709e+00, 1.54788184e+00,
#> 1.55834331e+00, 1.56897816e+00, 1.57979349e+00, 1.59079683e+00,
#> 1.60199621e+00, 1.61340021e+00, 1.62501798e+00, 1.63685932e+00,
#> 1.64893473e+00, 1.66125548e+00, 1.67383370e+00, 1.68668245e+00,
#> 1.69981586e+00, 1.71324918e+00, 1.72699897e+00, 1.74108324e+00,
#> 1.75552160e+00, 1.77033549e+00, 1.78554840e+00, 1.80118612e+00,
#> 1.81727714e+00, 1.83385292e+00, 1.85094845e+00, 1.86860270e+00,
#> 1.88685932e+00, 1.90576741e+00, 1.92538245e+00, 1.94576754e+00,
#> 1.96699480e+00, 1.98914727e+00, 2.01232119e+00, 2.03662904e+00,
#> 2.06220345e+00, 2.08920237e+00, 2.11781604e+00, 2.14827658e+00,
#> 2.18087139e+00, 2.21596250e+00, 2.25401521e+00, 2.29564214e+00,
#> 2.34167369e+00, 2.39327695e+00, 2.45216961e+00, 2.52103830e+00,
#> 2.60445496e+00, 2.71124085e+00, 2.86240960e+00, 3.13269090e+00]), array([-3.17851162e+00, -2.99218834e+00, -2.79226640e+00, -2.65381820e+00,
#> -2.65294594e+00, -2.57554774e+00, -2.57231273e+00, -2.46832594e+00,
#> -2.46049318e+00, -2.42071227e+00, -2.25451219e+00, -2.23904616e+00,
#> -2.22206122e+00, -2.21877629e+00, -2.21326867e+00, -2.20255282e+00,
#> -2.04618050e+00, -1.99656880e+00, -1.97631855e+00, -1.96847271e+00,
#> -1.95824228e+00, -1.94332871e+00, -1.94289580e+00, -1.91966990e+00,
#> -1.90944191e+00, -1.88320098e+00, -1.87499283e+00, -1.86682200e+00,
#> -1.84197143e+00, -1.83742743e+00, -1.83368187e+00, -1.83314124e+00,
#> -1.81795267e+00, -1.80240244e+00, -1.80168360e+00, -1.80138309e+00,
#> -1.77139948e+00, -1.76608633e+00, -1.75935038e+00, -1.75066322e+00,
#> -1.70752870e+00, -1.70474911e+00, -1.68849087e+00, -1.67878716e+00,
#> -1.67638321e+00, -1.64980700e+00, -1.62401311e+00, -1.59330513e+00,
#> -1.58875314e+00, -1.56748346e+00, -1.56737560e+00, -1.55660373e+00,
#> -1.54782282e+00, -1.54566546e+00, -1.52469905e+00, -1.49205336e+00,
#> -1.47797904e+00, -1.47268261e+00, -1.47169427e+00, -1.46863095e+00,
#> -1.46591761e+00, -1.45253201e+00, -1.44542474e+00, -1.43411003e+00,
#> -1.43399556e+00, -1.43049891e+00, -1.43008220e+00, -1.42842364e+00,
#> -1.42436730e+00, -1.42354885e+00, -1.41445248e+00, -1.39650595e+00,
#> -1.38821193e+00, -1.38300052e+00, -1.37909615e+00, -1.35252984e+00,
#> -1.34787000e+00, -1.34357348e+00, -1.34192752e+00, -1.31495344e+00,
#> -1.30208618e+00, -1.30010584e+00, -1.29531892e+00, -1.28496458e+00,
#> -1.28147604e+00, -1.26980152e+00, -1.25988500e+00, -1.25234859e+00,
#> -1.21482713e+00, -1.20019911e+00, -1.19062554e+00, -1.18848408e+00,
#> -1.17621014e+00, -1.17509521e+00, -1.17453410e+00, -1.16850616e+00,
#> -1.15667587e+00, -1.15196250e+00, -1.14893698e+00, -1.14726908e+00,
#> -1.12625257e+00, -1.12490869e+00, -1.12293580e+00, -1.12162039e+00,
#> -1.11926563e+00, -1.11561253e+00, -1.11147482e+00, -1.11120719e+00,
#> -1.10386388e+00, -1.09744521e+00, -1.09607339e+00, -1.08793661e+00,
#> -1.07980054e+00, -1.07909106e+00, -1.07816575e+00, -1.07447353e+00,
#> -1.07121551e+00, -1.05831459e+00, -1.05132997e+00, -1.04407213e+00,
#> -1.04386867e+00, -1.02903555e+00, -1.02142095e+00, -1.01814624e+00,
#> -1.00334334e+00, -1.00167422e+00, -9.96743225e-01, -9.92830869e-01,
#> -9.90718859e-01, -9.89851460e-01, -9.71530961e-01, -9.63328477e-01,
#> -9.61486545e-01, -9.57127138e-01, -9.34586110e-01, -9.25425643e-01,
#> -9.18889900e-01, -9.18328967e-01, -9.12850129e-01, -9.10878316e-01,
#> -9.10173109e-01, -9.07949033e-01, -9.03715436e-01, -8.93020192e-01,
#> -8.88592268e-01, -8.87577733e-01, -8.87337527e-01, -8.85605856e-01,
#> -8.79873754e-01, -8.77037507e-01, -8.74367043e-01, -8.74307146e-01,
#> -8.73443432e-01, -8.61700195e-01, -8.60552773e-01, -8.56340044e-01,
#> -8.54122483e-01, -8.51712988e-01, -8.51102528e-01, -8.48311931e-01,
#> -8.37106518e-01, -8.33903586e-01, -8.32712878e-01, -8.29633543e-01,
#> -8.26393358e-01, -8.20080268e-01, -8.07958349e-01, -8.05221057e-01,
#> -8.03023430e-01, -8.02841931e-01, -7.98975898e-01, -7.96904315e-01,
#> -7.83759547e-01, -7.83683567e-01, -7.75961043e-01, -7.71352714e-01,
#> -7.58846997e-01, -7.56347537e-01, -7.55218614e-01, -7.45511396e-01,
#> -7.43682372e-01, -7.39966678e-01, -7.37568827e-01, -7.36997009e-01,
#> -7.22244034e-01, -7.14158000e-01, -7.11942622e-01, -7.11210307e-01,
#> -7.10796958e-01, -7.07588870e-01, -7.01322857e-01, -6.95325674e-01,
#> -6.82671065e-01, -6.81048698e-01, -6.79398672e-01, -6.71575012e-01,
#> -6.66682929e-01, -6.64692599e-01, -6.51800522e-01, -6.51700825e-01,
#> -6.48736106e-01, -6.43328321e-01, -6.32895600e-01, -6.32611696e-01,
#> -6.30477900e-01, -6.30435865e-01, -6.29201458e-01, -6.27302828e-01,
#> -6.23165888e-01, -6.23059327e-01, -6.22758689e-01, -6.19309174e-01,
#> -6.18912081e-01, -6.14311618e-01, -6.07430404e-01, -5.98961749e-01,
#> -5.98470631e-01, -5.95624373e-01, -5.94976329e-01, -5.93274643e-01,
#> -5.82667317e-01, -5.78274034e-01, -5.75155889e-01, -5.73694984e-01,
#> -5.73467657e-01, -5.71033330e-01, -5.70247915e-01, -5.60325299e-01,
#> -5.59199732e-01, -5.56830073e-01, -5.54837809e-01, -5.52732660e-01,
#> -5.48895227e-01, -5.47701594e-01, -5.47130729e-01, -5.47066050e-01,
#> -5.45878524e-01, -5.44959232e-01, -5.36134286e-01, -5.36087016e-01,
#> -5.31979327e-01, -5.25808873e-01, -5.03524356e-01, -5.03264760e-01,
#> -4.97420939e-01, -4.96133368e-01, -4.96012414e-01, -4.85399045e-01,
#> -4.84047847e-01, -4.83729478e-01, -4.76621530e-01, -4.76255766e-01,
#> -4.73676638e-01, -4.69676136e-01, -4.66896626e-01, -4.56746884e-01,
#> -4.56269511e-01, -4.54231379e-01, -4.53009130e-01, -4.46367858e-01,
#> -4.45375068e-01, -4.40804733e-01, -4.37758836e-01, -4.33629920e-01,
#> -4.25960123e-01, -4.22844510e-01, -4.20890169e-01, -4.11234108e-01,
#> -4.06049259e-01, -4.01178395e-01, -3.94165907e-01, -3.87897298e-01,
#> -3.85758953e-01, -3.81326815e-01, -3.79595611e-01, -3.70580462e-01,
#> -3.69926028e-01, -3.63770781e-01, -3.63574496e-01, -3.63297577e-01,
#> -3.51647535e-01, -3.51094218e-01, -3.48253944e-01, -3.45022106e-01,
#> -3.42546534e-01, -3.42242831e-01, -3.36505427e-01, -3.33768581e-01,
#> -3.32472844e-01, -3.26254057e-01, -3.25237583e-01, -3.09610357e-01,
#> -3.09279272e-01, -2.90424290e-01, -2.88688275e-01, -2.88119868e-01,
#> -2.84952003e-01, -2.81470427e-01, -2.81020999e-01, -2.78631459e-01,
#> -2.78613303e-01, -2.76041378e-01, -2.76006605e-01, -2.73938822e-01,
#> -2.67719869e-01, -2.67198749e-01, -2.64159622e-01, -2.60674156e-01,
#> -2.54628959e-01, -2.48785913e-01, -2.38360014e-01, -2.37949993e-01,
#> -2.37425800e-01, -2.35086918e-01, -2.33406185e-01, -2.31275297e-01,
#> -2.31206710e-01, -2.30461114e-01, -2.29106491e-01, -2.26696661e-01,
#> -2.23367737e-01, -2.19462626e-01, -2.15417355e-01, -2.07722894e-01,
#> -2.07060981e-01, -1.98884589e-01, -1.96291398e-01, -1.95579735e-01,
#> -1.94996712e-01, -1.93648457e-01, -1.88461122e-01, -1.86238303e-01,
#> -1.84699610e-01, -1.80951701e-01, -1.79724468e-01, -1.78683745e-01,
#> -1.69986972e-01, -1.67848582e-01, -1.66486009e-01, -1.66460719e-01,
#> -1.64564488e-01, -1.62650315e-01, -1.61871374e-01, -1.61537325e-01,
#> -1.56536009e-01, -1.56440843e-01, -1.55565464e-01, -1.47919739e-01,
#> -1.43369362e-01, -1.43150645e-01, -1.37441833e-01, -1.36351261e-01,
#> -1.34276734e-01, -1.26475614e-01, -1.22077495e-01, -1.21212321e-01,
#> -1.12108211e-01, -1.09439515e-01, -1.06727260e-01, -9.63454196e-02,
#> -9.29348744e-02, -8.02646056e-02, -7.90590639e-02, -7.58516608e-02,
#> -7.57932979e-02, -7.52814882e-02, -7.50533275e-02, -7.47488378e-02,
#> -7.19321071e-02, -6.68448159e-02, -6.18980866e-02, -6.00804352e-02,
#> -5.96015164e-02, -5.85242887e-02, -5.17005763e-02, -4.08927272e-02,
#> -3.81439003e-02, -3.60414758e-02, -3.59866678e-02, -3.47736202e-02,
#> -3.25003110e-02, -3.12287759e-02, -2.85098747e-02, -2.73411444e-02,
#> -2.49726930e-02, -2.32431066e-02, -1.72240196e-02, -1.71946373e-02,
#> -1.34240155e-02, -1.10470702e-02, -1.14621748e-03, 5.70191517e-04,
#> 1.83115735e-03, 6.98836323e-03, 1.05698502e-02, 1.36406617e-02,
#> 1.48103134e-02, 1.71032971e-02, 1.99075496e-02, 2.04978765e-02,
#> 2.59659629e-02, 3.02696563e-02, 3.72767249e-02, 4.12730407e-02,
#> 4.56180817e-02, 5.13397733e-02, 5.39745694e-02, 5.69390226e-02,
#> 6.58784903e-02, 6.67846503e-02, 7.35836651e-02, 7.53055205e-02,
#> 7.81305933e-02, 7.97250031e-02, 8.01799957e-02, 8.13087944e-02,
#> 8.18827708e-02, 8.41448274e-02, 9.38811404e-02, 9.84676190e-02,
#> 1.03349152e-01, 1.07571469e-01, 1.13512000e-01, 1.16094339e-01,
#> 1.20209456e-01, 1.27199265e-01, 1.35279165e-01, 1.38334373e-01,
#> 1.47251027e-01, 1.47915049e-01, 1.48423889e-01, 1.53623835e-01,
#> 1.54738088e-01, 1.55349752e-01, 1.56034077e-01, 1.59786937e-01,
#> 1.60902637e-01, 1.64116114e-01, 1.69150843e-01, 1.70293955e-01,
#> 1.73370793e-01, 1.76592476e-01, 1.77963179e-01, 1.81349069e-01,
#> 1.83162664e-01, 1.83297213e-01, 1.85357206e-01, 1.87946730e-01,
#> 1.91695527e-01, 1.94103476e-01, 1.95452534e-01, 1.97586517e-01,
#> 1.98413761e-01, 2.01098220e-01, 2.01451543e-01, 2.05462389e-01,
#> 2.05769489e-01, 2.06989124e-01, 2.09111092e-01, 2.09352940e-01,
#> 2.11021460e-01, 2.12022253e-01, 2.13268733e-01, 2.14281358e-01,
#> 2.16143683e-01, 2.18952130e-01, 2.19008931e-01, 2.24206568e-01,
#> 2.24450889e-01, 2.26492467e-01, 2.26562568e-01, 2.29671152e-01,
#> 2.30201233e-01, 2.30684957e-01, 2.38266894e-01, 2.45343961e-01,
#> 2.47152304e-01, 2.48444987e-01, 2.57039713e-01, 2.57979155e-01,
#> 2.67879635e-01, 2.73764210e-01, 2.83651658e-01, 2.89727149e-01,
#> 2.90022441e-01, 2.90698810e-01, 2.94958900e-01, 2.96227108e-01,
#> 2.99040592e-01, 3.04061593e-01, 3.04306514e-01, 3.04753505e-01,
#> 3.10417988e-01, 3.11375182e-01, 3.15514579e-01, 3.24698576e-01,
#> 3.28412242e-01, 3.43209454e-01, 3.44407090e-01, 3.51957303e-01,
#> 3.52129571e-01, 3.54545262e-01, 3.60775816e-01, 3.61791997e-01,
#> 3.64079099e-01, 3.64421814e-01, 3.72840979e-01, 3.74553973e-01,
#> 3.78527092e-01, 3.80078886e-01, 3.81340931e-01, 3.85944601e-01,
#> 3.87465495e-01, 3.90514465e-01, 3.90650034e-01, 3.93205541e-01,
#> 3.99970015e-01, 4.00577384e-01, 4.21809832e-01, 4.27887544e-01,
#> 4.30096094e-01, 4.34150644e-01, 4.34466361e-01, 4.41519802e-01,
#> 4.49067510e-01, 4.55502833e-01, 4.55541963e-01, 4.56197790e-01,
#> 4.56769236e-01, 4.58965992e-01, 4.60082423e-01, 4.61712059e-01,
#> 4.63462904e-01, 4.63843357e-01, 4.68369751e-01, 4.70922682e-01,
#> 4.71851377e-01, 4.71944769e-01, 4.74680041e-01, 4.76378806e-01,
#> 4.77636514e-01, 4.81647077e-01, 4.85323577e-01, 4.85626249e-01,
#> 4.88762636e-01, 4.91160905e-01, 4.91899244e-01, 4.96636706e-01,
#> 4.97583039e-01, 5.04797608e-01, 5.06406010e-01, 5.11123840e-01,
#> 5.20219451e-01, 5.22837924e-01, 5.24416005e-01, 5.26256976e-01,
#> 5.28055905e-01, 5.29606173e-01, 5.31284030e-01, 5.33964339e-01,
#> 5.37900365e-01, 5.40601198e-01, 5.42314550e-01, 5.44197559e-01,
#> 5.48187779e-01, 5.49229393e-01, 5.51399843e-01, 5.51747311e-01,
#> 5.59090627e-01, 5.59204038e-01, 5.67583618e-01, 5.73744578e-01,
#> 5.77466773e-01, 5.79241185e-01, 5.80280931e-01, 5.81578290e-01,
#> 5.94174297e-01, 5.95136717e-01, 6.04514703e-01, 6.12380261e-01,
#> 6.12507385e-01, 6.13099637e-01, 6.14024543e-01, 6.14525684e-01,
#> 6.15461970e-01, 6.21897144e-01, 6.30810390e-01, 6.34676000e-01,
#> 6.38407327e-01, 6.41662353e-01, 6.42085919e-01, 6.42937147e-01,
#> 6.43193572e-01, 6.43560914e-01, 6.48558581e-01, 6.48919353e-01,
#> 6.49466929e-01, 6.52300578e-01, 6.61041159e-01, 6.64491266e-01,
#> 6.65784313e-01, 6.68704112e-01, 6.68818922e-01, 6.80886415e-01,
#> 6.81829982e-01, 6.83799312e-01, 6.85822170e-01, 6.95396205e-01,
#> 6.96605850e-01, 6.96684162e-01, 6.97391392e-01, 6.99722577e-01,
#> 7.00226247e-01, 7.02846527e-01, 7.04247564e-01, 7.09592492e-01,
#> 7.11685410e-01, 7.12996724e-01, 7.14239176e-01, 7.24221157e-01,
#> 7.24963635e-01, 7.26393888e-01, 7.27932948e-01, 7.33214551e-01,
#> 7.34168190e-01, 7.34957015e-01, 7.45779060e-01, 7.56316397e-01,
#> 7.59209110e-01, 7.63373016e-01, 7.64882382e-01, 7.72198653e-01,
#> 7.72933014e-01, 7.80157864e-01, 7.80516963e-01, 8.02775067e-01,
#> 8.11557268e-01, 8.12842410e-01, 8.17271170e-01, 8.28232301e-01,
#> 8.29856163e-01, 8.34359255e-01, 8.44611583e-01, 8.46031723e-01,
#> 8.49285294e-01, 8.50654865e-01, 8.57241236e-01, 8.61013487e-01,
#> 8.69945085e-01, 8.70812620e-01, 8.71708536e-01, 8.72967790e-01,
#> 8.76746079e-01, 8.83312564e-01, 8.83667238e-01, 8.85475802e-01,
#> 8.86684118e-01, 8.87975003e-01, 9.04599349e-01, 9.08077317e-01,
#> 9.09599973e-01, 9.22212072e-01, 9.25158495e-01, 9.27618198e-01,
#> 9.35118867e-01, 9.35332420e-01, 9.36800217e-01, 9.42298483e-01,
#> 9.48865194e-01, 9.59508456e-01, 9.60176711e-01, 9.63865882e-01,
#> 9.68779181e-01, 9.72902567e-01, 9.72919220e-01, 9.73224284e-01,
#> 9.88908033e-01, 9.94834073e-01, 1.00157047e+00, 1.00183139e+00,
#> 1.00280521e+00, 1.00385902e+00, 1.01499370e+00, 1.01776631e+00,
#> 1.02417115e+00, 1.02429924e+00, 1.02836845e+00, 1.03142274e+00,
#> 1.03745172e+00, 1.04342330e+00, 1.05365226e+00, 1.06839599e+00,
#> 1.08236713e+00, 1.09319424e+00, 1.09666886e+00, 1.09995221e+00,
#> 1.10423394e+00, 1.11136310e+00, 1.11885950e+00, 1.11920777e+00,
#> 1.11957774e+00, 1.12134013e+00, 1.12912695e+00, 1.14598098e+00,
#> 1.15759156e+00, 1.15950665e+00, 1.16033523e+00, 1.16704587e+00,
#> 1.18198511e+00, 1.19253632e+00, 1.19783918e+00, 1.20012980e+00,
#> 1.20505772e+00, 1.23426970e+00, 1.24791035e+00, 1.24949609e+00,
#> 1.25514569e+00, 1.28153979e+00, 1.28688167e+00, 1.28927651e+00,
#> 1.29574781e+00, 1.30224985e+00, 1.30725641e+00, 1.31025837e+00,
#> 1.31086163e+00, 1.31152306e+00, 1.32004869e+00, 1.33817657e+00,
#> 1.34194252e+00, 1.34434152e+00, 1.34502318e+00, 1.35481574e+00,
#> 1.35781114e+00, 1.35858952e+00, 1.36639941e+00, 1.37022167e+00,
#> 1.37639747e+00, 1.38255863e+00, 1.38775915e+00, 1.38818971e+00,
#> 1.40462777e+00, 1.41088160e+00, 1.41208276e+00, 1.41312247e+00,
#> 1.42027246e+00, 1.42709408e+00, 1.43717395e+00, 1.44136698e+00,
#> 1.44216944e+00, 1.44553462e+00, 1.45207431e+00, 1.47413478e+00,
#> 1.47622707e+00, 1.49417880e+00, 1.50036703e+00, 1.50139185e+00,
#> 1.52554320e+00, 1.56228630e+00, 1.56628558e+00, 1.56881746e+00,
#> 1.59049262e+00, 1.59857828e+00, 1.61790970e+00, 1.62773063e+00,
#> 1.62984557e+00, 1.64909076e+00, 1.65015190e+00, 1.67969351e+00,
#> 1.68198454e+00, 1.70382468e+00, 1.70863092e+00, 1.72641437e+00,
#> 1.81591351e+00, 1.87085734e+00, 1.88246207e+00, 1.91191072e+00,
#> 1.93195020e+00, 1.93498430e+00, 1.95531372e+00, 1.97389405e+00,
#> 1.99961350e+00, 1.99966936e+00, 2.00621895e+00, 2.00666530e+00,
#> 2.02625605e+00, 2.03696591e+00, 2.12476661e+00, 2.13056622e+00,
#> 2.16140246e+00, 2.21115016e+00, 2.28083313e+00, 2.32536987e+00,
#> 2.43080378e+00, 2.43221554e+00, 2.46311208e+00, 2.57333357e+00,
#> 2.59100059e+00, 2.70324424e+00, 2.79496311e+00, 2.88213860e+00])), (np.float64(1.002097042593063), np.float64(2.1316282072803006e-14), np.float64(0.9993369092621647)))
axes[0, 1].set_title('Normal Q-Q Plot')
axes[0, 1].grid(True, alpha=0.3)
# Scale-Location
sqrt_std_resid = np.sqrt(np.abs((residuals_multi - residuals_multi.mean()) / residuals_multi.std()))
axes[1, 0].scatter(fitted_multi, sqrt_std_resid, alpha=0.5, s=20)
axes[1, 0].set_xlabel('Fitted values')
axes[1, 0].set_ylabel('√|Std. residuals|')
axes[1, 0].set_title('Scale-Location')
axes[1, 0].grid(True, alpha=0.3)
# Histogram of residuals
axes[1, 1].hist(residuals_multi, bins=30, color='steelblue', edgecolor='black', alpha=0.7)
axes[1, 1].set_xlabel('Residuals')
axes[1, 1].set_ylabel('Frequency')
axes[1, 1].set_title('Distribution of Residuals')
axes[1, 1].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('lagos_diagnostics.png', dpi=300, bbox_inches='tight')
plt.show()