- 2025-06-12 08:30:34
上篇博文中计算扩散系数时涉及截距为零的线性拟合, 也就是拟合y=kx. 由于需要进行大量的这种拟合并得到相关系数R², 我使用gnuplot批量进行. 但gnuplot并不支持线性拟合, 所以只能自己计算, 好在也不麻烦, 方法我很早之前就整理过, 见gnuplot拟合参数的误差及相关系数.
使用上述方法进行了大量拟合后, 检查结果时我发现有些拟合的R²竟然是负值. 这不合理啊! 如果R²小于零, R岂不是虚数? 所以我就用origin对R²为负值的数据进行了截距为零的拟合, 所得拟合参数一样, 但R²却是很接近1的值. origin给出的R²值看起来也不合理, 原因何在?
查了一下origin的说明, 原来对于截距为零的线性模型, R²的计算方法与有截距模型的不同. 简言之, 有截距时, 拟合直线一定经过x, y的平均值点, R²相对于平均值点计算, 代表拟合后与平均值相比的好坏程度, 因而这里的R²成为拟合优度. 对于无截距模型时, 则拟合直线一定经过零点, R²要相对于零点进行计算, 这样得到的R²就会很接近1, 即便看起来拟合效果很差.
对于有截距模型, 根据SST, SSE计算的拟合优度R²确实是相关系数R的平方, 其范围为[0, 1]. 但对于无截距模型, 常规定义的R与根据SST, SSE计算的不一样, 后者的范围是(-∞, 1]. 值越小, 拟合效果越差. 因此, 一般建议使用这种定义方式计算拟合优度R². 当然, 也有人建议使用其他量, 如标准差来代替R².
最后, 关于这种基于方差分析的R², 有一种几何解释, 可以参考.