import numpy as np
import matplotlib.pyplot as plt
def linear_regression(x, y):
n = len(x)
x_mean = np.mean(x)
y_mean = np.mean(y)
xy_mean = np.mean(x * y)
x_squared_mean = np.mean(x ** 2)
# Slope (m) and intercept (b) of the regression line
m = (xy_mean - x_mean * y_mean) / (x_squared_mean - x_mean ** 2)
b = y_mean - m * x_mean
return m, b
def interpolate(x, y, x_interpolate):
m, b = linear_regression(x, y)
y_interpolate = m * x_interpolate + b
return y_interpolate
def plot_regression_line(x, y, m, b):
plt.scatter(x, y, color="red", label="Data points")
plt.plot(x, m * x + b, color="blue", label="Regression line")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Linear Regression")
plt.legend()
plt.show()
Given data
x_given = np.array([1, 2, 3, 4, 5])
y_given = np.array([2, 3, 4, 5, 6])
Interpolation point
x_interpolate = 6
Calculate regression line equation
m, b = linear_regression(x_given, y_given)
print("Equation of the regression line: y =", m, "* x +", b)
Plot the given data set and regression line
plot_regression_line(x_given, y_given, m, b)
Interpolation
y_interpolate = interpolate(x_given, y_given, x_interpolate)
print("Interpolated value of f(x) at x =", x_interpolate, "is", y_interpolate)