帮助查找曲线的R^2值

5次浏览(最近30天)
BobbyJoe
BobbyJoe 2021年1月10日
评论: 明星黾 2021年1月11日
你好,
以下代码生成一个图表,将模拟实验结果与实际实验数据点进行比较:
函数API2
函数C =动力学(θ,t)
c0 = (0.752, 1.278, 0);
[T,Cv]=ode45(@DifEq,T,c0);
%
函数dC=DifEq(t,c)
dcdt=零(3,1);
dcdt(1)=-θ(1)。*c(1)。^2+θ(2)。*c(2)-θ(3)。*c(1)。*c(2);
dcdt(2) =θ(1)。* c(1)。^ 1-theta c(2)(2) . *。^ 1-theta c(1)(3) . *。^ 1。* c (2);
dcdt(3)=θ(3)。*c(1)。*c(2)。^3;
dC=dcdt;
终止
C=Cv;
终止
T = [0 1 2 5 10 15];
t = t ';
%a的y值
A_ydata = [0.752 0.0596 0.0596 0.0596 0.0502 0.0424];
A_Ydata=A_Ydata';
%b的y值
B_ydata = [1.278 0.378 0.101 0.101 0.085 0.072];
B_Ydata=B_Ydata';
C_ydata = [0 0.692 0.692 0.692 0.702 0.71];
C_Ydata=C_Ydata';
c=[A_Ydata B_Ydata c_Ydata];
θ=0.5;0.5;0.5];
[θ,Rsdnrm, Rsd, ExFlg OptmInfo, Lmda, Jmat] = lsqcurvefit (@kinetics theta0 t、c);
fprintf(1,“\t存储常数:\n”)
对于k1=1:长度(θ)
fprintf(1,'\t\t色塔(%d)=%8.5f\n', k1,θ(k1))
终止
tv=linspace(最小(t),最大(t));
Cfit = kinetics(theta, tv);
图(1)
H = t, c,'.');
设置(h{“标记”},{'s';“d”;“^”},{“MarkerFaceColor”},{“r”;“b”;“k”},{“MarkerEdgeColor”},{“r”;“b”;“k”});
持有
= plot(tv, Cfit,“线宽”, 1.5);
集(hlp, {“颜色”},{“r”;“b”;“k”});
持有
网格
包含('时间(分钟)')
ylabel (浓度(M)的)
传奇(hlp“利福霉素恶嗪”,“哌嗪”,“利福平”,“位置”,“不”)
终止
我想知道应该添加哪些代码,以便我可以看到每条曲线的R^2值,从而了解模拟曲线的精度。谢谢
2评论
BobbyJoe
BobbyJoe 2021年1月10日
整个代码是API2,它应该运行如果你复制和粘贴到matlab。没有其他的代码

登录以发表评论。

接受的答案

明星黾
明星黾 2021年1月10日
我感谢你引用我的代码!
这个 价值并不难计算。
一个使用更简单的单变量曲线拟合的例子(不是发布的问题):
Yfit = @(b,x) exp(b(1)) .* x.^b(2);%幂函数
SSECF=@(b)和((yfit(b,x)-y)。^2;%平方和误差代价函数
B=fminsearch(SSECF[1;1]);
ypred = yfit (B (x);
SSE=总和((y-ypred)。^2);
SST=总和((y-平均值(y))。^2);
Rsq=1-(SSE/SST);
这里的想法是计算 这个幂函数的拟合值是 “yfit” ( “x” “是的” 是数据向量)和数据,使用 fminsearch 函数进行非线性回归。在这里 “B” 系数向量是由 fminsearch .
然后,代码计算 “ypred” (对应于模型向量的预测值)和实际数据。这个 “SSE” 价值被解释为平方和 “SST” 总平方和是否如表中所述 维基百科 文章。。
所以在原始问题上, “ypred” 是模型,, “是的” 数据向量,以及 “Rsq” 期望的结果。
在公布的参数估计问题中,替换 “yfit” 意愿 “Cfit” , “是的” 具有 “c” 但是,请使用 每个 曲线,不是所有的同时,因为 可能未针对您在此处提出的问题进行定义。(我从未见过针对此类多重拟合问题进行定义,但可能有方法将其扩展到此类问题。)
4评论
明星黾
明星黾 2021年1月11日
一如既往,我的荣幸!
非常感谢。

登录以发表评论。

更多答案(0)

标签

s manbetx 845

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!