查看: 130|回复: 0|关注: 0

[未答复] 请问如何用代码实现计算加权非线性拟合的校正决定系数

[复制链接]

新手

5 麦片

财富积分


050


2

主题

2

帖子

0

最佳答案
发表于 2020-2-13 16:57:07 | 显示全部楼层 |阅读模式
本帖最后由 hfss145236987 于 2020-2-13 17:04 编辑
  1. function [beta,R_Square]=Weight_exponential(X,Y,Y_error)
  2. %公式:Y=A*(exp(-X/t)-1)+y0
  3. clc;

  4. W=1./(Y_error.^2);
  5. [p,r0]=Noweight_quadratic_fit(X,Y);
  6. n=length(X);
  7. A=(p(2)^2)/(2*p(1));
  8. t=-p(2)/(2*p(1));
  9. y0=p(3)-(p(2)^2)/(2*p(1))+A;
  10. beta0=[A,t,y0];
  11. [beta,r,J]=nlinfit(X,Y,@Exponential_fun,beta0,'weights',W);
  12. y_pre=beta(1)*(exp(-X/beta(2))-1)+beta(3);
  13. pearson_r2=1-sum((Y-y_pre).^2)./(sum((Y-mean(Y)).^2));
  14. adj_r2=1-(1-pearson_r2.^2).*(n-1)./(n-2);
  15. R_Square=adj_r2;
复制代码

我用以上代码可以计算出正确的参数值就是beta,但是运用上面两个式子计算决定系数(pearson_r2)和校正决定系数(adj_r2)得出的数值都是错误的
想知道正确的公式是什么,因为加权非线性拟合在Curve fitting tool和originpro 2017中确实可以计算出R^2和adj_R^2,且结果都是一样的


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表