私は(各月の4年間の水需要は、人口や降雨量データ(1997年から2000年))、5列と48行を含むExcelファイルを持っているmatlabで繰り返し回帰を実行するには?
Year Month Water_Demand Population Rainfall
1997 1 355 4500 25
1997 2 375 5000 20
1997 3 320 5200 21
.............% rest of the month data of year 1997.
1997 12 380 6000 24
1998 1 390 6500 23
1998 2 370 6700 20
............. % rest of the month data of year 1998
1998 12 400 6900 19
1999 1
1999 2
.............% rest of the month data of year 1997 and 2000
2000 12 390 7000 20
私は中に複数の線形回帰をしたいですMATLAB。ここで、従属変数は水需要であり、独立変数は人口と降雨量である。私はこのコードを48行全てに書いています。
A1=data(:,3);
A2=data(:,4);
A3=data(:,5);
x=[ones(size(A1)),A2,A3];
y=A1;
b=regress(y,x);
yfit=b(1)+b(2).*A2+b(3).*A3;
私はこの繰り返しをしたいと思います。まず、行番号1を除外(つまり1997年の1年分のデータを除外)し、残りの47行のデータで回帰を行いたいとします。次に、行番号2を除外し、行番号1と行番号3〜48のデータで回帰を行いたいとします。次に、行番号3を除外し、行番号1-2と行4-48のデータで回帰を行います。私はそれぞれの実行で1つの行を除外するので、常に47行データポイントがあります。最後に、各回の回帰係数とyフィットを表にしたいと思います。
+1オカムの剃刀用です。パフォーマンスが問題である場合にのみ最適化を自分自身を殺す。 – Marc
ありがとうCastilho。しかし、コードを実行すると、48行目のみが除外され、係数の3 * 1行列の結果が得られますが、48回実行すると3 * 48の係数が得られます。ここでは、n = 1:48のunder_test = dataのコードがあります。 under_test(n、:) = []; B1 = under_test(:、3); B2 = under_test(:、4); B3 = under_test(:、5); x1 = [ones(size(B1))、B2、B3]; y1 = B1; C =回帰(y1、x1); end ' – shawpnik
forループは、その内部に記述されたコードを繰り返します。すべての値を保存する場合は、適切なサイズの行列を作成し、各繰り返しの結果を別の行に保存する必要があります。私は上のコードを編集して、それだけを行いました。 :) – Castilho