在MATLAB中,可以使用多种方法来计算决定系数(R-square)。以下是几种常见的方法:
方法一:使用`fitlm`函数
`fitlm`函数可以用于拟合线性模型,并通过其`rsquared`属性获取决定系数。
```matlab
% 创建数据
X = [1 3 6 7 8 16];
b = [2 4 7 9 15 19];
a = [1 3 6 7 8 16];
% 拟合线性模型
mdl = fitlm([X, b], a);
% 获取决定系数
R2 = mdl.rsquared;
disp(['决定系数 (R-square): ', num2str(R2)]);
```
方法二:使用`corrcoef`函数
如果你有两个向量`X`和`Y`,可以使用`corrcoef`函数计算它们的相关系数矩阵,然后取对角线元素的第一个值作为决定系数。
```matlab
% 创建数据
X = [1 3 6 7 8 16];
Y = [2 4 7 9 15 19];
% 计算相关系数矩阵
R = corrcoef(X, Y);
% 获取决定系数
R2 = R(1,1);
disp(['决定系数 (R-square): ', num2str(R2)]);
```
方法三:手动计算
如果你希望手动计算决定系数,可以使用以下公式:
\[ R^2 = 1 - \frac{RSS}{TSS} \]
其中,RSS是残差平方和,TSS是总平方和。
```matlab
% 创建数据
X = [1 3 6 7 8 16];
Y = [2 4 7 9 15 19];
% 计算预测值
Y_pre = polyval(polyfit(X, Y, 1), X);
% 计算残差平方和和总平方和
RSS = sum((Y_pre - Y).^2);
TSS = sum((Y - mean(Y)).^2);
% 计算决定系数
R2 = 1 - (RSS / TSS);
disp(['决定系数 (R-square): ', num2str(R2)]);
```
方法四:使用自定义函数
你还可以编写自定义函数来计算决定系数。以下是一个示例:
```matlab
function [r2 rmse] = rsquare(y, f)
% 计算残差平方和
SSerr = sum((y - f).^2);
% 计算总平方和
SStot = sum((y - mean(y)).^2);
% 计算决定系数
r2 = 1 - (SSerr / SStot);
% 计算均方根误差
rmse = sqrt(SSerr / length(y));
end
% 示例数据
y = [2 4 7 9 15 19];
f = [1 3 6 7 8 16];
% 计算决定系数
[r2 rmse] = rsquare(y, f);
disp(['决定系数 (R-square): ', num2str(r2)]);
```
通过以上方法,你可以在MATLAB中计算决定系数。选择哪种方法取决于你的具体需求和数据结构。