Optimización de expresión lineal usando columnas para resolver variables¿Hay alguna forma de usar Minimize() o una función similar para resolver esta expresión?
expr1 = expr((a:A+b:B+c:C)=:Target);
usando la siguiente tabla:
| A | B | C | Objetivo |
| 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: Optimización de expresión lineal usando columnas para resolver variablesSí, puede extraer las estimaciones de los parámetros. Como dije en una publicación anterior, mira la Guía de secuencias de comandos de JMP. Probablemente comience con la sección "Navegar por los informes de JMP".
Re: Optimización de expresión lineal usando columnas para resolver variablesGenial, gracias, el modelo Fit parece funcionar bien. También miraré en esa clase para aprender más.
Considero que la tabla "Estimaciones de parámetros" en la salida del modelo de ajuste es el número que estoy buscando. ¿Hay alguna forma de extraer esa tabla en una tabla de datos usando JSL?
Re: Optimización de expresión lineal usando columnas para resolver variablesEs posible que desee ver el curso gratuito de Pensamiento estadístico para la resolución de problemas industriales (o simplemente el curso de Pensamiento estadístico para abreviar) que está disponible en la pestaña Aprender JMP. Mira la sección de regresión. Eso le mostrará cómo funciona la regresión y cómo hacerlo en JMP. La regresión puede manejar un problema de este tamaño.
Ingrese sus columnas X en una tabla JMP. Tendrás 20 columnas X y 200 filas. Pon tu columna Y también para que tu tabla tenga un total de 21 columnas. Desde allí, puede usar cualquiera de los códigos JSL si desea usar secuencias de comandos JMP. Como alternativa, puede usar Ajustar modelo. Especifique su Y. Resalte todas sus X y haga clic en Agregar. Luego haga clic en Ejecutar modelo.
Re: Optimización de expresión lineal usando columnas para resolver variablesSi bien este método parece prometedor, tengo problemas para ampliarlo... Las salidas de registro:
Las entradas tienen valores perdidos.
[., ., ., ., ., ., ., ., ., ., .]
Estoy intentando eventualmente escalar esto a un problema de ~20 variables, donde
X = [20x200] matriz
Y = [1x200] matriz
Y = M*X , donde M es una matriz de 20 variables
¿Sigue siendo esto posible con la regresión lineal? Algunos recursos en línea parecen sugerir un descenso de gradiente por lotes.
Gracias
Re: Optimización de expresión lineal usando columnas para resolver variablesLa redacción de la pregunta original quizás sugiere que se requiere una solución a través de JSL. Si ese es el caso, una alternativa para evitar el uso de JMP Platforms es:
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);
Pero como @Dan_Obermiller señala, como se indicó, puede verse como un problema de regresión, y generalmente no es una buena idea hacer una regresión sin una inspección visual de los datos o los resultados.
Re: Optimización de expresión lineal usando columnas para resolver variablesLos resultados estarían en el informe de estimaciones de parámetros. Si intenta extraerlos a través de JSL, consulte la Guía de secuencias de comandos de JMP. Probablemente comience con la sección "Navegar por los informes de JMP".
Re: Optimización de expresión lineal usando columnas para resolver variablesHola @Dan , Gracias por la respuesta. Esto parece prometedor para lo que necesito, aunque ¿cómo puedes sacar el resultado que mencionaste?

Además, ¿cómo sacaría esos valores individuales para a, b y c?
¡Gracias!
Re: Optimización de expresión lineal usando columnas para resolver variablesHe tenido buena suerte con la plataforma no lineal (incluso para la optimización lineal).Debe ingresar parámetros junto con columnas y resolverá esos parámetros.
Re: Optimización de expresión lineal usando columnas para resolver variablesNo estoy seguro de lo que realmente estás tratando de hacer, pero esto me parece un problema de regresión:
Encuentre valores de a, b y c tales que la diferencia entre (a*A + b*B + c*C) (que llamaré valor predicho) y el Objetivo sea lo más pequeña posible. En el contexto de la regresión, sería minimizar la suma de los errores al cuadrado donde un error = Objetivo - Valor previsto.
Puede hacer esto de forma interactiva con Fit Model, lo cual hice. El guión de ir que está abajo. El resultado es:

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: Optimización de expresión lineal usando columnas para resolver variablesLo siento, error con la expresión:
dt = Tabla de datos actual;
expr1 = expr((a*dt:A+b*dt:B+c*dt:C)=:Objetivo);
Buscando identificar valores para a, b y c.