Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesExiste-t-il un moyen d'utiliser Minimize() ou une fonction similaire pour résoudre cette expression :
expr1 = expr((a:A+b:B+c:C)=:Target);
à l'aide du tableau suivant :
| UNE | B | C | Cibler |
| dix | 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 |
| dix | 0 | 0 | 30 |
| 0 | 0 | 0 | 0 |
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesOui, vous pouvez extraire les estimations des paramètres. Comme je l'ai dit dans un post précédent, regardez le Guide de création de scripts JMP. Commencez probablement par la section "Naviguer dans les rapports JMP".
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesSuper, merci, le Fit Model semble bien fonctionner. Je vais aussi regarder dans cette classe pour en savoir plus.
Je suppose que le tableau "Parameter Estimates" dans la sortie du modèle d'ajustement est le nombre que je recherche. Existe-t-il un moyen d'extraire cette table dans une table de données à l'aide de JSL ?
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesVous voudrez peut-être consulter le cours gratuit de pensée statistique pour la résolution de problèmes industriels (ou simplement le cours de pensée statistique en abrégé) disponible dans l'onglet Apprendre JMP. Regardez la section de régression. Cela vous montrera comment fonctionne la régression et comment le faire dans JMP. La régression peut gérer un problème de cette taille.
Faites entrer vos colonnes X dans une table JMP. Vous aurez 20 colonnes X et 200 lignes. Mettez également votre colonne Y afin que votre tableau ait un total de 21 colonnes. À partir de là, vous pouvez utiliser n'importe quel code JSL si vous souhaitez utiliser les scripts JMP. Vous pouvez également utiliser Ajuster le modèle. Spécifiez votre Y. Mettez en surbrillance tous vos X et cliquez sur Ajouter. Cliquez ensuite sur Exécuter le modèle.
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesBien que cette méthode semble prometteuse, je rencontre des problèmes pour la mettre à l'échelle... Le journal affiche :
Les entrées ont des valeurs manquantes.
[., ., ., ., ., ., ., ., ., ., .]
J'essaie de faire évoluer cela jusqu'à un problème variable d'environ 20, où
X = [20x200] matrice
Y = matrice [1x200]
Y = M*X , où M est une matrice de 20 variables
Est-ce encore possible avec la régression linéaire ? Certaines ressources en ligne semblent suggérer une descente de gradient par lots.
Merci
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesLa formulation de la question d'origine suggère peut-être qu'une solution via JSL est nécessaire. Si tel est le cas, une alternative évitant l'utilisation des plates-formes JMP consiste à :
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);
Mais comme @Dan_Obermiller souligne, comme indiqué, cela peut être considéré comme un problème de régression, et ce n'est généralement pas une bonne idée de faire une régression sans une inspection visuelle des données ou des résultats.
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesLes résultats seraient dans le rapport Parameter Estimates. Si vous essayez de les extraire via JSL, consultez le JMP Scripting Guide. Commencez probablement par la section "Naviguer dans les rapports JMP".
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesSalut @Dan , Merci pour la réponse. Cela semble prometteur pour ce dont j'ai besoin, mais comment pouvez-vous obtenir le résultat que vous avez mentionné ?

De plus, comment extraire ces valeurs individuelles pour a, b et c ?
Merci!
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesJ'ai eu de la chance avec la plate-forme non linéaire (même pour l'optimisation linéaire).Vous devez entrer des paramètres en conjonction avec des colonnes et cela résoudra ces paramètres.
Re : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesJe ne sais pas ce que vous essayez vraiment de faire, mais cela ressemble à un problème de régression pour moi:
Trouvez les valeurs de a, b et c telles que la différence entre (a*A + b*B + c*C) (que j'appellerai valeur prédite) et Target soit aussi petite que possible. Dans le contexte de régression, cela minimiserait la somme des erreurs au carré où une erreur = cible - valeur prédite.
Vous pouvez le faire de manière interactive avec Fit Model, ce que j'ai fait. Le script d'aller qui est en bas. Le résultat est:

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 : Optimisation de l'expression linéaire à l'aide de colonnes pour résoudre les variablesDésolé, erreur avec l'expression :
dt = tableau de données actuel ;
expr1 = expr((a*dt:A+b*dt:B+c*dt:C)=:Cible);
Vous cherchez à identifier les valeurs pour a, b et c.