0

Question related to Logistic Model

I try to use the Logistic Model to predict the world population, but the code doesn’t work. The graph appears to be a straight line instead of a curve. Can someone help me? [Edit] Clue: Maybe it’s related with “OptimizeWarning: Covariance of the parameters could not be estimated” You can download the CSV file from: https://population.un.org/wpp/Download/Files/1_Indicators%20(Standard)/CSV_FILES/WPP2022_TotalPopulationBySex.zip https://code.sololearn.com/cH6vlJITYYYH/?ref=app

12th Aug 2022, 10:34 AM
Albert Tan
2 Answers
0
import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.optimize import curve_fit # Read the CSV file and filter the data data = pd.read_csv("WPP2022_TotalPopulationBySex.csv") data = data.loc[(data["Location"] == "World") & (data["Variant"] == "Medium") & (data["Time"] <= 2022)] data = data[["Time", "PopTotal"]].set_index("Time") # Define the logistic function def logis(t, E, r, x0): return E / (1 + (E / x0) * np.exp(-r * (t - 1949)))
14th Jun 2023, 11:29 AM
Axel00x
Axel00x - avatar
0
# Get initial parameter estimates E_guess = data["PopTotal"].max() r_guess = 0.03 x0_guess = data.index[0] params_guess = (E_guess, r_guess, x0_guess) # Perform curve fitting params, pcov = curve_fit(logis, data.index, data["PopTotal"], p0=params_guess) # Extract the optimized parameters E_opt, r_opt, x0_opt = params # Generate predictions using the optimized parameters predictions = logis(data.index, E_opt, r_opt, x0_opt) # Plot the data and the fitted curve plt.plot(data.index, data["PopTotal"], label="Actual Data") plt.plot(data.index, predictions, label="Fitted Curve") plt.xlabel("Year") plt.ylabel("Population") plt.legend() plt.title("World Population Prediction") plt.show()
14th Jun 2023, 11:29 AM
Axel00x
Axel00x - avatar