使用列求解变量的线性表达式优化有没有办法使用 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 的值。