1.一元/多元线性回归
1.1 regress
% 加载数据
load carsmall
% 多元线性回归
X = [ones(size(Weight)) Weight Horsepower Weight.*Horsepower];
Y = MPG;
[coef,~,r,rint,stats] = regress(Y,X,0.05);% coef:多元线性回归的系数估计值
% r:残差
% rint:置信区间
% status(1):R^2
% 置信水平:100*(1-alpha)%
% 建立方程
syms x1 x2 x3
YFIT = coef(1) + coef(2)*x1 + coef(3)*x2 + coef(4)*x3;
YFIT = vpa(YFIT,3);
% 绘图
rcoplot(r,rint)
1.2 fitlm
- 主拟合算法是 QR 分解
fitlm 将X和 Y 中的 NaN 、'' 、"" 、<missing> 和 <undefined> 值视为缺失值。fitlm 在拟合中不使用具有缺失值的观测值- 由
fitlm 创建的模型始终包含截距项,除非您使用 'Intercept' 指定不包含它
% 加载数据
load carsmall
X = [Weight,Horsepower,Acceleration];
Y = MPG;
% 多元线性回归
mdl = fitlm(X,Y);
coef = mdl.Coefficients.Estimate;
% 建立方程
syms x1 x2 x3
YFIT = coef(1) + coef(2)*x1 + coef(3)*x2 + coef(4)*x3;
YFIT = vpa(YFIT,3);
% R^2
R2 = mdl.Rsquared.Ordinary;
2.一元/多元非线性回归
2.1 polyfit
-
p
(
x
)
=
p
1
x
n
+
p
2
x
n
?
1
+
.
.
.
+
p
n
x
+
p
n
+
1
p(x)=p_1x^n+p_2x^{n-1}+...+p_nx+p_{n+1}
p(x)=p1?xn+p2?xn?1+...+pn?x+pn+1?
poyfit 在拟合中使用具有缺失值的观测值
% 加载数据
load carbig
X = Acceleration;
Y = MPG;
% 剔除NAN
D = [X,Y];
D = rmmissing(D,1);
X = D(:,1);
Y = D(:,2);
% 一元非线性回归
p=polyfit(X,Y,2);
% 建立方程
syms x
YFIT = p(1)*x^2 + p(2)*x + p(3);
YFIT = vpa(YFIT,3);
% R
R=corrcoef(X,Y);
% 绘图
x=linspace(min(X),max(X));
y=polyval(p,x);
plot(X,Y,'.',x,y,'-');
2.2 fitnlm
fitlm 将X和 Y 中的 NaN 视为缺失值。fitnlm 在拟合中不使用具有缺失值的观测值
% 加载数据
load carbig
X = [Horsepower,Weight];
Y = MPG;
% 多元非线性回归
modelfun = @(b,x)b(1) + b(2)*x(:,1).^b(3) + b(4)*x(:,2).^b(5);
beta0 = [-50 500 -1 500 -1];
mdl = fitnlm(X,Y,modelfun,beta0);
coef = mdl.Coefficients.Estimate;
% 建立方程
syms x1 x2 x3
YFIT = coef(1) + coef(2)*x1 + coef(3)*x2 + coef(4)*x3;
YFIT = vpa(YFIT,3);
% R^2
R2 = mdl.Rsquared.Ordinary;
|