多元线性回归代码
function [coef, R_square, F, F_result] = MultipleLinearRegression(X, Y, alpha)
if nargin == 2
alpha = 0.05;
end
[n, p] = size(X);
y_bar = sum(Y) / n;
X = [ones(n, 1), X];
coef = inv(X' * X) * (X' * Y);
SST = sum((y_bar * ones(n, 1) - Y) .* (y_bar * ones(n, 1) - Y));
Y_hat = X * coef;
SSR = sum((Y_hat-y_bar) .* (Y_hat-y_bar));
R_square = SSR / SST;
SSE = sum((Y - Y_hat) .* (Y - Y_hat));
F = (SSR / p) / ((SSE) / (n - p - 1));
v = finv(1 - alpha, p, n - p - 1);
if F > v
F_result = "拒绝H0";
else
F_result = "接受H0";
end
E = Y - Y_hat;
figure
scatter(1:n, E');
hold on
plot(1:n, zeros(1, n), '--')
title("残差图")
end