式で線形回帰勾配を計算するこんにちは、
データ テーブル数式内の列データの線形回帰勾配を計算する方法があるかどうか疑問に思っていました。
テーブルの簡単な例を以下に示します。 データは順序付けられており、現在の行のデータと前のポイントを使用して、時間の経過に伴うボリュームの適合線の傾きを計算して回帰を実行したいと考えています。
アイデアは、計算された勾配がデータポイントの数を増やすとどのように変化するかを見たいということです。 これを手動で行うと、傾きの値は最終的に特定の値に近づき、20 程度のポイントの後、+/-5% 以内に留まります。
| 実例 | 時間 (秒) | ボリューム (mL) | スロープ (mL/s) |
| 1 | 0 | 0 | なし |
| 2 | 5 | 0.5 | m1 |
| 3 | 10 | 0.8 | m2 |
| ... | ... | ... | ... |
| N | T | Ⅴ | mN-1 |
それが可能であれば、次の課題は、現在の行の両側にある N 個のデータ ポイントを代わりに対称的な移動計算に使用するように勾配の式を計算できるように、これを設定することです。
前もって感謝します。
Re: 数式で線形回帰勾配を計算するこれは興味深い..これにp値を適用したい場合...帰無仮説(勾配= 0)に基づいて...これをフォーラムに統合する方法はありますか?
言い換えれば、勾配の周りの信頼区間に基づいて、移動勾配がいつ大きく変化するかを確認したいと思います
Re: 数式で線形回帰勾配を計算するあなたが言った、 "多くの場合、X 間の相関関係がいつ変化したかはわかりません。そのため、これは手元にある分析のために時間の影響を調べようとする試みの 1 つです。 " JMP Pro で Functional Data Explorer を試しましたか? 機能主成分を介して形状の変化を検出するのに役立つ場合があります。
Re: 数式で線形回帰勾配を計算するこんにちはJMPチーム...
Nelson のアプローチは、私が探していたものである可能性が非常に高いです。 私はマン・ケンダル・タウ・テストと同様の必要性について彼と話し合っています.
私の入力は単一の行ではありません。
私のデータには通常、それぞれが異なる時間ステップで測定されたいくつかのパラメーターが含まれています。 きちんとしたデータ形式;パラメータは列にあり、各行は異なる時間状態です。つまり、年表は行にあります。
私は多くの統計関数を調べていますが、これらのいずれかまたは他の X との時間の傾向を測定していますが、ローリングウィンドウの機能として。したがって、たとえば X 対 Y の履歴全体を回帰するのではなく、一定の過去 N 時間ステップ内で 2 つの回帰を調べるロジックが好きです。 次に、各行が再評価され、新しい結果が得られます。 これらは、線形回帰からの勾配、またはノンパラメトリック MK テストからのタウ テスト、またはその他の統計出力である可能性があります。
多くの場合、X 間の相関関係がいつ変化したかはわかりません。そのため、これは手元にある分析のために時間の影響を調べようとする試みの 1 つです。 上記の N をさまざまな値に変更して、短期と中期/長期の傾向を調べることができます。
スクリプトは問題ありません。計算がスクリプトのみで提供される方法に大きな利益をもたらす場合を除き、スクリプトは私の好みではありません。
私の好みは、一般的に、計算を数式に入れ、それらをデータ フレーム内に維持することです。
今日まで、私しなかったスクリプト構造を式内に展開できることを知っています。
それがおそらく私の混乱の主な原因でした。
皆様のご協力に感謝いたします。
Re: 数式で線形回帰勾配を計算する知っている。
要点は、数式で使用する可能性のある関数について学習するための最良の方法は、スクリプト インデックスを使用することです。
Re: 数式で線形回帰勾配を計算するあなたが探しているものについて、もう少し背景を教えていただけますか?
一般的に言えば、数式はデータ テーブルの行全体で機能し、その行の列の値を入力として行ごとに 1 つ評価します。
したがって、数式エディターで回帰関数を要求すると、データ テーブルの各行に入力値のマトリックスがあることが期待されます。 おそらくそれはあなたが持っているものですが、それは珍しい構造です.
そのため、もう少し情報があれば、これに数式を使用する方法を理解するのに役立つか、数式エディター以外の方向性を示すことができるかもしれません.
Re: 数式で線形回帰勾配を計算するJMP の式は、ほとんどどんなものでも構いません。Scripting Index の Linear Regression() 関数を紹介すると、たまたまスクリプトの形式でその例が示されていますが、この関数は数式でも使用できます。以下は、Big Class データ テーブルのすべての行について、最初の行 1 ~ 3、次に 1 ~ 4、1 ~ 5 などの回帰を計算するばかげた例です。これが数式です....新しい数式列が追加されたデータテーブルに添付されています

