1180_ja-JP
2 つのスプライン フィット間の面積の計算 (二変量)二変量プラットフォームのフィット スプラインを使用して蛍光スペクトル曲線をパラメーター化し、サンプルとブランクの予測式を保存しました。 ピークの下の面積、より正確には、指定された波長間隔内のサンプルの曲線とブランクの間の面積を推定したいと考えています。
確かに、多少の努力をすればこれを matlab で実行することもできますが、JMP 内のワークフロー全体をきちんと維持する必要があります。 私のアプローチは、スプライン予測式行列によってジオメトリが決定されるスライスを合計することを含むと思います。 しかし、予測式をどのように解釈して使用するかがわかりません。
JMP/JSL を使用してこの問題に取り組む方法について、正しい方向に導く可能性のあるアイデアはありますか? ありがとう!Re: 2 つのスプライン フィット間の面積の計算 (二変量)このスクリプトは機能しますが、あなたのスクリプトと同じであるはずなのに、なぜ私の場合は機能しなかったのか疑問に思いました。 比較してみたらタイプミスを発見しました。 混乱して申し訳ありません。 そして、ご協力いただきありがとうございます! 蛍光測定データをバッチ処理するためのスクリプトが現在動作しています。
唯一残っている面倒な点は、収束に失敗した場合、つまり極大値を見つけた場合にスクリプトを中断する Maximize() コマンドです。 JSLでエラー出力を操作する方法がわかりませんでした(「if result==error、then変更許容値と繰り返し、else Max=result」など)。
再度、感謝します!Re: 2 つのスプライン フィット間の面積の計算 (二変量)WinXP 上の JMP 8.0.2 では、プロンプトが表示されたときにサンプルの JMP で生成されたスプライン係数テーブルを使用すると、次のスクリプトはエラーなしで機能しました。
Re: 2 つのスプライン フィット間の面積の計算 (二変量)「列式変数」などを使用してこのフォーラムを検索し、事前に不明な列を参照するスクリプトを使用して列式を正常に作成する方法の例を見つけます。 それは役立つと思います。Re: 2 つのスプライン フィット間の面積の計算 (二変量)ありがとう! それは完全に動作し、現在JSLでそれを実行しようとしています。 興味がある人がいたら、完成したらここにスクリプトを投稿できます。
ところで、累積列に問題があります。 数式を追加して手動で行う場合
If(Row() == 1, :Slice Area, :Cumulative Area[Row() - 1] + :Slice Area[Row()]) を列「Cumulative Area」にすると機能します。 ただし、コマンド << set Formula() を使用してスクリプトで実行すると、「行....で不正な参照 (再帰)」というエラーが発生します。 列は作成されますが、数式は作成されません。Re: 2 つのスプライン フィット間の面積の計算 (二変量)8.0.1 統計およびグラフ ガイドより:
「3 次スプライン法では、結果として得られる曲線が継ぎ目 (結び目点) で連続的で滑らかになるように、継ぎ合わせられた一連の 3 次多項式が使用されます。 推定は、平方和誤差と曲線範囲にわたって積分された曲率に対するペナルティの組み合わせである目的関数を最小化することによって行われます。 この方法の説明については、Reinsch (1967) の論文または Eubank (1988) のテキストを参照してください。
Fit Y by X でスプラインをフィットさせると、係数を保存する項目を含む赤い三角形のプルダウン メニューが表示されます。 このアクションにより、列 X、A、B、C、D を持つ新しいテーブルが作成されます。列 X には、データの一意の X 値が昇順で並べ替えられます。 他の 4 列は、同じ行の X の値から始まり、次の行の X の値までの区間で使用される 3 次多項式の係数です。 同じ行の X の値が X1 の場合、間隔の多項式は次のようになります。
A + B*(X-X1) + C*(X-X1)^2 + D*(X-X1)^3
これは、次の「ノット」である X2 までの X に使用されます。 x1 と x2 の間のこの曲線の下の正確な面積を見つけるには、この多項式を X1 から X2 まで積分するだけで次のようになります。
A*(X2-X1) + (B*(X2-X1)^2)/2 + (C*(X2-X1)^3)/3 + (D*(X2-X1)^4)/4
Area Slice という新しい列を作成し、この数式を入力する必要があります。 JMP 式では、X1 に X を使用し、X2 に Lag(X,-1) を使用します。 次に、エリア スライスの列が表示されます。 次に、すべての領域スライスを追加して、開始から終了までの曲線の下の合計領域を取得できます。 必要に応じて、累積面積の列を作成することもできます。
これにより、スプラインの下の領域の近似値ではなく正確な値が得られます。
おそらくこれはスクリプト化できると思いますが、私は試していません。
このような 2 つの曲線の間の面積を取得するには、この方法で両方の曲線の面積を見つけ、一方から他方を差し引くだけです。
マイケル
Comments
There are no comments yet