列を使用して変数を解く線形式の最適化Minimize() または同様の関数を使用してこの式を解決する方法はありますか:
expr1 = expr((a:A+b:B+c:C)=:Target);
次の表を使用します。
| あ | B | ハ | 目標 |
| 10 | 0 | 0 | 30 |
| 500 | 0 | 0 | 1500 |
| 9999 | 0 | 0 | 29997 |
| 30 | 0 | 100 | 590 |
| 0 | 50 | 9999 | 500095 |
| 0 | 1000 | 500 | 4500 |
| 50 | 9999 | 0 | 20148年 |
| 200 | 100 | 0 | 800 |
| 10 | 0 | 0 | 30 |
| 0 | 0 | 0 | 0 |
Re: 列を使用して変数を解く線形式の最適化はい、パラメータ推定値を引き出すことができます。 以前の投稿で述べたように、 JMP スクリプト ガイド。 おそらく、「JMP レポートのナビゲート」セクションから始めてください。
Re: 列を使用して変数を解く線形式の最適化よかったです。ありがとうございます。Fit Model はうまく機能しているようです。 また、そのクラスを調べて詳細を学びます。
適合モデル出力の「パラメーター推定値」テーブルが、探している数値であると考えています。 JSLを使用してそのテーブルをデータテーブルに抽出する方法はありますか?
Re: 列を使用して変数を解く線形式の最適化「JMP の学習」タブから利用できる無料の「産業問題解決のための統計的思考」コース (略して「統計的思考」コース) を参照することをお勧めします。 回帰セクションを見てください。 これにより、回帰がどのように機能し、JMP でどのように行うかがわかります。 回帰は、このサイズの問題を処理できます。
X 列を JMP テーブルに入力します。 20 X 列と 200 行になります。 テーブルに合計 21 の列があるように、Y 列も入れます。 JMP スクリプトを使用する場合は、そこから任意の JSL コードを使用できます。 または、モデルの適合を使用できます。 Yを指定してください。 すべての X を強調表示し、[追加] をクリックします。次に、[モデルの実行] をクリックします。
Re: 列を使用して変数を解く線形式の最適化この方法は有望に思えますが、スケールアップに問題が発生しています... ログ出力:
入力に欠損値があります。
[., ., ., ., ., ., ., ., ., .]
私は最終的にこれを ~20 変数の問題にスケールアップしようとしています。
X = [20x200] 行列
Y = [1x200] 行列
Y = M*X 、M は 20 変数の行列
これは線形回帰でも可能ですか? 一部のオンライン リソースでは、バッチ勾配降下法が提案されているようです。
ありがとう
Re: 列を使用して変数を解く線形式の最適化元の質問の言い回しは、おそらくJSLによる解決策が必要であることを示唆しています。 その場合、JMP プラットフォームの使用を避ける代替手段は次のとおりです。
NamesDefaultToHere(1);
// Data table
dt = New Table( "Test",
Add Rows( 10 ),
New Column( "A",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [10, 500, 9999, 30, 0, 0, 50, 200, 10, 0] )
),
New Column( "B",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 0, 0, 0, 50, 1000, 9999, 100, 0, 0] )
),
New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 0, 0, 100, 9999, 500, 0, 0, 0, 0] )
),
New Column( "Target",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [30, 1500, 29997, 590, 500095, 4500, 20148, 800, 30, 0] )
)
);
// Get values into vectors (could use table subscripting too)
Y = Column(dt, "Target") << getValues;
Avals = Column(dt, "A") << getValues;
Bvals = Column(dt, "B") << getValues;
Cvals = Column(dt, "C") << getValues;
X = Avals||Bvals||Cvals;
// Do the regression (see 'Help > Scripting Index' for more details of 'results')
results = LinearRegression(Y, X);
parameters = results[1];
Print(parameters);
しかし、 @ダン_オーバーミラー述べたように、回帰の問題と見なすことができ、データや結果を目視検査せずに回帰を行うことは一般的には良い考えではありません。
Re: 列を使用して変数を解く線形式の最適化結果は、パラメーター推定レポートに表示されます。 JSL 経由でそれらを取得しようとしている場合は、JMP Scripting Guide を参照してください。 おそらく、「JMP レポートのナビゲート」セクションから始めてください。
Re: 列を使用して変数を解く線形式の最適化やあ@ダンさん、返信ありがとうございます。 あなたが言及した結果をどのように引き出すことができますか?

また、a、b、c の個々の値をどのように引き出すのでしょうか?
ありがとう!
Re: 列を使用して変数を解く線形式の最適化私は非線形プラットフォームでうまくいきました (線形最適化の場合でも)。列と組み合わせてパラメーターを入力する必要があり、それらのパラメーターを解決します。
Re: 列を使用して変数を解く線形式の最適化あなたが本当に何をしようとしているのかはわかりませんが、これは回帰の問題のように見えます:
(a*A + b*B + c*C) (これを予測値と呼びます) とターゲットの差ができるだけ小さくなるように、a、b、および c の値を見つけます。 回帰コンテキストでは、誤差 = ターゲット - 予測値である二乗誤差の合計を最小化します。
これは、私が行った Fit Model を使用して対話的に行うことができます。 スクリプトは下にあります。 結果は次のとおりです。

Fit Model(
Y( :Target ),
Effects( :A, :B, :C ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run(
:Target << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 1 ), Plot Regression( 0 ),
Plot Residual by Predicted( 1 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 1 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 )}
)
);
Re: 列を使用して変数を解く線形式の最適化表現に誤りがあります:
dt = 現在のデータ テーブル。
expr1 = expr((a*dt:A+b*dt:B+c*dt:C)=:ターゲット);
a、b、および c の値を特定しようとしています。