How to Perform Exponential Regression in Python (Step-by-Step)

Exponential regression is a process of modeling data points using an equation with an exponentially increasing variable. To perform exponential regression in Python, we can use the stats.linregress() function from the scipy library. This function takes the form of y = ae^bx, where a and b are the two parameters that we must determine. To do this, we need to create a linear regression model from the data points, where the dependent variable is the natural logarithm of the original variable. Once we have the model, we can solve for a and b, and then we can use those parameters in the original equation to plot the exponential regression curve.


Exponential regression is a type of regression that can be used to model the following situations:

1. Exponential growth: Growth begins slowly and then accelerates rapidly without bound.

2. Exponential decay: Decay begins rapidly and then slows down to get closer and closer to zero.

The equation of an exponential regression model takes the following form:

y = abx

where:

  • y: The response variable
  • x: The predictor variable
  • a, b: The regression coefficients that describe the relationship between x and y

The following step-by-step example shows how to perform exponential regression in Python.

Step 1: Create the Data

First, let’s create some fake data for two variables: x and y:

import numpy as np

x = np.arange(1, 21, 1)
y = np.array([1, 3, 5, 7, 9, 12, 15, 19, 23, 28,
              33, 38, 44, 50, 56, 64, 73, 84, 97, 113])

Step 2: Visualize the Data

Next, let’s create a quick scatterplot to visualize the relationship between x and y:

import matplotlib.pyplot as plt

plt.scatter(x, y)
plt.show()

Thus, it seems like a good idea to fit an exponential regression equation to describe the relationship between the variables as opposed to a linear regression model.

Step 3: Fit the Exponential Regression Model

Next, we’ll use the polyfit() function to fit an exponential regression model, using the natural log of y as the response variable and x as the predictor variable:

#fit the model
fit = np.polyfit(x, np.log(y), 1)

#view the output of the model
print(fit)

[0.2041002  0.98165772]

Based on the output, the fitted exponential regression equation can be written as:

ln(y) = 0.9817 + 0.2041(x)

Applying e to both sides, we can rewrite the equation as:

y = 2.6689 * 1.2264x

We can use this equation to predict the response variable, y, based on the value of the predictor variable, x. For example, if x = 12, then we would predict that y would be 30.897:

y = 2.6689 * 1.226412 = 30.897

Bonus: Feel free to use this online to automatically compute the exponential regression equation for a given predictor and response variable.

x