先前看到帖子 MATLAB怎么得到多元线性回归系数t检验的p值,借鉴了一下该贴中的代码,在他们的基础上求解了每个变量的p值。

% X
% Y 
[b, bint, r, rint, stats] = regress(Y, X);
Y_pre = X * b;
% stats(1)
% stats(3)

A = X' * X; %求算信息阵A,
C = inv(A); %求算信息阵的逆阵
SSy = var(Y) * (size(Y, 1) - 1);
% Y_pre1 = mymodel(b1, X1);
yhat = Y_pre;
RSS = (Y - yhat)' * (Y - yhat); % residual sum of squares
MSe = RSS / (size(Y, 1) - size(b, 1) - 1); %mean squares of residuals
rsquare = (SSy - RSS) / SSy; %determinant coefficeient
sp = sqrt(MSe * diag(C)); % standard error of para (b1)
t = b ./ sp; % t value
% t = [t(1, 1), t(2, 2)]
n = size(X, 1);
v = size(X, 2);
pval = 2 * (1 - tcdf(abs(t), n - v));

但是这里计算出来的p值好像有一些问题。但在Matlab中,提供了多元线性回归的函数,里面提供了每个变量的p值和整体的R2。使用LinearModel.fit进行回归分析,仅用一行代码就获取预测变量的系数和p值和R2

% XN3列的数组,即三个变量
LinearModel.fit(X, Y)

在这里插入图片描述

欢迎大家进行补充!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