为了更直观地展示线性关系和非线性关系的差异,我们可以通过散点图来比较这两种情况。以下是改进后的 MATLAB 代码,包含散点图的绘制:
MATLAB 代码
% 生成数据 x = -10:0.1:10; % 自变量 x % 线性关系 y_linear = 2 * x; % 非线性关系 y_nonlinear = x.^2; % 计算皮尔逊相关系数 r_linear = corrcoef(x, y_linear); r_nonlinear = corrcoef(x, y_nonlinear); % 显示结果 fprintf('线性关系的皮尔逊相关系数: %.4f\n', r_linear(1, 2)); fprintf('非线性关系的皮尔逊相关系数: %.4f\n', r_nonlinear(1, 2)); % 绘制散点图 figure; % 线性关系 subplot(1, 2, 1); scatter(x, y_linear, 50, 'b', 'filled'); % 蓝色散点图 title(sprintf('线性关系 (r = %.4f)', r_linear(1, 2))); xlabel('x'); ylabel('y = 2x'); grid on; % 非线性关系 subplot(1, 2, 2); scatter(x, y_nonlinear, 50, 'r', 'filled'); % 红色散点图 title(sprintf('非线性关系 (r = %.4f)', r_nonlinear(1, 2))); xlabel('x'); ylabel('y = x^2'); grid on;
代码说明
- 生成数据:
- 对于线性关系,
。
- 对于非线性关系,
。
- 对于线性关系,
- 计算皮尔逊相关系数:
- 使用
corrcoef
函数计算和
之间的皮尔逊相关系数。
- 使用
- 绘制散点图:
- 使用
scatter
函数分别绘制线性关系和非线性关系的散点图。 - 线性关系使用蓝色散点,非线性关系使用红色散点。
- 在标题中显示皮尔逊相关系数。
- 使用
运行结果
1. 线性关系
- 皮尔逊相关系数:
。
- 散点图:所有点都落在一条直线上,表明
和
之间存在完美的线性正相关关系。
2. 非线性关系
- 皮尔逊相关系数:
。
- 散点图:所有点落在一条抛物线上,表明
和
之间存在明显的非线性关系,但皮尔逊相关系数接近 0。
散点图展示
- 线性关系:
- 散点图呈现一条直线,表明
和
之间存在线性关系。
- 皮尔逊相关系数为 1,完美反映了这种线性关系。
- 散点图呈现一条直线,表明
- 非线性关系:
- 散点图呈现一条抛物线,表明
和
之间存在非线性关系。
- 皮尔逊相关系数接近 0,未能反映这种非线性关系。
- 散点图呈现一条抛物线,表明
总结
通过散点图的比较,我们可以更直观地看到:
- 皮尔逊相关系数能够准确反映线性关系(散点图呈直线)。
- 皮尔逊相关系数无法反映非线性关系(散点图呈抛物线,但相关系数接近 0)。
因此,在实际数据分析中,除了计算皮尔逊相关系数外,还应结合散点图等可视化工具,全面分析变量之间的关系。