gpt4 book ai didi

matlab - 如何在matlab中进行重复回归?

转载 作者:行者123 更新时间:2023-12-02 08:06:20 25 4
gpt4 key购买 nike

我有一个 Excel 文件,包含 5 列和 48 行(四年(1997-2000)每个月的需水量、人口和降雨量数据)

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 行的数据进行回归。由于我在每次运行中排除一行,因此始终有 47 行数据点。最后,我想得到每次运行的回归系数和 yfit 的表格。

最佳答案

我能想到的一个简单方法是创建一个 for 循环和一个临时的“测试中”矩阵,该矩阵正是您没有要排除的行的矩阵,如下所示

C = zeros(3,number_of_lines);
for n = 1:number_of_lines
under_test = data;
% this excludes the nth line of the matrix
under_test(n,:) = [];
B1=under_test(:,3);
B2=under_test(:,4);
B3=under_test(:,5);
x1=[ones(size(B1)),B2,B3];
y1=B1;
C(:,n)=regress(y1,x1);
end

我确信您可以通过使用一些对向量进行操作的 matlab 函数来优化它,而无需使用 for 循环。但我认为只有 48 行就足够快了。

关于matlab - 如何在matlab中进行重复回归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9665782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com