How to Calculate Residual Sum of Squares in Python

Spread the love

The Residual Sum of Squares (RSS) is a fundamental metric in the field of regression analysis and predictive modeling. It quantifies the variance in the data that is not captured by the model. In essence, it’s a measure of the error between predicted and observed values. In this comprehensive article, we will delve into the concept of RSS, why it’s critical in regression analysis, and how to compute it in Python.

Understanding the Residual Sum of Squares

RSS is a statistical measure of the overall amount of error in the prediction of a regression model. In a simple linear regression model, the goal is to minimize this error. To calculate RSS, we first compute the residuals (the difference between the observed and predicted values), square each residual, and then sum them all together. Mathematically, it can be expressed as:

RSS = Σ (y_i - ŷ_i)^2


  • y_i is the observed value
  • ŷ_i is the predicted value

A lower RSS indicates a better fit of the model to the data because it means the differences between observed and predicted values are smaller.

Importance of Residual Sum of Squares

The primary role of RSS in regression analysis is to quantify the model’s goodness-of-fit. By assessing how well the model’s predicted values align with the actual observed values, we can determine if our model is performing well or if improvements are needed. A smaller RSS implies that the model is capturing a larger portion of the variance in the data, indicating a better fit.

In addition, RSS is the foundation of several other important metrics like Mean Squared Error (MSE) and Root Mean Squared Error (RMSE), which are often used for evaluating and comparing regression models.

Calculating Residual Sum of Squares in Python

In Python, we can calculate RSS using various libraries, including NumPy, Pandas, and StatsModels. This guide will illustrate the process using a simple linear regression model.

Step 1: Installing Required Libraries

To calculate RSS in Python, you need to have the necessary libraries installed. If not, you can install them using pip:

pip install numpy pandas statsmodels

Step 2: Importing Required Libraries

Once the necessary libraries are installed, import them into your Python script:

import numpy as np
import pandas as pd
import statsmodels.api as sm

Step 3: Loading the Data

For this example, let’s create a simple synthetic dataset with one predictor variable and one response variable:

# Predictor variable
X = np.random.rand(100, 1)

# Response variable
Y = 1 + 2*X + np.random.randn(100, 1)

In this case, Y is a linear function of X with some random Gaussian noise.

Step 4: Fitting a Regression Model

Next, we’ll use the Ordinary Least Squares (OLS) model from the statsmodels library to fit our data:

# Add a constant to the predictor variable
X = sm.add_constant(X)

# Fit the OLS model
model = sm.OLS(Y, X).fit()

Step 5: Calculating Residual Sum of Squares

Finally, we can calculate the RSS. First, we predict the response variable using our model. Then, we calculate the residuals and square them. The sum of these squared residuals is our RSS:

# Predict the response variable
Y_pred = model.predict(X)

# Calculate the residuals
residuals = Y - Y_pred

# Calculate the RSS
RSS = np.sum(np.square(residuals))

The variable RSS now contains the Residual Sum of Squares for our regression model.


The Residual Sum of Squares is a critical measure for assessing the performance of a regression model. It quantifies the amount of variance in the data that the model is unable to explain. The calculation of RSS is straightforward and can be performed efficiently in Python using libraries such as NumPy, Pandas, and StatsModels.

Whether you are performing simple linear regression or building complex predictive models, understanding and calculating RSS will help ensure your models are performing optimally and truly capturing the underlying patterns in your data.

Leave a Reply