(MATLAB)単項線形回帰と多重線形回帰
1.単項線形回帰
コードを直接見て、目標はyyを構築することですyとxxxの関数関係、つまりy = kx + by = kx + bそして=k x+BにおけるKKkとbbb、kkkとbbbはすべて実数です。
% 用regress函数进行回归
x=[23.80,27.60,31.60,32.40,33.70,34.90,43.20,52.80,63.80,73.40];
y=[41.4,51.8,61.70,67.90,68.70,77.50,95.90,137.40,155.0,175.0];
figure
plot(x,y,'r*') %作散点图(制定横纵坐标)
xlabel('x')
ylabel('y')
Y=y';
X=[ones(size(x,2),1),x'];
[b,bint,r,rint,s]=regress(Y,X);
hold on
plot(x,b(1)+b(2)*x)
title("预测结果")
figure
rcoplot(r,rint) % 残差分析
出力結果bは係数行列です。この質問b = [-23.5493,2.791]、予測結果はy = -23.5493 + 2.7991xです。
予測結果と散布図は次のとおりです。
残差分析図は以下のようになり、異常箇所が1箇所のみでフィッティング効果が良いことが分かります。
2.多重線形回帰
2.1データの説明
データデータの一部を次の図に示します
。MATLABにインポートされたデータは、200行と4列の行列で、3つの変数x 1、x 2、x 3 x_1、x_2、x_3があります。バツ1、バツ2、バツ3、各変数には200データがあり、データの最後の列はyyを表しますy、多重線形回帰の目標はyyを確立することですyおよびx 1、x 2、x 3 x_1、x_2、x_3バツ1、バツ2、バツ3k 0、k 1、k 2、k 3 k_0、k_1、k_2、k_3の間の関係k0、k1、k2、k3、y = k 0 + k 1 x 1 + k 2 x 2 + k 3 x 3 y = k_0 + k_1x_1 + k_2x_2 + k_3x_3そして=k0+k1バツ1+k2バツ2+k3バツ3。
% 多元线性回归
a = load('data.txt');
x1=a(:,[1]) ;
x2=a(:,[2]) ;
x3=a(:,[3]) ;
y=a(:,[4]);
X=[ones(length(y),1), x1,x2,x3];
[b,bint,r,rint,stats]=regress(y,X);
b
rcoplot(r,rint)
2.2プログラム実行結果
bを解いた結果は次のようになるので、y = 2.9389 + 0.0458 x 1 + 0.1885 x 2 − 0.001 x 3 y = 2.9389 + 0.0458x_1 + 0.1885x_2-0.001x_3そして=2。9 3 8 9+0 。0 4 5 8 x1+0 。1 8 8 5 x2−0 。0 0 1 x3
残差分析は次のとおりです。