使用“addtrendline”函数的Excel中的R平方值?

我一直在挣扎, 简而言之,我无法findExcel用于R 2的等式。

  • 这里是我的数据:
    x:1 2 3 4 5 6 7 8 9 10
    y:4 9 1 2 1 1 8 5 5 1

  • 我绘制数据,拟合幂律函数('添加趋势线'),并使用“添加趋势线”选项>在图表上显示R平方值

显示的值:
R 2 = 0.03008

问题1

如果我使用'RSQ()'函数(取Excel中的拟合函数的参数值),或使用定义(维基百科)手工在Excel中计算出来…
R 2 = 0.0272

问题2

在Matlab中,使用'fit'函数,拟合函数的参数(当然是R 2 )不是EXCELfind的那些参数。

问题:

所以这是我的主要问题:
Excel如何在“添加趋势线”函数中计算R 2 ,因为它显然不是定义(维基百科)中的那个?

和奖金问题:
为什么Excel和Matlab不会以相同的拟合参数结束?

非常感谢!

%%%%%%编辑下面! %%%%
作为评论的答案; 这里是我使用的Matlab代码:

%% R-squared with the fit function % use the fit function in Matlab, yobs being the data [param, results] = fit(x,yobs,'power1'); % R-squared from the fit function : r_sq_from_fit = results.rsquare; %% here I calculate "by hand" the R-squared, from the general definition (wikipedia!) % calculates the fitting data yfit yfit = (p_powerlaw.a).*x.^p_powerlaw.b; % mean of the yobs, total sum of squares, and residual sum of squares yobs_mean = mean(yobs); SStot = sum((yobs-yobs_mean).^2); SSres = sum((yobs-yfit).^2); r_sq_hand = 1-SSres/SStot; 

我发现相同的值,我得到R的平方fit函数在Matlab中,或者我“手工计算”。 Matlab似乎是一致的,显然在其函数中使用R平方的严格定义…

但是 ; 当我比较:

  • RSQ()函数的Excel给出的R平方值
  • 和我通过手工计算R-square得到的值(当然,Excel返回给我的yfit值,而不是一个Matlab返回,因为Excel和Matlab不同意拟合参数!)

…我获得不同的价值观! Excel:0.027,正如我之前所说的,手算:-0.1109(!)

RSQ不返回电力趋势线的R平方值,而是返回线性趋势线的R平方。 Excel帮助读取“ 对于对数,功率和指数趋势线,Excel使用转换的回归模型 ”,但我无法find该模型。

另请参见如何衡量趋势线适合幂律的优劣

这个问题(Excel中的“添加趋势线”是如何起作用的?)也使我困惑了很长时间,因为在研究中我需要确定我的数字的起源。 因为我没有在互联网上发现太多的东西,所以我尝试了几次手工R ^ 2(决定系数)评估,以获得与Excel相同的结果。

我提出了同样的观察,就像提到的那样。 当使用“添加趋势线”进行线性(以及对数)函数拟合时,得到的R ^ 2和修正参数与手动计算的参数相同。 但是当对其他非线性函数拟合(例如指数)使用“添加趋势线”时,所得到的R ^ 2和regresion参数不同于手动计算的参数。

这个问题的解决方法已经在这里讨论了。 看来,为了将非线性趋势拟合成所提供的数据,Excel主要将问题线性化。 因此,例如,拟合指数函数y = a * exp(b * x),它主要将其转换为函数ln(y)= ln(a)+ b * x。 那么ln(y)和x之间的关系是线性的。 之后,使用平方和残差最小化的通常策略将线性化函数拟合到变换数据中。 因此获得了调节参数ln(a)和b。 R ^ 2也由线性化forms计算。 由于它是线性相关性,RSQ()函数可能被Excel用来计算R ^ 2。

当手动执行此步骤时,所得到的回归参数和R ^ 2值与Excel的“添加趋势线”提供的值相同。

所以一般情况下,在非线性回归的情况下,Excel的“增加趋势线”所提供的回归参数和R ^ 2值不是真正的非线性,而是很可能在问题线性化之后得到的。 因此,这些参数与直接计算的参数略有不同,没有任何转换。

关于R ^ 2的注意事项:就我现在所知,线性情况下的R ^ 2(用小写字母r ^ 2表示)被计算为相关系数的平方。 (RSQ()= CORREL()^ 2 = PEARSON()^ 2)。 由于这个关系,r ^ 2的值只能在0 – 1之间变化。一组input知识可以通过截距和/或斜率改变而不改变r ^ 2值。 另一方面,非线性情况下的R ^ 2(更好地表示为资本消费者)被定义为不同的方式(参见维基百科)。 它的值不是底限于值0,但最大值1仍然表示最适合。 通过截距和/或斜率改变一组input知识改变R ^ 2值。 在线性情况下,R ^ 2也能很好地工作。

这是因为你要求在图中拟合幂函数的R 2 (即y = a(x) b ),而Excel中的RQS函数为你提供了线性拟合的R 2 (即y = a x)+ b)。 我怀疑你在Matlab中有类似的问题。 你需要在Matlab中发布你的代码,否则我们都只是猜测。