该实施例显示了如何使用双隔室模型估算多个人的药代动力学参数。
假设您有三个要用于估计相应的药代动力学参数的药物血浆浓度数据,即中央和周边舱的体积(中央
那外围
),清除率(cl_central.
)和交流间隙(Q12
)。假设药物浓度与时间曲线遵循Biexponential下降
,在那里CT.药物浓度是在同一时间吗T.,一种和B.相应的指数下降是斜坡。
合成数据集包含在中央室和外周室测量的药物血浆浓度数据。数据是使用两室模型产生的输液剂量和一级消除。这些参数用于每个个体。
中央 |
外围 |
Q12 |
cl_central. |
|
---|---|---|---|---|
个人1 | 1.90 | 0.68 | 0.24 | 0.57 |
个人2. | 2.10 | 6.05 | 0.36 | 0.95 |
个人3. | 1.70 | 4.21 | 0.46 | 0.95 |
数据存储为带有变量的表ID
那时间
那CentralConc.
,PeripheralConc
。它代表在输注剂量后在中央和周边隔室的八个不同时间点测量的血浆浓度的时间过程。
加载(“data10_32R.mat”)
将数据设置为agroupedData
对象是拟合函数所需的数据格式SBIOfit.
以备后用。一种groupedData
对象还允许设置独立变量名和组变量名(如果存在的话)。设置的单位ID
那时间
那CentralConc.
,PeripheralConc
变量。这些单元是可选的,仅用于UnitConversion
功能,它自动将匹配的物理量转换为一个一致的单元系统。
gData = groupedData(数据);gData.Properties.VariableUnits = {”那'小时'那毫克/升的那毫克/升的};gData。属性
带有字段的ANS = struct:description:''''''''''''''variable'} variablenames:{'id'''''foripheralconc'} VariabledEscriptions:{}变量:{1x4 Cell}variablecontinuity:[] rowname:{} customproperties:[1x1 matlab.tabular.customproperties] groupvariablename:'id'独立variablename:'time'
创建一个网格图,显示三个人的PK配置文件。
sbiotrellis(gdata,“ID”那'时间', {“CentralConc”那“PeripheralConc”},......“标记”那“+”那“线型”那“没有”);
使用内置的PK库来构造一个具有输注计量剂的双隔室模型和一阶消除,其中消除速率取决于中央隔室的间隙和体积。使用Configset对象打开单元转换。
pkmd = PKModelDesign;pkc1 = addCompartment (pkmd,“中央”);pkc1。DosingType ='infusion';pkc1。EliminationType ='线性间隙';pkc1.hasresponseVariable = true;pkc2 = addcompartment(pkmd,“外围”);模型=构造(pkmd);configset = getconfigset(模型);configset.CompileOptions.UnitConversion = true;
假设每个单独的时间在时间= 0℃,总输注量为100mg,速率为50mg /小时。有关设置不同的给药策略的详细信息,请参阅偶发模型中的剂量。
剂量= sbiodose(“剂量”那“TargetName”那“Drug_Central”);dose.starttime = 0;dose.amount = 100;dose.rate = 50;dose.amountunits =.毫克的;剂量。时间Units ='小时';剂量。RateUnits =“毫克/小时”;
数据含有中央和外周隔室中的测量等离子体浓度。将这些变量映射到适当的型号物种,即药物_中央
和药物纯粹
。
Respectemap = {“Drug_Central = CentralConc”那“Drug_Peripheral = PeripheralConc”};
在该模型中估计的参数是中央和外围舱的容积(中央
和外围
), intercompartmental间隙Q12
,清除率cl_central.
。在这种情况下,请指定日志转换中央
和外围
因为它们被限制为正的。的estimatedInfo
对象允许您指定参数转换、初始值和参数边界(可选)。
paramsToEstimate = {“日志(中央)”那的日志(外围)那'Q12'那“Cl_Central”};估计日本=估计(paramstoestimate,“InitialValue”,[1 1 1]);
将模型与所有汇集在一起的数据进行拟合,也就是说,估计所有个体的一组参数。默认的估计方法SBIOfit.
使用将根据可用的工具箱而改变。看哪个估计函数SBIOfit.
用于配件,检查估计功能
属性的对应结果对象。
pooledFit = sbiofit(模型、gData responseMap estimatedParam,剂量,“池”,真的)
pooledFit = OptimResults属性:ExitFlag: 3输出:[1 x1 struct] GroupName:[]β:[4 x3表]ParameterEstimates: [4 x3表]:[24 x4x2双]COVB: [4 x4双]CovarianceMatrix: [4 x4双]R: [24 x2双]MSE: 6.6220上交所:291.3688重量:[]LogLikelihood: -111.3904 AIC: 230.7808 BIC: 238.2656教育部:44 DependentFiles:{1x3 cell} EstimatedParameterNames: {'Central' ' 'Peripheral' ' 'Q12' ' 'Cl_Central'} ErrorModelInfo: [1x3 table] EstimationFunction: 'lsqnonlin'
绘制拟合结果与原始数据。虽然产生了三个单独的图,但使用相同的参数(即,所有三个都有相同的拟合线),拟合数据。
绘图(PooledFit);
为每个个体估计一组参数,看看参数估计是否有任何改进。在这个例子中,因为有三个个体,所以估计了三组参数。
UnpooledFit = SBIOfit(模型,GDATA,respectemap,估计日常,剂量,“池”、假);
绘制拟合结果与原始数据。每个单独的都适用于不同的(即,每个配合的线对每个单独的线都是独一无二的),并且每条线似乎适合各个数据。
情节(unpooledFit);
展示第一个个体的拟合结果。MSE低于合并拟合的MSE。另外两个人也是如此。
undooledfit(1)
ANS =具有属性的优化验证:EXITFLAG:3输出:[1x1 struct] groupname:1 beta:[4x3表] ParameteryMitates:[4x3表] J:[4x4倍] CovarianCematrix:[4x4 Double] R:[8x2 DOUBLE] MSE:2.1380 SSE:25.6559重量:[] Loglikelihood:-26.4805 AIC:60.9610 BIC:64.0514 DFE:12 RependEntFiles:{1x3 Cell}估计节目:{'Central''外设''''Cl_Central'} ErrormodelInfo:[1x3表]估计功能:'lsqnonlin'
生成一段时间内的残差图,以比较合用和非合用的匹配结果。图中显示非合并拟合残差小于预期的合并拟合残差。除了比较残差外,还可以使用其他严格的标准来比较拟合结果。
t = [gdata.time; gdata.time];res_pooled = Vertcat(pooledfit.r);res_pooled = res_pooled(:);RES_UNPOOLED = VERTCAT(UNPOOLEDFIT.R);res_unpooled = res_unpooled(:);plot(t,res_pooled,'o'那“MarkerFaceColor”那' w '那'markeredgecolor'那'B')举行在情节(t, res_unpooled'o'那“MarkerFaceColor”那'B'那'markeredgecolor'那'B') refl = refine (0,0);表示零残差的参考线标题(“残差与时间”);Xlabel('时间');ylabel(“残差”);传奇({“池”那未共享的});
这个示例演示了如何使用以下方法执行池化和非池化估计SBIOfit.
。如图所示,未凝固的拟合因研究中的特定主题而占变化,在这种情况下,模型适合数据。但是,汇总的拟合返回人口范围广泛的参数。如果您想在考虑个人变体的同时估计人口范围的参数,请使用sbiofitmixed
。