Calcul de la pente de régression linéaire dans la formuleBonjour,
Je me demandais s'il existait un moyen de calculer la pente de régression linéaire des données de colonne dans une formule de table de données.
Un exemple simple du tableau est ci-dessous. Les données sont ordonnées et je voudrais calculer la pente d'une ligne d'ajustement de volume au fil du temps en utilisant les données de la ligne actuelle et les points précédents pour effectuer la régression.
L'idée est que j'aimerais voir comment la pente calculée change avec l'augmentation du nombre de points de données. En faisant cela manuellement, les valeurs de pente finissent par s'approcher d'une valeur donnée et restent à +/- 5% après environ 20 points.
| Exemple | Temps (s) | Volume (ml) | Pente (mL/s) |
| 1 | 0 | 0 | n / A |
| 2 | 5 | 0,5 | m1 |
| 3 | dix | 0,8 | m2 |
| ... | ... | ... | ... |
| N | J | V | mN-1 |
Si cela est possible, mon prochain défi serait de le configurer afin que je puisse calculer la formule de pente afin qu'elle utilise N points de données de chaque côté de la ligne actuelle pour un calcul de déplacement symétrique à la place.
Merci d'avance.
Re : Calcul de la pente de régression linéaire dans la formuleC'est intéressant .. si je voulais appliquer une valeur p à cela ... basé sur une hypothèse nulle (pente = 0) ... existe-t-il un moyen d'intégrer cela dans la formule?
En d'autres termes, j'aimerais voir quand la pente mobile change de manière significative en fonction de l'intervalle de confiance autour de la pente
Re : Calcul de la pente de régression linéaire dans la formuleVous avez dit, " Souvent, nous ne savons pas quand la corrélation entre les X a changé, c'est donc une tentative d'examiner l'impact du temps pour toute analyse à portée de main. " Avez-vous essayé l'explorateur de données fonctionnelles dans JMP Pro ? Cela pourrait être utile pour détecter un changement de forme à travers les composants principaux fonctionnels.
Re : Calcul de la pente de régression linéaire dans la formuleBonjour l'équipe JMP...
L'approche de Nelson est très probablement ce que je recherchais. Je discute avec lui d'un besoin similaire avec le test mann kendall tau.
Mon entrée n'est pas dans une seule ligne.
Mes données contiennent généralement plusieurs paramètres, chacun mesuré à un pas de temps différent. Format de données ordonné ; les paramètres sont en colonnes, chaque ligne correspond à un état temporel différent - c'est-à-dire que la chronologie est en lignes.
J'étudie de nombreuses fonctions statistiques mesurant la tendance dans l'une d'entre elles ou un ajustement par rapport à un autre X dans le temps, mais en fonction des fenêtres roulantes.Ainsi, au lieu de régresser toute l'histoire de X vs Y par exemple, j'aime une logique qui examine la régression des deux dans des pas de temps passés constants N. Chaque ligne est ensuite réévaluée et me donne un nouveau résultat. Il peut s'agir d'une pente de régression linéaire, d'un test tau d'un test MK non paramétrique ou d'une autre sortie statistique.
Souvent, nous ne savons pas quand la corrélation entre les X a changé, c'est donc une tentative d'examiner l'impact du temps pour toute analyse à portée de main. N mentionné ci-dessus peut être remplacé par différentes valeurs pour examiner les tendances à court terme par rapport aux tendances à moyen/long terme.
Je suis d'accord avec les scripts, ils ne sont pas ma préférence à moins que les calculs puissent grandement bénéficier d'une méthode offerte uniquement par les scripts.
Ma préférence est généralement de mettre les calculs dans des formules et de les conserver dans les blocs de données.
Jusqu'à aujourd'hui, je n'a pas sachez que les structures de script peuvent être déployées dans des formules.
C'était probablement la principale cause de ma confusion.
Appréciez toute votre aide.
Re : Calcul de la pente de régression linéaire dans la formuleJe sais.
Mon point est que la meilleure façon de commencer à apprendre sur les fonctions que vous pourriez utiliser dans une formule est avec l'index de script.
Re : Calcul de la pente de régression linéaire dans la formulePouvez-vous nous donner plus de détails sur ce que vous recherchez ?
Les formules, d'une manière générale, fonctionnent sur les lignes d'une table de données, en évaluant une par ligne avec les valeurs de colonne de cette ligne comme entrées.
Ainsi, en demandant une fonction de régression dans l'éditeur de formule, on s'attendrait à ce que vous disposiez d'une matrice de valeurs d'entrée dans chaque ligne de votre tableau de données. C'est peut-être ce que vous avez, mais c'est une structure inhabituelle.
Ainsi, avec quelques informations supplémentaires, nous pourrons peut-être vous aider à comprendre comment vous pouvez utiliser une formule pour cela, ou peut-être vous orienter dans une direction en dehors de l'éditeur de formule.
Re : Calcul de la pente de régression linéaire dans la formuleUne formule JMP peut être à peu près tout ce que vous voulez qu'elle soit.Mon pointage vers la fonction Linear Regression() dans l'index de script montre son exemple sous la forme d'un script, mais la fonction peut également être utilisée dans une formule.Vous trouverez ci-dessous un exemple stupide de calcul de la régression pour les premières lignes 1 à 3, puis 1 à 4, 1 à 5, etc. pour toutes les lignes de la table de données Big Class.Voici la formule...….jointe dans le tableau de données avec la nouvelle colonne de formule ajoutée

