カテゴリ別に拡張されたパラメーターを使用した非線形回帰<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />やあ
A、B、C、D の 4 つの適合パラメータを使用して、非線形モデルを使用して適合させる必要があるデータ セットがあります。 データ セット (Y、列) は、列である「カテゴリ」を使用して分離する必要があります。 したがって、一意の「カテゴリ」ごとの Y は、一意のデータ セットです。
すべてのデータを適合させ、パラメータ A、B、C、D を見つける必要があります。ただし、A、B は「カテゴリ」全体で異なる場合がありますが、すべての「カテゴリ」全体のすべてのデータ セットに対して一意の C および D が必要であるという条件があります。
このために、モデルの列を作成し、パラメーター C、D を作成し、A と BI の場合は、[列を選択してカテゴリに展開] をオンにしてパラメーターを作成し、列に [カテゴリー] を選択して、非線形回帰適合を行います。 . すべてのカテゴリで最適な C と D を取得し、カテゴリ全体で異なる A と B を取得します。
私の質問は次のとおりです。すべてのカテゴリで UNIQUE C と D をどのように見つけますか? 各データセットに対応するデータセットに適合し、各セットのC1、D1、C2、D2などを見つけて、後で中央値/平均値などを取得しますか?
それとも、C と D の値の範囲を見つけて、C と D 内に細かい点を作成し、すべてのデータ セットに再度適合させて、エラーが制限内に収まるまでどんどん細かくしていきますか?
必要なことを確実に実行したいので、メソッドを知る必要があります。
ありがとう
ビノイ
Re: カテゴリ別に拡張されたパラメータを使用した非線形回帰遅れて申し訳ありません。 私たちは終わったと思いました!
私の以前の投稿は、共通の式を示していますBとベータおよび条件付きパラメータカテゴリーレベル。 他に何か要りますか? 最初の返信のスクリプトは、そのような数式の作成を自動化します。 モデルの観点から他に何が必要なのか理解できません。
あなたはどのように非線形プラットフォームはそのような問題を解決しますか (パラメーターを推定します)? それは数値最適化手順そして損失関数監視するために。 それは与えられた開始値次に、それらを変化させて、損失関数の結果を改善します (最小化)。 デフォルトの損失関数は二乗誤差の合計、 また最小二乗.変更のいくつかの測定値を監視して、いつ決定するかを決定します。収束達成されて止まります。
Re: カテゴリ別に拡張されたパラメータを使用した非線形回帰やあ、
私が尋ねたこの質問に関する最新情報はありますか?
ありがとう
ビノイ
Re: カテゴリ別に拡張されたパラメータを使用した非線形回帰やあ、
私は手動でそれを行うこの方法を知っています。 手動で行うのは非常に簡単であることを理解しています。 ただし、より大きなシステムの一部としてスクリプトを自動化する必要があるため、必要です。
お時間とご尽力いただきありがとうございます。
ビノイ
Re: カテゴリ別に拡張されたパラメータを使用した非線形回帰優秀な!!! 魅力のように働きました。 それは私の以前の投稿に対する答えです (元の投稿とは少し異なります)。
お時間とスクリプトをありがとうございました。
さて、おまけの質問です(実際には私の最初の質問です
この非線形回帰適合では、2 つのパラメータ B とベータがあり、これらはすべてのカテゴリで同じままですが、P と R0 はそれらの間で異なります。 ここで、B とベータがカテゴリ間でどのように変化するかを方程式で特定することはしません。では、JMP はどのようにしてすべてのカテゴリで機能する最適な B とベータを見つけ出すのでしょうか? 使用されるアルゴリズムは何ですか?
ありがとう
ビノイ
Re: カテゴリ別に拡張されたパラメータを使用した非線形回帰ジェフ・パーキンソンがあなたのやりたいことに似た例を指摘したので、以前の返信に追加したいと思います。 必要なモデル式を作成するためのスクリプトが本当に必要かどうかはわかりません。 選択するヘルプ>サンプル データ ライブラリ、非線形の例フォルダを開き、最後に藻類ミッシェルリッヒデータ表。 開く数式エディタとともにミッチャーリッヒ桁。 次のようになります。

この場合、あなたの場合と同様に、2つのパラメーターアルファとベータ条件付きです処理.
私が作成したあなたのデータのモックアップを開き、選択します列>新しい列... 私はそれを呼びますモデルを追加します方式列のプロパティ。 パラメータを使用してモデル式を作成する前に、パラメータを作成します。 クリックします表の列を選択し、パラメーター. クリックします新しいパラメータ。 .. 入力しますB名前の開始値を指定します2をクリックし、わかった. 私は作成しますベータ= 0同じやり方で。 のBとベータパラメータは無条件であり、その値はすべてのカテゴリに共通です。
他の 2 つのパラメーターは異なります。 クリックします新しいパラメータ、 入力R0名前のために、 2開始値を選択し、列を選択してカテゴリに展開. クリックしますわかったを選択します。カテゴリー桁。 今、私はユニークなパラメータを持っていますR0カテゴリごとに。 私は同じことをしますPパラメータ。
この数式を作成するために、パラメーターのリストとテーブル列のリストを切り替えて数式を作成します。

パラメータ リストでグループ化されたパラメータをクリックすると、エディタは自動的に Match(...) 式を挿入します。 したがって、各カテゴリに 1 つの B、1 つのベータ、および 1 つの R0 と P があります。
このアプローチを最初の例 Algae で使用すると、次の式が得られます。

このモデルは、元のパラメーター化とまったく同じ推定値を非線形で生成します。
あなたの質問を誤解している可能性があることをご理解ください。 スクリプトは強力ですが、常に必要というわけではありません。
Re: カテゴリ別に拡張されたパラメータを使用した非線形回帰この問題を解決するために、私は 3 つの原則を使用しました。 今は簡単に見えますが、うまくいく前にいくつかの厄介な失敗がありました。 モデル式をリバース エンジニアリングし、問題を小さな問題に分割して、ソリューションを徹底的に構築しました。 指定された名前の 3 つのデータ列が存在することを前提としています。 実行ごとに列名が変わる場合は、カスタム ダイアログを追加する必要がありますが、任意の数のカテゴリに対応します。 多数のカテゴリがある場合、非線形がモデルを解決できるかどうかはわかりません。また、開始値のリストを準備し、私の例を使用して一意のものを使用することもできます。
私はあなたのデータテーブルを持っていませんが、あなたが持っていると思うもの (Category、rRelax、tStress 列) のモックアップは機能しました。
/* これらの列が存在すると仮定するか、カスタム ダイアログを作成してスクリプト変数に割り当てます。
カテゴリー
リラックス
tストレス
*/
// すべてのカテゴリを検索
カテゴリー# = :カテゴリー<<値を取得する;
// 式を使って式を裏返しに構築する
一致式 p# =マッチ式 r0# =式(マッチ( :カテゴリー) ) ;
パラメータリスト# =リスト( B = 2 、ベータ= 0 ) ;
// すべてのカテゴリを繰り返します
為に( c = 1 、 c <= Nアイテム(カテゴリー# ) 、 c ++、
// カテゴリ固有の R0 パラメータを作成します
評価(
パース(
代わりの(
"Insert Into( パラメータ リスト#, Expr( Name( \!"R0_ccc\!" ) = 2 ) )" 、
「cc」 、
カテゴリー# [ c ]
)
)
) ;
に挿入(マッチ式 r0# 、カテゴリー# [ c ] ) ;
評価(
パース(
代わりの(
"Insert Into( match expr r0#, Expr( Name( \!"R0_ccc\!" ) ) )」 、
「cc」 、
カテゴリー# [ c ]
)
)
) ;
// カテゴリ固有の P パラメータを作成します
評価(
パース(
代わりの(
"Insert Into( パラメータ リスト#, Expr( Name( \!"P_ccc\!" ) = 2 ) )" 、
「cc」 、
カテゴリー# [ c ]
)
)
) ;
に挿入(一致式 p# 、カテゴリー# [ c ] ) ;
評価(
パース(
代わりの(
"Insert Into( match expr p#, Expr( Name( \!"P_ccc\!" ) ) )」 、
「cc」 、
カテゴリー# [ c ]
)
)
) ;
) ;
// 一般モデル式に代入
数式式# =代わりの(
式(パラメータ( ll 、うーん/ ( 1 + B * ( :リラックス/ : tストレス) ^ベータ+ ppp ) ) ) 、
式( ll ) 、
パラメータリスト# 、
式(うーん) 、
名前Expr (マッチ式 r0# ) 、
式( ppp ) 、
名前Expr (一致式 p# )
) ;
// モデル列の数式を設定
評価(
代わりの(
式(現在のデータ テーブル() <<新しい列( "モデル" 、方式(ふふふ) ) ) 、
式(ふふふ) 、
名前Expr (数式式# )
)
) ;
Re: カテゴリ別に拡張されたパラメータを使用した非線形回帰やあ、
返信いただきありがとうございます。 私はマニュアルに目を通しました。 私が探していたものをまだ手に入れることができませんでした。
私は現在、この非線形フィッティングをスクリプト化しようとしており、いくつかの問題に直面しています。 助けが要る。 ここで問題を繰り返します。
4 つの適合パラメータを持つモデルに適合させる必要があるデータがあります。 各カテゴリの適合は、互いに独立していません。 上記の投稿に示されているように、当てはめパラメータの 2 つである B とベータは一意である必要があります。つまり、回帰当てはめにより、すべてのカテゴリに対して一意の B とベータが抽出されます。 他の 2 つのパラメータ P と R0 は、カテゴリによって異なります。
JMP インターフェイスは次のようになります。

ここで、これを JSL でコーディングする必要があります。
以下を実行して、4 つの一意のパラメーターすべてを取得できることはわかっています。
dt << New Column("モデル", Numeric, Continuous, Formula( Parameter( {B = 5, beta = 0.25, P = 10, R0 = 10}, R0 / (1 + B * (:Name( "tRelax( s)" ) / :Name( "tStress(s)" )) ^ beta) + P )));
しかし、これは私が望むものではありません。 また、抽出が独立している場合にのみ役立つ「グループ化」機能は使用したくありません。
数式をコピーしている間に生成されたコードを以下に示します。
パラメータ(
{B = 2、ベータ = 0、
名前( "R0_Category_D03_01_-1.8_100") = 2,
名前( "R0_Category_D03_01_-1.8_1000") = 3,
名前( "R0_Category_D03_01_-1.8_10000") = 3,
名前( "R0_Category_D03_01_-1.8_158") = 3,
名前( "R0_Category_D03_01_-1.8_1580") = 3,
名前( "P_Category_D03_01_-1.8_100") = 0,
名前( "P_Category_D03_01_-1.8_1000") = 1,
名前( "P_Category_D03_01_-1.8_10000") = 1,
名前( "P_Category_D03_01_-1.8_158") = 0,
名前( "P_Category_D03_01_-1.8_251") = 0}、
Exp( -B * (:Name( "tR" ) / :Name( "tS" )) ^ ベータ ) *
Match( :カテゴリー,
"D03_01_-1.8_100", 名前( "R0_Category_D03_01_-1.8_100" ),
"D03_01_-1.8_1000", 名前( "R0_Category_D03_01_-1.8_1000" ),
"D03_01_-1.8_10000", 名前( "R0_Category_D03_01_-1.8_10000" ),
"D03_01_-1.8_158", 名前( "R0_Category_D03_01_-1.8_158" ),
"D10_05_-2.6_6310", 名前( "R0_Category_D10_05_-2.6_6310" )
) + Match( :カテゴリ、
"D03_01_-1.8_100", 名前( "P_Category_D03_01_-1.8_100" ),
"D03_01_-1.8_1000", 名前( "P_Category_D03_01_-1.8_1000" ),
"D03_01_-1.8_10000", 名前( "P_Category_D03_01_-1.8_10000" ),
"D03_01_-1.8_158", 名前( "P_Category_D03_01_-1.8_158" ),
"D10_05_-2.6_6310", 名前( "P_Category_D10_05_-2.6_6310" )
)
)
これを自動化する必要があるため、これをそのまま使用することはできません。
「カテゴリ」列から P_XXX と R0_XXX の配列を作成できます。
これらの P と R0 のそれぞれに関連付けられた配列を作成し、それらを数式で使用する方法を考えていましたが、うまくいきませんでした。
もちろん、この数式を作成した後、列とデータに対して非線形回帰を実行する必要があります。
誰かがこれをコーディングするのを手伝ってくれますか?
ありがとう
ビノイ
Re: カテゴリ別に拡張されたパラメータを使用した非線形回帰ビノイ、
モデルの適合度と適合度の背後にある統計を把握するには、[ブック] > [専門モデル] の [ヘルプ] セクションを参照してください。非線形フィットは 105 ページから始まります。フィットをグループ化するための Michael Anderson の提案は、個々のカテゴリがどのようにフィットするかを示し、組み合わせたフィットのグラフも表示されます。ヘルプの例を以下に示します。独自のパラメーター セットを使用することもできます。これについては、第 7 章で説明します。統計セクションは、第 7 章の 152 ページから始まります。

Re: カテゴリ別に拡張されたパラメーターを使用した非線形回帰やあ、
返信いただきありがとうございます。
より明確にするために。 私は自分がやりたいことをする方法を知っています。 どのように行われているのか知りたいです。
以下に示す例では、B と beta は質問で尋ねられた C と D に対応していますが、P は A や B のようなパラメーターであり、カテゴリによって異なる場合があります。
以下は、行われているフィッティングのスクリーンショットです。B とベータはすべてのカテゴリで一定のままであるパラメータとして使用され、P はカテゴリ間で変化する可能性のあるパラメータです。
問題は、どのようにしてすべてのカテゴリで最高の B とベータを獲得できるかということです。 最初にカテゴリごとに異なる B とベータを見つけ、統計を行って、すべてのカテゴリに十分な最高の B とベータを取得しますか? もしそうなら、使用された統計は何ですか。
ありがとう
ビノイ

Re: カテゴリ別に拡張されたパラメーターを使用した非線形回帰非線形プラットフォームでグループ化変数を使用したいようです。X 変数と Y 変数をプラットフォームの適切なフィールドに入力してから、「カテゴリ」列を「グループ」フィールドに入力します。その後モデルを適合させると、各グループの結果が計算されます。したがって、4 つのカテゴリがある場合、係数の 4 つのセットを持つ 4 つのモデルが得られます。
【欠落画像】