适合PK参数使用SimBiology具体问题具体分析工作流
这个例子展示了如何PK SimBiology模型的参数估计使用一个具体问题具体分析的方法。
加载一个合成数据集。它包含药物血浆浓度数据以中央和周边隔间。
负载(“data10_32R.mat”)
将数据集转换成groupedData
对象。
gData = groupedData(数据);gData.Properties。VariableUnits = [”“,“小时”,“毫克/升”,“毫克/升”];
显示数据。
sbiotrellis (gData“ID”,“时间”,(“CentralConc”,“PeripheralConc”),…标志=“+”线型=“没有”);
使用内置的PK库来构建一个两舱制模型与注入剂量和一阶消除。使用configset对象单位转换。
pkmd = PKModelDesign;pkc1 = addCompartment (pkmd,“中央”);pkc1。DosingType =“注入”;pkc1。EliminationType =“linear-clearance”;pkc1。HasResponseVariable = true;pkc2 = addCompartment (pkmd,“边缘”);model2cpt =构造(pkmd);configset = getconfigset (model2cpt);configset.CompileOptions。UnitConversion = true;
假设每个人收到注入剂量= 0时,注入总额为100毫克的速度50毫克/小时。设置不同的给药策略的细节,请参阅剂量SimBiology模型。
剂量= sbiodose (“剂量”,“TargetName”,“Drug_Central”);剂量。开始时间= 0;剂量。数量= 100;剂量。率= 50;剂量。AmountUnits =“毫克”;剂量。TimeUnits =“小时”;剂量。RateUnits =“毫克/小时”;
创建一个问题对象。
问题= fitproblem
问题= fitproblem属性:要求:数据:[0 x0 groupedData]估计:[1 x0 estimatedInfo] FitFunction:“sbiofit”模型:[0 x0 SimBiology。模型]ResponseMap [1 x0字符串):可选:剂量:[0 x0 SimBiology。剂量]FunctionName:“汽车”选项:[]ProgressPlot: 0 UseParallel: 0变体:[0 x0 SimBiology。变体]sbiofit选项:ErrorModel:“常数”池:“汽车”SensitivityAnalysis:“汽车”的权重:[]
定义所需的属性的对象。
问题。数据= gData;问题。估计= estimatedInfo ([“日志(中央)”,“日志(外围)”,“12”,“Cl_Central”),InitialValue = [1 1 1 1]);问题。模型= model2cpt;问题。ResponseMap = [“Drug_Central = CentralConc”,“Drug_Peripheral = PeripheralConc”];
定义应用在合适的剂量。
问题。剂量=剂量;
显示估计的进展。
问题。ProgressPlot = true;
符合模型所有的数据集中在一起:也就是说,估计一组所有人通过设置参数池
财产真正的
。
问题。池= true;
执行评估使用适合
对象的功能。
pooledFit =适合(问题);
显示估计的参数值。
pooledFit.ParameterEstimates
ans =4×3表名字估计________ _________________ StandardError * * *{“中央”}2.6864 - 1.0644 1.6627 - 0.16569{‘外围’}{“12”}0.44945 0.19943 {‘Cl_Central} 0.78497 - 0.095621
画出拟合结果。
情节(pooledFit);
估计为每个单独的一组参数,看看参数估计得到改善。
问题。池= false; unpooledFit = fit(problem);
显示估计的参数值。
unpooledFit.ParameterEstimates
ans =4×3表名字估计________ _________________ StandardError * * *{“中央”}1.5619 - 0.36355 1.422 - 0.12334{‘外围’}{“12”}0.47163 0.15196 {‘Cl_Central} 0.5291 - 0.036978
ans =4×3表名字估计________ _________________ StandardError * * *{“中央”}5.3364 - 0.65327 1.8322 - 0.019672{‘外围’}{“12”}0.2764 0.030799 {‘Cl_Central} 0.86035 - 0.026257
ans =4×3表名字估计________ _________________ StandardError * * *{“中央”}5.5632 - 0.37063 1.6657 - 0.038529{‘外围’}{“12”}0.78361 0.058657 {‘Cl_Central} 1.0233 - 0.027311
情节(unpooledFit);
生成一个阴谋的残差随时间比较集中,未共享健康结果。图显示未共享符合残差小于汇集的健康,如预期。除了比较残差外,其他严格的标准可以用来比较拟合结果。
t = [gData.Time; gData.Time];res_pooled = vertcat (pooledFit.R);res_pooled = res_pooled (:);res_unpooled = vertcat (unpooledFit.R);res_unpooled = res_unpooled (:);图;情节(t, res_pooled“o”MarkerFaceColor =“w”markerEdgeColor =“b”)举行在情节(t, res_unpooled“o”MarkerFaceColor =“b”markerEdgeColor =“b”)反射= refline (0,0);%的参考线代表零残留标题(“残差与时间”);包含(“时间”);ylabel (“残差”);传奇([“池”,“未共享”]);
可以看出,未共享健康占变化由于特定学科研究,而且,在这种情况下,模型更适合数据。然而,汇集适合全民返回参数。作为一种替代方法,如果你想估计全民参数同时考虑个体差异,您可以执行非线性mixed-effects (NLME)估计通过设置problem.FitFunction
来sbiofitmixed
。
problem.FitFunction=“sbiofitmixed”;
NLMEResults =适合(问题);
显示估计的参数值。
NLMEResults.IndividualParameterEstimates
ans =12×3表________组名估计_____ * * * 1 1.4623{“中央”}{‘外围’}1.5306 0.4587 1 {“12”}1 {‘Cl_Central} 0.53208 - 2{“中央”}1.783 - 2{‘外围’}0.3589 6.6623 - 2 {“12”}2 0.8039 {‘Cl_Central} 3{“中央”}3{‘外围’}4.2844 1.7135 0.54895 {“12”}3 1.0708 {“Cl_Central”}
画出拟合结果。
情节(NLMEResults);
情节条件加权残差(轧)和个人加权残差(本)的模型预测值。
plotResiduals (NLMEResults“预测”)