本文介绍了如何计算指数型和指数型趋势线的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平方。
使线性模型适合新数据集。请注意,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平方值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!