カスタム式による生物医薬品データの曲面近似
この例では、Curve Fitting Toolbox™ を使用して応答曲面を麻酔薬のデータに当てはめ、薬物相互作用の効果を分析する方法を示します。応答曲面モデルは、複合薬における薬力学的相互作用の振る舞いを理解するための優れた方法です。
このデータは、次の論文の結果に基づいています。Kern SE, Xie G, White JL, Egan TD. Opioid-hypnotic synergy: A response surface analysis of propofol-remifentanil pharmacodynamic interaction in volunteers.Anesthesiology 2004; 100: 1373-81.
通常、麻酔はオピオイドと鎮静催眠薬で構成される 2 つ以上の薬物の作用です。この例では、薬物クラス プロトタイプとしてプロポフォールとレミフェンタニルを使用します。これらの間の相互作用は、この複合薬に対する鎮痛反応と鎮静反応の 4 つの異なる基準により測定されます。痛覚測定、テタニ、鎮静作用および喉頭鏡検査が、プロポフォールとレミフェンタニルのさまざまな濃度の組み合わせにおける代用薬の効果の 4 つの基準を構成します。
次のコードは、Curve Fitting Toolbox のメソッドを使用して、曲線近似ツールで対話的に曲面作成を行います (生物医薬品データの曲面近似を参照)。
データの読み込み
ファイルからデータを読み込みます。
data = importdata( 'OpioidHypnoticSynergy.txt' );
Propofol = data.data(:,1);
Remifentanil = data.data(:,2);
Algometry = data.data(:,3);
Tetany = data.data(:,4);
Sedation = data.data(:,5);
Laryingoscopy = data.data(:,6);
モデル近似タイプの作成
関数 fittype
を使用して、論文のモデルを定義できます。ここで、CA
および CB
は薬物の濃度、IC50A
、IC50B
、alpha
および n
は推定する係数です。モデル近似タイプを作成します。
ft = fittype( 'Emax*( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n /(( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n + 1 )', ... 'independent', {'CA', 'CB'}, 'dependent', 'z', 'problem', 'Emax' )
ft = General model: ft(IC50A,IC50B,alpha,n,Emax,CA,CB) = Emax*( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n /(( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n + 1 )
効果の出力は正規化されるため、Emax = 1
と仮定します。
Emax = 1;
近似オプションの設定
ロバスト近似、範囲および開始点の近似オプションを設定します。
opts = fitoptions( ft );
opts.Lower = [0, 0, -5, -0];
opts.Robust = 'LAR';
opts.StartPoint = [0.0089, 0.706, 1.0, 0.746];
痛覚測定の曲面の近似とプロット
[f, gof] = fit( [Propofol, Remifentanil], Algometry, ft,... opts, 'problem', Emax )
Success, but fitting stopped because change in residuals less than tolerance (TolFun).
f = General model: f(CA,CB) = Emax*( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n /(( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n + 1 ) Coefficients (with 95% confidence bounds): IC50A = 4.149 (4.123, 4.174) IC50B = 9.044 (8.971, 9.118) alpha = 8.502 (8.316, 8.688) n = 8.289 (8.131, 8.446) Problem parameters: Emax = 1
gof = struct with fields:
sse: 0.0842
rsquare: 0.9991
dfe: 393
adjrsquare: 0.9991
rmse: 0.0146
plot( f, [Propofol, Remifentanil], Algometry );
テタニへの曲面近似
同じ fittype
を再利用して、テタニの応答曲面を作成します。
[f, gof] = fit( [Propofol, Remifentanil], Tetany, ft, opts, 'problem', Emax )
f = General model: f(CA,CB) = Emax*( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n /(( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n + 1 ) Coefficients (with 95% confidence bounds): IC50A = 4.544 (4.522, 4.567) IC50B = 21.22 (21.04, 21.4) alpha = 14.94 (14.67, 15.21) n = 6.132 (6.055, 6.209) Problem parameters: Emax = 1
gof = struct with fields:
sse: 0.0537
rsquare: 0.9993
dfe: 393
adjrsquare: 0.9993
rmse: 0.0117
plot( f, [Propofol, Remifentanil], Tetany );
鎮静作用への曲面近似
[f, gof] = fit( [Propofol, Remifentanil], Sedation, ft, opts, 'problem', Emax )
f = General model: f(CA,CB) = Emax*( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n /(( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n + 1 ) Coefficients (with 95% confidence bounds): IC50A = 1.843 (1.838, 1.847) IC50B = 13.7 (13.67, 13.74) alpha = 1.986 (1.957, 2.015) n = 44.27 (42.56, 45.98) Problem parameters: Emax = 1
gof = struct with fields:
sse: 0.0574
rsquare: 0.9994
dfe: 393
adjrsquare: 0.9994
rmse: 0.0121
plot( f, [Propofol, Remifentanil], Sedation );
喉頭鏡検査への曲面近似
[f, gof] = fit( [Propofol, Remifentanil], Laryingoscopy, ft, opts, 'problem', Emax )
f = General model: f(CA,CB) = Emax*( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n /(( CA/IC50A + CB/IC50B + alpha*( CA/IC50A ) * ( CB/IC50B ) )^n + 1 ) Coefficients (with 95% confidence bounds): IC50A = 5.192 (5.177, 5.207) IC50B = 37.77 (37.58, 37.97) alpha = 19.67 (19.48, 19.86) n = 37 (35.12, 38.87) Problem parameters: Emax = 1
gof = struct with fields:
sse: 0.1555
rsquare: 0.9982
dfe: 393
adjrsquare: 0.9982
rmse: 0.0199
plot( f, [Propofol, Remifentanil], Laryingoscopy );