Re: 数式で線形回帰勾配を計算する私はスクリプトを探していません。
数式アプリケーションを探しています (つまり、数式ビルダーを使用しています)Re: 数式で線形回帰勾配を計算する[ヘルプ] > [スクリプト インデックス] を選択します。 フィルター ボックスに「回帰」と入力します。 2 番目のリストに Linear Regression() 関数があるはずです。 それを選択すると、この機能に関する情報が右側に表示されます。
Re: 数式で線形回帰勾配を計算するやあ ...
あなたは「式で使用できる Linear Regression() 関数」 ...そして最終的な目的である提供されたデータセットに適合する式から勾配を取得する、 Linear Regression() 関数またはヘルプはどこにありますか?
例はありますか?
ありがとう
Re: 数式で線形回帰勾配を計算するJ() は、同じ値の行列を作成する関数です。デフォルトは 1 です。
||連結を示す演算子です。したがって、マークの例では、2 つの行列を連結しています。
これらの関数と演算子は、スクリプト ガイドに完全に記載されています。
ヘルプ==>JMP ドキュメント ライブラリ …..スクリプトガイド
Re: 数式で線形回帰勾配を計算する@マークベイリーこんにちは、私は JMP を初めて使用し、データ テーブルの列で 3 点、次に 4 点、というように線形回帰を実行する bio_grad に似たようなことをしようとしています。 あなたの答えが実際に何をしているのかを理解しようとしていますが、いくつか質問がありました。 || とは何ですか平均?また、Jは何ですか?Re: 数式で線形回帰勾配を計算する親愛なる@txnelson 、上記のコードを微調整して、ランダム サンプリングの代わりに、各「ウェーハ」ID/値に基づいて行選択でフィット モデルを実行する方法を示すことができますか? ありがとう!Re: 数式で線形回帰勾配を計算するやあ、
「3 のスパン」について言及しましたが、それを「N」サンプルの移動勾配に変更したい場合、どの値を変更する必要がありますか?
ありがとう!
Re: 数式で線形回帰勾配を計算する数式で使用できる Linear Regression() 関数を見てみましょう。使えるものになるかもしれません。
Re: 数式で線形回帰勾配を計算するやあ、
勾配と切片を、より単純な直接関数を使用して将来の JMP バージョンのフォーミュラ ビルダーに組み込む計画はありますか?
THX。
Re: 数式で線形回帰勾配を計算するすばらしい、うまくいきました、ありがとう
Re: 数式で線形回帰勾配を計算するこの修正された式は、スパン 8 の移動勾配を生成します。
If( Row() > 7,
x = J( 8, 1, 1 ) || :height[Index( Row() - 7, Row() )]`;
y = :weight[Index( Row() - 7, Row() )]`;
(Inv( x` * x ) * x` * y)[2];
)
Re: 数式で線形回帰勾配を計算するやあ
数式を適用して、ウィンドウ 8 で移動勾配を計算しようとしています。つまり、(Row() > 7 の場合) x および y データの最初のセットの線形回帰の勾配を計算したいのです。ポイント [1 ~ 8]、次に 1 ずつ増加する 8 つのデータ ポイントの次のセット [2 ~ 9]、というように続きます。 酵素反応の初速度を得るために最大勾配を計算しようとしています。
これを実現するためにスクリプトを変更する方法を教えてください。 数式をテストしたところ、定義されたサイズの移動ウィンドウではなく、行 1 から行 n までのすべてのデータ ポイントの勾配を取得しました。
前もって感謝します
Re: 数式で線形回帰勾配を計算するうわ~~すごい!!!!!!
どうもありがとうございます!!!!! : )
Re: 数式で線形回帰勾配を計算するこれはまさに私が探していたものです。 これらの操作が利用できるとは思いもしませんでした!
ありがとう!
Re: 数式で線形回帰勾配を計算する列式を使用することもできます。 Sample Data フォルダーから Big Class.jmp を開きました。 (選択するヘルプ>サンプル データ ライブラリ>ビッグクラス.jmp >開ける) という名前の新しい数値列を作成しました動く坂. この例では、次の列式を使用して、Y = 重量、X = 高さのスパン 3 で移動勾配を計算します。
If( Row() > 1,
x = J( Row(), 1, 1 ) || :height[Index( 1, Row() )]`;
y = :weight[Index( 1, Row() )]`;
(Inv( x` * x ) * x` * y)[2];
,
Empty()
)
次に、グラフビルダーで移動勾配と行をプロットします。
Re: 数式で線形回帰勾配を計算するこの数式を新しい数式列に挿入してみてください (これにより、現在の行までの勾配が計算されます)。
(Row() * Summation( i = 1, Row(), :Time[i] * :Volume[i] )
-Summation( i = 1, Row(), :Time[i] ) * Summation( i = 1, Row(), :Volume[i] )) / (
Row() * Summation( i = 1, Row(), :Time[i] ^ 2 )
-Summation( i = 1, Row(), :Time[i] ) ^ 2)
質問の 2 番目の部分を実行するには、合計のインデックスを変更するだけです。つまり、i=Row()-N から Row()+N に変更します。
お役に立てれば。
-ジェリー
Re: 数式で線形回帰勾配を計算するこれは、必要な出力を提供するスクリプトです。これは、別の方法で実行するだけです。モデルのあてはめプラットフォームを使用し、それを数回ループして、N を増やします。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// Create an output table to hold the results
dtOut = New Table( "summary",
New Column( "Instance" ),
New Column( "N" ),
New Column( "RSquare" ),
New Column( "RSM" ),
New Column( "Intercept" ),
New Column( "b1" ),
New Column( "b2" )
);
Loop Counter = 0;
// Loop across the different sizes
For( i = 5, i <= 111, i = i + 5,
Loop Counter++;
// Create a random sample data table from the original data table
dt << New Column( "random", formula( Random Uniform() ) );
dt << sort( by( dt:random ), , Order( Ascending ), replace table( 1 ) );
dt << delete columns( "Random" );
dt << select where( Row() <= i );
dtSample = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
// Run the regression
fm = dtSample << Fit Model(
Y( :NPN1 ),
Effects( :PNP1, :PNP2 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
:NPN1 << {Summary of Fit( 1 ), Analysis of Variance( 1 ), Parameter Estimates( 1 ),
Lack of Fit( 0 ), Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Effect Leverage( 0 )}
)
);
// Capture the output data
dtOut << Add Rows( 1 );
dtOut:Instance[N Rows( dtOut )] = Loop Counter;
dtOut:N[N Rows( dtOut )] = i;
dtOut:RSquare[N Rows( dtOut )] = (Report( fm )["Summary of Fit"][1][2] << get)[1];
dtOut:RSM[N Rows( dtOut )] = (Report( fm )["Summary of Fit"][1][2] << get)[3];
dtOut:Intercept[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[1];
dtOut:b1[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[2];
dtOut:b2[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[3];
// Clean up after our selfs
fm << close window;
Close( dtSample, nosave );
);Re: 数式での線形回帰傾きの計算まさに私がやりたかったことに対する素晴らしい解決策。ありがとう!!
Re: 数式での線形回帰傾きの計算この問題に興味がある人は、wish アイデアのサポートを検討するとよいでしょう。
https://community.jmp.com/t5/JMP-Wish-List/Moving-Rolling-Window-Statistics/idi-p/722620