Scénario? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesJ'ai une formule de modèle dans la colonne 1 avec 2 paramètres et je voudrais adapter ce modèle à 80 colonnes de données différentes (Cols 2 - 82), où chaque colonne de données a ces 2 paramètres adaptés. Y a-t-il un moyen facile de faire ceci?
Devrais-je écrire un script ?
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesfinir par converger vers ceci comme solution:
Noms par défaut ici( 1 );
dlg = dialogue de colonne(
Titre( "Régression non linéaire"),
yCol = Col List( "O, Réponse",
Type de données (numérique),
Min Col( 1 )
),
xCol = Col List( "X, Formule de prédiction",
Type de données (numérique),
Min Col( 1 ),
Col max( 1 )
)
);
Si( dlg["Bouton"] != 1,
Throw( "Utilisateur annulé" );
);
Supprimer de( dlg );
Eval List( dlg );
dt = table de données actuelle();
n ajustements = N éléments( yCol );
formule = xCol[1] << Obtenir la formule ;
n parms = N Items( Arg( formule, 1 ) );
parm = J( n correspond, 2* n parm, .);
clmnm={} ;
parmnm = Arg(formule,1);
parclnm = As List(J(1,n parms));
Pour( i = 1, i<= n paramètres,i++,
parmnm[i]=Char(parmnm[i]);
parclnm[i]=Gauche(parmnm[i],Munger(parmnm[i],1,"=")-1);
);
Pour( f = 1, f <= n convient, f++,
Essayer(
nl fit = dt << Non linéaire( Y( yCol[f] ), X( xCol[1] ), Newton, Dérivées numériques uniquement (1), Finish, Go );
parm[f,[1,2]] = Transpose( Report( nl fit )["Solution"][NumberColBox(5)] << Get As Matrix );
parm[f,[3,4]] = Transpose( Report( nl fit )["Solution"][NumberColBox(6)] << Get As Matrix );
);
clmnm[f]=Colonne(yCol[f])< );
dt = As Table( parm );
dt< col = Colonne(1);
Pour( f = 1, f <= n convient, f++,
col[f]=clmnm[f] ;
);
Pour( i = 1, i<= n paramètres,i++,
col = Colonne(i+1);
col << Set Name(parclnm[i]||"Estimation");
col = Colonne(i+1+n paramètres);
col << Set Name(parclnm[i]||"ApproxStdError");
);
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesJ'ai compris !
Merci!
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesil se trompe à cette étape
parm[f,0] = Transpose( Report( nl fit )["Parameter Estimates"][NumberColBox(1)] << Get As Matrix );
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesMerci!
A tester maintenant...
erreur suivante reçue lors du débogage
Impossible d'indicer la boîte d'affichage dans l'accès ou l'évaluation de 'Subscript' , Report( nl fit )[/*###*/"Parameter Estimates"]
@Mark_Bailey écrit:
Cette solution s'avère un peu délicate. Cela ne fonctionne que si le modèle que vous utilisez n'est PAS l'un de ceux de la bibliothèque Fit Curve. (Si c'est le cas, alors Nonlinear lance Fit Curve, qui s'attend à ce que le modèle soit spécifié par son nom, ce que ce script ne fournit pas.) Sur la base de votre affirmation selon laquelle le modèle réel est plus compliqué, alors j'ai pris le risque qu'il soit pas dans la bibliothèque Fit Model et a écrit ce script :
Names Default to Here( 1 );
dlg = Column Dialog(
Title( "Nonlinear Regression" ),
yCol = Col List( "Y, Response",
Data Type( Numeric ),
Min Col( 1 )
),
xCol = Col List( "X, Predictor Formula",
Data Type( Numeric ),
Min Col( 1 ),
Max Col( 1 )
)
);
If( dlg["Button"] != 1,
Throw( "User cancelled" );
);
Remove From( dlg );
Eval List( dlg );
dt = Current Data Table();
n fits = N Items( yCol );
formula = xCol[1] << Get Formula;
n parms = N Items( Arg( formula, 1 ) );
parm = J( n fits, n parms, . );
For( f = 1, f <= n fits, f++,
nl fit = dt << Nonlinear( Y( yCol[f] ), X( xCol[1] ), Newton, Finish );
parm[f,0] = Transpose( Report( nl fit )["Parameter Estimates"][NumberColBox(1)] << Get As Matrix );
);
As Table( parm );
Ouvrez d'abord la table de données JMP, puis ouvrez et exécutez ce script. Sélectionnez toutes les colonnes de réponse (colonnes 2 à 82 dans votre exemple) et cliquez sur Oui, réponse . Cliquez sur la colonne avec la formule modèle (colonne 1 dans votre exemple) et cliquez sur X, formule de prédiction , . Puis clique D'ACCORD .
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesCette solution s'avère un peu délicate. Cela ne fonctionne que si le modèle que vous utilisez n'est PAS l'un de ceux de la bibliothèque Fit Curve. (Si c'est le cas, alors Nonlinear lance Fit Curve, qui s'attend à ce que le modèle soit spécifié par son nom, ce que ce script ne fournit pas.) Sur la base de votre affirmation selon laquelle le modèle réel est plus compliqué, alors j'ai pris le risque qu'il soit pas dans la bibliothèque Fit Model et a écrit ce script :
Names Default to Here( 1 );
dlg = Column Dialog(
Title( "Nonlinear Regression" ),
yCol = Col List( "Y, Response",
Data Type( Numeric ),
Min Col( 1 )
),
xCol = Col List( "X, Predictor Formula",
Data Type( Numeric ),
Min Col( 1 ),
Max Col( 1 )
)
);
If( dlg["Button"] != 1,
Throw( "User cancelled" );
);
Remove From( dlg );
Eval List( dlg );
dt = Current Data Table();
n fits = N Items( yCol );
formula = xCol[1] << Get Formula;
n parms = N Items( Arg( formula, 1 ) );
parm = J( n fits, n parms, . );
For( f = 1, f <= n fits, f++,
nl fit = dt << Nonlinear( Y( yCol[f] ), X( xCol[1] ), Newton, Finish );
parm[f,0] = Transpose( Report( nl fit )["Parameter Estimates"][NumberColBox(1)] << Get As Matrix );
);
As Table( parm );
Ouvrez d'abord la table de données JMP, puis ouvrez et exécutez ce script. Sélectionnez toutes les colonnes de réponse (colonnes 2 à 82 dans votre exemple) et cliquez sur Oui, réponse . Cliquez sur la colonne avec la formule modèle (colonne 1 dans votre exemple) et cliquez sur X, formule de prédiction , . Puis clique D'ACCORD .
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesVous pouvez le faire sans script mais cela impliquera beaucoup de clics. En supposant que vous avez déjà configuré le modèle non linéaire en tant que formule de colonne, procédez comme suit :
- Sélectionnez Tableaux > Empiler.
- Sélectionnez toutes les colonnes de réponse (2-82 dans votre exemple) et cliquez sur Empiler.
- Assurez-vous que l'option permettant de copier les formules est sélectionnée.
- Entrez un nom pour la colonne Données, tel que Réponse.
- Entrez un nom pour la colonne Libellé, tel que Courbe.
- Cliquez sur OK.
- Sélectionnez Analyser > Modèles spécialisés > Non linéaire.
- Sélectionnez la colonne de prédicteur (83 dans votre exemple) et cliquez sur X
- Sélectionnez la colonne de modèle (1 dans votre exemple) et cliquez sur Y.
- Sélectionnez la colonne Courbe et cliquez sur Par.
- Cliquez sur OK.
- Cliquez maintenant sur Go pour chaque courbe. (C'est la partie fastidieuse.)
- Cliquez avec le bouton droit sur n'importe quel rapport Parameter Estimates et sélectionnez Make Combined Data Table.
Ce processus devrait vous donner une nouvelle table de données avec toutes les estimations de paramètres.
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesMarquer,
Merci.
Les réponses à toutes vos questions de vérification sont oui.
La formule peut être n'importe quoi, mais disons que c'est y = h*exp(-b*x^(0.65)) pour plus de simplicité, avec h et b comme paramètres et x>0.
La formule réelle est beaucoup plus compliquée, mais cette complication supplémentaire ne devrait pas avoir d'impact sur la solution.
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesJe vais demander à nouveau : quel est le modèle non linéaire ( f(X) ) exprimé dans la formule de la colonne 1 ? Quels sont les deux paramètres ?
Vérification : le prédicteur (X) est la dernière colonne et il est utilisé dans la formule de la colonne 1 ?
Vérification : les réponses individuelles (O) sont dans les colonnes 2-82 ?
Vérification : vous voulez ajuster Y = f(X) séparément à chaque Y et capturer les estimations des paramètres pour chaque Y ?
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesOui, une variable prédictive existe dans une autre colonne.
Nous pouvons l'appeler colonne 83 si vous le souhaitez.
Et je suppose que ma sortie cible serait un tableau qui montre les meilleures valeurs d'ajustement des deux paramètres par colonne avec les intervalles de confiance associés.
Re : Scénario ? Application d'une formule de colonne de modèle non linéaire à plusieurs colonnesQuel est votre modèle non linéaire stocké sous forme de formule dans la colonne 1 ? Cette formule est généralement une fonction de la variable prédictive. Quelle colonne contient les valeurs des prédicteurs ?
Si ce cas est simple, je peux écrire un script.