Ottimizzazione dell'espressione lineare utilizzando colonne per risolvere le variabiliC'è un modo per usare Minimize() o una funzione simile per risolvere questa espressione:
expr1 = expr((a:A+b:B+c:C)=:Target);
utilizzando la seguente tabella:
| UN | B | C | Obbiettivo |
| 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 |
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliSì, puoi estrarre le stime dei parametri. Come ho affermato in un post precedente, guarda la Guida agli script di JMP. Probabilmente inizia con la sezione "Naviga nei report JMP".
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliFantastico, grazie, il Fit Model sembra funzionare bene. Esaminerò anche quella classe per saperne di più.
Presumo che la tabella "Stime dei parametri" nell'output del modello di adattamento sia il numero che sto cercando. C'è un modo per estrarre quella tabella in una tabella di dati usando JSL?
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliPotresti dare un'occhiata al corso gratuito Statistical Thinking for Industrial Problem Solving (o semplicemente al corso Statistical Thinking in breve) disponibile nella scheda Learn JMP. Guarda la sezione di regressione. Questo ti mostrerà come funziona la regressione e come farlo in JMP. La regressione può gestire un problema di queste dimensioni.
Inserisci le tue colonne X in una tabella JMP. Avrai 20 X colonne e 200 righe. Inserisci anche la tua colonna Y in modo che la tua tabella abbia un totale di 21 colonne. Da lì puoi utilizzare qualsiasi codice JSL se desideri utilizzare lo scripting JMP. In alternativa, puoi utilizzare Stima modello. Specifica la tua Y. Evidenziare tutte le X e fare clic su Aggiungi. Quindi fare clic su Esegui modello.
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliSebbene questo metodo sembri promettente, sto riscontrando problemi nel ridimensionarlo ... Il registro restituisce:
Gli input hanno valori mancanti.
[., ., ., ., ., ., ., ., ., ., .]
Sto tentando di ridimensionarlo fino a un problema di ~ 20 variabili, dove
X = [20x200] matrice
Y = [1x200] matrice
Y = M*X , dove M è una matrice di 20 variabili
È ancora possibile con la regressione lineare? Alcune risorse online sembrano suggerire la discesa del gradiente batch.
Grazie
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliLa formulazione della domanda originale suggerisce forse che è necessaria una soluzione tramite JSL. In tal caso, un'alternativa per evitare l'uso delle piattaforme 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);
Ma come @Dan_Obermiller sottolinea, come affermato, può essere visto come un problema di regressione e generalmente non è una buona idea eseguire la regressione senza un'ispezione visiva dei dati o dei risultati.
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliI risultati sarebbero nel rapporto Stime dei parametri. Se stai cercando di estrarli tramite JSL, guarda la JMP Scripting Guide. Probabilmente inizia con la sezione "Naviga nei report JMP".
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliCiao @ Dan , Grazie per la risposta. Questo sembra promettente per quello di cui ho bisogno, anche se come puoi tirare fuori il risultato che hai menzionato?

Inoltre, come estrarrebbero quei singoli valori per a, b e c?
Grazie!
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliHo avuto fortuna con la piattaforma non lineare (anche per l'ottimizzazione lineare).Devi inserire i parametri insieme alle colonne e risolverà per quei parametri.
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliNon sono sicuro di cosa stai veramente cercando di fare, ma questo mi sembra un problema di regressione:
Trova i valori di a, b e c tali che la differenza tra (a*A + b*B + c*C) (che chiamerò valore previsto) e Target sia la più piccola possibile. Nel contesto della regressione ciò ridurrebbe al minimo la somma degli errori al quadrato in cui un errore = Target - Valore previsto.
Puoi farlo in modo interattivo con Fit Model, cosa che ho fatto. La sceneggiatura di andare che è in basso. Il risultato è:

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 )}
)
);
Ri: Ottimizzazione dell'espressione lineare utilizzando le colonne per risolvere le variabiliSiamo spiacenti, errore con l'espressione:
dt = Tabella dati corrente;
expr1 = expr((a*dt:A+b*dt:B+c*dt:C)=:Target);
Cercando di identificare i valori per a, b e c.