查看: 2526|回复: 13|关注: 0

[已解决] 如何用nlinfit计算相关系数R^2

[复制链接]

新手

18 麦片

财富积分


050


22

主题

63

帖子

0

最佳答案
  • 关注者: 1
使用nlinfit函数拟合出了所需参数,请问怎么计算R^2 啊??
x=[2.8*10^-6 5.43*10^-6 8.33*10^-6 1.11*10^-5];
y=[0.655 0.753 0.847 0.884];
a=[0.94 1.25*10^7];
f=@(a,x)1-(1+0.054*a(1)-0.988*a(1)^2+0.441*a(1)^3)*(2-(1-a(1))^2)*(1-a(1))^2./(1-exp(-(1+0.054*a(1)-0.988*a(1)^2+0.441*a(1)^3)*(2-(1-a(1))^2)./(1-2.3*a(1)+1.154*a(1)^2+0.224*a(1)^3)/a(2)/0.67/10^-9*x)*(1-(1+0.054*a(1)-0.988*a(1)^2+0.441*a(1)^3)*(2-(1-a(1))^2)*(1-a(1))^2));
nlinfit(x,y,f,a)
plot(x,y,'*',x,1-(1+0.054*a(1)-0.988*a(1)^2+0.441*a(1)^3)*(2-(1-a(1))^2)*(1-a(1))^2./(1-exp(-(1+0.054*a(1)-0.988*a(1)^2+0.441*a(1)^3)*(2-(1-a(1))^2)./(1-2.3*a(1)+1.154*a(1)^2+0.224*a(1)^3)/a(2)/0.67/10^-9*x)*(1-(1+0.054*a(1)-0.988*a(1)^2+0.441*a(1)^3)*(2-(1-a(1))^2)*(1-a(1))^2)))


新手

33 麦片

财富积分


050


0

主题

9

帖子

0

最佳答案
发表于 2018-2-5 17:54:20 | 显示全部楼层
将程序中的nlinfit(x,y,f,a)改为[p,r,j]=nlinfit(x,y,f,a);然后添加
c=inv(j'*j);
SSy=var(y)*(n-1);
yhat=f(p,x);
RSS=(y-yhat)'*(y-yhat);
R=(SSy-RSS)/SSy;%相关系数

新手

33 麦片

财富积分


050


0

主题

9

帖子

0

最佳答案
发表于 2018-2-5 17:55:33 | 显示全部楼层
yhat=f(p,x);改为yhat=f(a,x);手滑打错了

论坛优秀回答者

权威

8047 麦片

财富积分



5

主题

9485

帖子

1829

最佳答案
  • 关注者: 418
发表于 2018-2-5 21:34:43 | 显示全部楼层 |此回复为最佳答案
  1. [p r J]=nlinfit(x,y,f,a)
  2. yhat=nlpredci(f,x,p,r,J)
  3. ss=sum((y-mean(y)).^2);
  4. R_sqr=(ss-sum(r.^2))/ss

复制代码

你直接:
  1. fitnlm(x,y,f,[0.94 1.25*10^7])
复制代码

啥参数都有了。

新手

18 麦片

财富积分


050


22

主题

63

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-2-6 08:53:05 | 显示全部楼层
wjdcumt 发表于 2018-2-5 17:55
yhat=f(p,x);改为yhat=f(a,x);手滑打错了

感谢感谢~

新手

18 麦片

财富积分


050


22

主题

63

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-2-6 08:54:15 | 显示全部楼层
jingzhaos 发表于 2018-2-5 21:34
你直接:
啥参数都有了。

啊啊啊,就是要这个啥都有的,万分感谢~

新手

18 麦片

财富积分


050


22

主题

63

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-2-6 09:07:30 | 显示全部楼层
还有一个疑问就是,我用这个程序运行,可以出结果,而且和我预估的也很接近,但是却出了警告:
The Jacobian at the solution is ill-conditioned, and some model parameters may not
be estimated well (they are not identifiable).  Use caution in making predictions.
请问这个是什么意思啊?

论坛优秀回答者

权威

8047 麦片

财富积分



5

主题

9485

帖子

1829

最佳答案
  • 关注者: 418
发表于 2018-2-6 09:20:52 | 显示全部楼层
本帖最后由 jingzhaos 于 2018-2-6 09:23 编辑
浅浅醉 发表于 2018-2-6 09:07
还有一个疑问就是,我用这个程序运行,可以出结果,而且和我预估的也很接近,但是却出了警告:
The Jacobia ...

就是说在计算时雅可比矩阵是病态的,模型参数可能不是太好,预测时要注意。
fitnlm使用的核心函数就是nlinfit,所以nlinfit也应该会有类似的提示。

新手

18 麦片

财富积分


050


22

主题

63

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-2-6 09:25:32 | 显示全部楼层
jingzhaos 发表于 2018-2-6 09:20
就是说在计算时雅可比矩阵是病态的,模型参数可能不是太好,预测时要注意。
fitnlm使用的核心函数就是nli ...

如果是这样的话,请问我可以忽略这个警告,直接使用模型拟合参数进行后续运算吗???因为按照您之前说的通过fitnlm()输出的结果来看,我整个模型的拟合度都还不错

论坛优秀回答者

权威

8047 麦片

财富积分



5

主题

9485

帖子

1829

最佳答案
  • 关注者: 418
发表于 2018-2-6 09:40:19 | 显示全部楼层
浅浅醉 发表于 2018-2-6 09:25
如果是这样的话,请问我可以忽略这个警告,直接使用模型拟合参数进行后续运算吗???因为按照您之前说的 ...

只是提示预测时要注意,应该还是可以用的。而且说的是may not,不是肯定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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