# Ordinal Regression

## What is Ordinal Regression?

Ordinal regression, also known as ordinal logistic regression or ordered logit, is a statistical method used to predict an ordinal variable, which is a type of categorical variable with a natural order. Ordinal regression models the relationship between a set of predictor variables and an ordinal response variable, allowing for the prediction of the probability of an observation falling into a specific category.

### Example of Ordinal Regression

Suppose we have a dataset containing information about customers' satisfaction levels with a product, measured on a scale of “Very Dissatisfied,” “Dissatisfied,” “Neutral,” “Satisfied,” and “Very Satisfied.” We want to predict their satisfaction levels based on their age, gender, and purchase frequency. Since the satisfaction levels have a natural order, we can use ordinal regression to model the relationship between the predictor variables and the ordinal response variable (satisfaction levels).

Here’s a Python code example using the `ordinal` package:

``````import pandas as pd
import numpy as np
from ordinal import OrderedLogit

# Create a sample dataset
data = {'Age': [25, 32, 45, 28, 37, 41, 29, 33, 54],
'Gender': ['M', 'F', 'M', 'F', 'M', 'F', 'F', 'M', 'F'],
'PurchaseFrequency': [5, 12, 8, 10, 7, 15, 9, 11, 6],
'Satisfaction': [3, 4, 2, 3, 4, 5, 3, 4, 1]}

df = pd.DataFrame(data)

# Convert categorical variable 'Gender' to numeric
df['Gender'] = df['Gender'].map({'M': 0, 'F': 1})

# Fit the ordinal regression model
model = OrderedLogit()
model.fit(df[['Age', 'Gender', 'PurchaseFrequency']], df['Satisfaction'])

# Make predictions
predictions = model.predict(df[['Age', 'Gender', 'PurchaseFrequency']])
print(predictions)
``````

In this example, we use the `ordinal` package to fit an ordinal regression model to the sample data and make predictions for the satisfaction levels based on the age, gender, and purchase frequency of the customers.