Table of Contents
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.