Re : Calcul de la pente de régression linéaire dans la formuleJe ne cherche pas de script.
Je recherche une application de formule (c'est-à-dire en utilisant le générateur de formule)Re : Calcul de la pente de régression linéaire dans la formuleSélectionnez Aide > Index des scripts. Entrez "régression" dans la zone de filtre. Vous devriez trouver la fonction Linear Regression() dans la deuxième liste. Sélectionnez-le pour voir les informations sur cette fonction sur la droite.
Re : Calcul de la pente de régression linéaire dans la formuleSalut ...
Vous avez mentionné " Fonction Linear Regression(), qui pourrait être utilisée dans une formule" ...et obtenir une pente à partir d'une formule adaptée à l'ensemble de données fourni étant l'objectif final , où irait-on trouver la fonction Linear Regression() ou toute aide ?
Avez-vous un exemple?
merci
Re : Calcul de la pente de régression linéaire dans la formuleJ() est une fonction qui crée une matrice de valeurs identiques.La valeur par défaut est 1.
|| est un opérateur qui indique la concaténation.Ainsi, dans l'exemple de Mark, il concatène 2 matrices.
Ces fonctions et opérateurs sont entièrement documentés dans le Guide de script
Aide==>Bibliothèque de documents JMP …..Guide de script
Re : Calcul de la pente de régression linéaire dans la formule@Mark_Bailey Salut marque, je suis nouveau sur JMP et j'essaie de faire quelque chose de similaire à bio_grad où j'effectue une régression linéaire sur 3 points, puis 4 points, puis ainsi de suite dans une colonne de ma table de données. J'essaie de comprendre ce que votre réponse fait réellement et j'ai quelques questions. Que signifie || moyenne? aussi qu'est-ce que J?Re : Calcul de la pente de régression linéaire dans la formuleCher @txnelson , pouvez-vous montrer comment modifier le code ci-dessus pour exécuter des modèles d'ajustement sur des sélections de lignes en fonction de chaque identifiant/valeur de "wafer", au lieu de l'échantillonnage aléatoire ? Merci!Re : Calcul de la pente de régression linéaire dans la formuleSalut,
Vous mentionnez une "étendue de 3", si nous voulons la modifier pour qu'elle soit une pente mobile de "N" échantillons, quelle valeur devra changer ?
Merci!
Re : Calcul de la pente de régression linéaire dans la formuleJetez un œil à la fonction Linear Regression(), qui pourrait être utilisée dans une formule.C'est peut-être quelque chose que vous pouvez utiliser.
Re : Calcul de la pente de régression linéaire dans la formuleSalut,
Existe-t-il un plan pour mettre la pente et l'interception dans le générateur de formules d'une future version de JMP avec une fonction directe plus simple ?
Merci.
Re : Calcul de la pente de régression linéaire dans la formuleSuper, ça marche, merci
Re : Calcul de la pente de régression linéaire dans la formuleCette formule modifiée produit une pente mobile de portée 8 :
If( Row() > 7,
x = J( 8, 1, 1 ) || :height[Index( Row() - 7, Row() )]`;
y = :weight[Index( Row() - 7, Row() )]`;
(Inv( x` * x ) * x` * y)[2];
)
Re : Calcul de la pente de régression linéaire dans la formuleSalut
J'essaie d'appliquer votre formule pour calculer la pente mobile avec une fenêtre de 8, ce que je veux dire (pour Row() > 7), je veux calculer la pente de la régression linéaire pour le premier ensemble de données x et y points [1 à 8], puis le prochain ensemble de 8 points de données en incrémentant de 1 [2 à 9], et ainsi de suite. J'essaie de calculer la pente maximale pour obtenir le taux initial d'une réaction enzymatique.
Pouvez-vous me dire comment vous modifieriez votre script pour y parvenir ? J'ai testé votre formule et j'obtiens la pente pour tous les points de données de la ligne 1 à la ligne n, plutôt qu'une fenêtre mobile de taille définie.
Merci d'avance
Re : Calcul de la pente de régression linéaire dans la formulewow ~~ Génial !!!!!!
Merci beaucoup!!!!! : )
Re : Calcul de la pente de régression linéaire dans la formuleCeci est exactement ce que je cherchais. Je ne savais pas que ces opérations étaient disponibles !
Merci!
Re : Calcul de la pente de régression linéaire dans la formuleVous pouvez également utiliser une formule de colonne. J'ai ouvert Big Class.jmp à partir du dossier Sample Data. (Sélectionner Aider > Exemple de bibliothèque de données > Grande classe.jmp > Ouvrir ) J'ai créé une nouvelle colonne numérique appelée pente mobile . Cet exemple calcule la pente mobile avec une étendue de 3 pour Y = poids et X = hauteur avec la formule de colonne suivante :
If( Row() > 1,
x = J( Row(), 1, 1 ) || :height[Index( 1, Row() )]`;
y = :weight[Index( 1, Row() )]`;
(Inv( x` * x ) * x` * y)[2];
,
Empty()
)
Ensuite, tracez la pente mobile par rapport à la ligne dans Graph Builder.
Re : Calcul de la pente de régression linéaire dans la formuleEssayez de brancher cette formule dans une nouvelle colonne de formules (cela calculera la pente jusqu'à la ligne actuelle):
(Row() * Summation( i = 1, Row(), :Time[i] * :Volume[i] )
-Summation( i = 1, Row(), :Time[i] ) * Summation( i = 1, Row(), :Volume[i] )) / (
Row() * Summation( i = 1, Row(), :Time[i] ^ 2 )
-Summation( i = 1, Row(), :Time[i] ) ^ 2)
Pour faire la deuxième partie de votre question, il suffirait de changer l'index sur la sommation, c'est-à-dire de i=Row()-N à Row()+N.
J'espère que cela t'aides.
-Jerry
Re : Calcul de la pente de régression linéaire dans la formuleVoici un script qui vous donne la sortie que vous voulez, il le fait simplement d'une manière différente.Il utilise la plate-forme Fit Model et la parcourt plusieurs fois, augmentant le N.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// Create an output table to hold the results
dtOut = New Table( "summary",
New Column( "Instance" ),
New Column( "N" ),
New Column( "RSquare" ),
New Column( "RSM" ),
New Column( "Intercept" ),
New Column( "b1" ),
New Column( "b2" )
);
Loop Counter = 0;
// Loop across the different sizes
For( i = 5, i <= 111, i = i + 5,
Loop Counter++;
// Create a random sample data table from the original data table
dt << New Column( "random", formula( Random Uniform() ) );
dt << sort( by( dt:random ), , Order( Ascending ), replace table( 1 ) );
dt << delete columns( "Random" );
dt << select where( Row() <= i );
dtSample = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
// Run the regression
fm = dtSample << Fit Model(
Y( :NPN1 ),
Effects( :PNP1, :PNP2 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
:NPN1 << {Summary of Fit( 1 ), Analysis of Variance( 1 ), Parameter Estimates( 1 ),
Lack of Fit( 0 ), Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Effect Leverage( 0 )}
)
);
// Capture the output data
dtOut << Add Rows( 1 );
dtOut:Instance[N Rows( dtOut )] = Loop Counter;
dtOut:N[N Rows( dtOut )] = i;
dtOut:RSquare[N Rows( dtOut )] = (Report( fm )["Summary of Fit"][1][2] << get)[1];
dtOut:RSM[N Rows( dtOut )] = (Report( fm )["Summary of Fit"][1][2] << get)[3];
dtOut:Intercept[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[1];
dtOut:b1[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[2];
dtOut:b2[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[3];
// Clean up after our selfs
fm << close window;
Close( dtSample, nosave );
);Re : Calcul de la pente de régression linéaire dans la formuleSolution fantastique pour EXACTEMENT ce que je voulais faire. Merci!!
Re : Calcul de la pente de régression linéaire dans la formuleLes personnes intéressées par ce problème voudront peut-être envisager de soutenir l'idée du souhait :
https://community.jmp.com/t5/JMP-Wish-List/Moving-Rolling-Window-Statistics/idi-p/722620