|
发表于 2023-7-22 20:20:55
|
显示全部楼层
不推荐使用 eval 函数,这个函数可能会导致未预期的错误,使得程序难以调试。更好的做法是使用 MATLAB 内建的多维数组,你可以轻易地进行相应的操作。以下是你可以尝试的代码:
- % 假设 Y 是你的 1223x85 矩阵,X 是你的 1223x6 矩阵
- Y = rand(1223, 85); % 这只是为了示例,你需要替换为实际的 Y
- X = rand(1223, 6); % 这只是为了示例,你需要替换为实际的 X
- % 初始化
- betas = zeros(6, 85); % 存储每列的beta值
- tStats = zeros(6, 85); % 存储每列的 t-stats
- % 为每列 Y 进行回归
- for i = 1:size(Y, 2)
- y = Y(:, i);
- [b,~,~,~,stats] = regress(y, X);
- betas(:, i) = b;
- tStats(:, i) = stats.tstat;
- end
复制代码
解释一下以上的代码:
首先,我们假设 Y 是你的 1223x85 矩阵, X 是你的 1223x6 矩阵。然后我们初始化了两个矩阵, betas 用来存储每列的 beta 值, tStats 用来存储每列的 t-stats。
之后,我们使用一个 for 循环,对 Y 的每一列进行回归。在每次循环中,我们取出 Y 的一列作为 y ,然后使用 regress 函数对 y 和 X 进行回归。 regress 函数返回的结果中, b 是回归系数, stats.tstat 是 t 统计量。我们分别把这些结果存储在 betas 和 tStats 中。
循环结束后, betas 矩阵将存储 Y 的每一列对应的 beta 值, tStats 矩阵将存储每一列对应的 t-stats。
希望这个答案对你有所帮助! |
|