使用列求解變量的線性表達式優化有沒有辦法使用 Minimize() 或類似的函數來解決這個表達式:
expr1 = expr((a:A+b:B+c:C)=:Target);
使用下表:
| 一種 | 乙 | C | 目標 |
| 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 |
回复:使用列求解變量的線性表達式優化是的,您可以提取參數估計值。 正如我在之前的帖子中所說,請看JMP 腳本指南。 可能從“導航 JMP 報告”部分開始。
回复:使用列求解變量的線性表達式優化太好了,謝謝,Fit Model 似乎運行良好。 我還將研究該課程以了解更多信息。
我認為擬合模型輸出中的“參數估計”表是我要查找的數字。 有沒有辦法使用 JSL 將該表提取到數據表中?
回复:使用列求解變量的線性表達式優化您可能想查看 Learn JMP 選項卡中提供的免費“工業問題解決統計思維”課程(或簡稱“統計思維”課程)。 查看回歸部分。 這將向您展示回歸的工作原理以及如何在 JMP 中進行。 回歸可以處理這種規模的問題。
將 X 列輸入到 JMP 表中。 您將有 20 X 列和 200 行。 將您的 Y 列也放入,以便您的表格共有 21 列。 如果您想使用 JMP 腳本,您可以從那裡使用任何 JSL 代碼。 或者,您可以使用擬合模型。 指定你的 Y。 突出顯示所有 X,然後單擊添加。然後單擊運行模型。
回复:使用列求解變量的線性表達式優化雖然這種方法看起來很有希望,但我在擴展它時遇到了問題...... 日誌輸出:
輸入有缺失值。
[.,.,.,.,.,.,.,.,.,.,.]
我試圖最終將其擴展到一個 ~20 個變量的問題,其中
X = [20x200] 矩陣
Y = [1x200] 矩陣
Y = M*X ,其中 M 是包含 20 個變量的矩陣
線性回歸仍然可能嗎? 一些在線資源似乎建議批量梯度下降。
謝謝
回复:使用列求解變量的線性表達式優化原始問題的措辭可能表明需要通過 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);
但作為@Dan_Obermiller指出,如前所述,它可以被視為一個回歸問題,如果不對數據或結果進行目視檢查就進行回歸通常不是一個好主意。
回复:使用列求解變量的線性表達式優化結果將在“參數估計”報告中。 如果您嘗試通過 JSL 提取它們,請查看 JMP 腳本指南。 可能從“導航 JMP 報告”部分開始。
回复:使用列求解變量的線性表達式優化你好@擔, 謝謝回复。 這似乎對我需要的東西很有希望,儘管你怎麼能得出你提到的結果?

另外,如何提取 a、b 和 c 的各個值?
謝謝!
回复:使用列求解變量的線性表達式優化我在非線性平台上很幸運(即使是線性優化)。您需要結合列輸入參數,它將求解這些參數。
回复:使用列求解變量的線性表達式優化我不確定你到底想做什麼,但這對我來說看起來像是一個回歸問題:
找到 a、b 和 c 的值,使得 (a*A + b*B + c*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 )}
)
);
回复:使用列求解變量的線性表達式優化抱歉,表達式錯誤:
dt = 當前數據表;
expr1 = expr((a*dt:A+b*dt:B+c*dt:C)=:目標);
希望確定 a、b 和 c 的值。