本文介绍了如何计算指数型和指数型趋势线的R平方值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

已尝试使用以下公式计算指数和幂趋势线类型的R平方值。

   R² = ∑(ȳ - ŷ)² / ∑(y - ȳ)²
这里ȳ是y的平均值,ŷ是回归方程,这里ŷ是指数为y = ae^xb,幂为y = ax^b这里a=截距,b=斜率。

我实现了以下代码片段逻辑来实现R平方值

  List<int> xValue = <int>[1,2,3,4,5];
List<int> yValue = <int>[2,4,5,4,5];
int sumOfX = 0,sumOfY = 0,sumOfXY = 0, sumOfXSquare = 0, sumOfYSquare = 0;
double slope = 0.5204, intercept = 2.3133;
for(int i = 0; i < xValue.length; i++){
    sumOfX += xValue[i];
    sumOfY += yValue[i];
    sumOfXY += xValue[i] * yValue[i];
    sumOfXSquare += math.pow(xValue[i], 2).toInt();
    sumOfYSquare += math.pow(yValue[i], 2).toInt();
 }
double yMean = sumOfY/yValue.length;
// value of ∑(y - ȳ)²
double ssTol = 0;
for(int j = 0; j < yValue.length; j++){
  ssTol += math.pow((yValue[j] - yMean),2);
 }
// value of ∑(ȳ - ŷ)²
double ssReg = 0;
for(int k = 0; k < yValue.length; k++){
  ssReg += math.pow(((intercept * math.pow(xValue[k], slope)) -yMean), 2).toDouble();
 }
print(ssReg/ssTol);

我希望R平方值如下所示。

有人能帮我这个忙吗?

推荐答案

RSQ的正确公式是此外,在最新版本的EXCEL中,数据集的R平方是.7704而不是.6782。

此外,R平方仅对线性回归模型有效。请参见Cross Validated Explanation

但是,功率方程可以转换为线性方程。幂回归模型的形式为.

y=ax

记录双方日志

ln(Y)=ln(A)+b*ln(X)

这个模型现在可以用线性回归拟合。您可能认为ln(X)部分会使线性回归变得不合适,然而,线性回归意味着它在参数上是线性的。See this link for more information

使用此表单,现在可以用线性回归拟合回归线,并将方程用于R平方。

首先取x和y的对数。

使线性模型适合新数据集。请注意,RSQ为.7704,如上所述。

回想一下,我们的幂模型的形式为y=ax

B=.5204(线性模型中X的系数)

原因:我们取x的日志,结果为B*ln(X)。

a=e=2.3133

原因:我们取了a的日志,结果是ln(A)。ln(A)=.8387。若要获得&q;a,我们计算e=a。

最后,按照上面的公式计算RSQ。下面是一些中间结果,可以对照您的代码进行检查。

这篇关于如何计算指数型和指数型趋势线的R平方值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-20 17:51