Comment puis-je effectuer une régression standard des moindres carrés à des valeurs spécifiques de mon axe x ?
Pour plus de contexte - je trace la tension en fonction du courant et aux valeurs -10A -5A 5A 10A. J'ai besoin d'un modèle standard de moindre régression de tant de points autour de ces valeurs. J'imagine avoir 4 points ou 4 petites lignes sur mes données pour représenter cela.
J'ai JMP 17 pro et je le fais actuellement pour tous les ensembles de données, mais ce n'est pas ce dont j'ai besoin.
Une méthode pour le faire via l'analyse JMP est préférable au script, mais tout serait génial 
Salut @MedianRooster10 ,
Pouvez-vous partager un exemple de tableau de données afin que nous puissions voir comment les données sont structurées ? Cela pourrait aider à trouver une solution plus rapidement.
Une idée qui m'est venue à l'esprit est que vous disposez d'une colonne catégorisant les différents groupes actuels en tant que type de données nominal. Vous pourriez avoir pour la colonne :Current des valeurs numériques, comme -10, -5, 5, 10, mais vous pourriez avoir une colonne avec du texte comme -10A -5A 5A 10A, pour chaque groupe de courant puis lorsque vous effectuez votre régression LS standard, vous utilisez cette colonne comme variable "BY".
Ce serait comme utiliser le fichier Big Class.jmp et modéliser :height comme Y, :weight comme X, puis :sex comme variable "BY". Cela vous fournirait un modèle pour tous les Y regroupés dans ces différentes plages de tension. Ce n'est peut-être pas ce que vous recherchez, mais encore une fois, il serait utile d'obtenir un exemple de tableau de données pour voir comment vos données sont structurées et fournir une solution plus spécifique.
J'espère que cela t'aides!,
DS
Salut @SDF1
Je ne pense pas que ce soit ce que je recherche.
J'ai joint un sous-ensemble des données pour 1 température et le graphique que je produis.
Ce n'est pas un graphique linéaire mais je veux une régression linéaire partielle. Par exemple, je veux prendre les 10 points de données les plus proches de 5A et en calculer le plus petit carré (tracer cela comme point de données sur mon graphique).
Merci pour votre aide!
Salut @MedianRooster10 ,
Je pense que vous essayez de faire une régression par morceaux. Vous pourrez peut-être le faire avec l'explorateur de données fonctionnelles ou avec la plateforme non linéaire.
Ce blog JMP pourrait vous aider à réaliser ce type de régression sur un cas d'utilisation très similaire : Adaptation de fonctions par morceaux avec la plateforme non linéaire de JMP
J'espère que ceci vous aidera,
Salut @MedianRooster10 ,
Merci pour le tableau de données, cela aide à mieux comprendre les choses.
Si vous n'avez pas besoin de faire un ajustement des moindres carrés pour toutes vos données, mais juste un certain segment ou plusieurs segments, je pense toujours que l'utilisation d'une sorte de colonne d'identification est la voie à suivre et de l'utiliser dans le modèle comme soit une variable BY ou comme filtre de données local. Je suppose également que vous devrez peut-être faire cela pour de nombreuses tables ou colonnes de données, ce qui signifie que les scripts seraient en fait un très bon moyen de procéder.
Si vous vouliez le faire avec un peu de script et le reste en interfaçant avec JMP, vous trouverez ci-dessous un petit code qui triera votre table de données, créera une nouvelle table de données, générera une colonne appelée :Segment puis attribuera une valeur au segment de choix. Dans le code, la cible est la valeur actuelle cible - j'ai choisi 10 et la plage est le nombre de points de données de chaque côté. si vous effectuez ensuite une méthode des moindres carrés standard régulière et utilisez la colonne :Segment comme filtre de données local, vous pouvez alors sélectionner le segment 2 et obtenir les moindres carrés adaptés aux données.
Names Default To Here( 1 );
Current Data Table() << Sort( By( :"Current(A)"n ), Order( Ascending ), Output Table( "Sorted.jmp" ) );
dt = Data Table("Sorted");
dt << New Column( "Segment", "Continuous", "Ordinal" );
range = 5; //rows to group on either side of target
target = 10; //5A
rows = Current Data Table() << Get Rows Where( (:"Current(A)"n >= target - 0.3 & :"Current(A)"n <= target + 0.3) );
For( i = 1, i <= N Rows(dt), i++,
If(
i < rows - range, :Segment[i] = 1,
(i >= rows - range & i <= rows + range), :Segment[i] = 2,
i > rows + range, :Segment[i] = 3
)
);Vous obtenez une sortie qui ressemble à ceci.

Si vous utilisez la colonne Segment comme variable BY dans l'ajustement du modèle SLS, lorsque vous obtenez votre modèle de données, vous pouvez alors maintenir la touche CTRL enfoncée et cliquer avec le bouton gauche sur le bouton rouge à côté de l'un des noms de « Tension de réponse » et sélectionnez Enregistrer les colonnes > Formule de prédiction, ce qui enregistrera une colonne de formule de prédiction dans la table de données où une équation différente est utilisée, en fonction du numéro de segment.



C'est certainement une façon de procéder.
Une autre façon de le faire est de créer votre graphique de la tension par rapport au courant dans le générateur de graphiques, puis d'utiliser l'outil lasso (à côté de la loupe, sous les menus) pour sélectionner les données que vous souhaitez ajuster.

Ensuite, allez Lignes > Sélection de lignes > Inverser la sélection de lignes.

Ensuite, faites un clic droit sur l'un des numéros de ligne et sélectionnez Masquer et exclure. Ensuite, lorsque vous accédez à la plateforme Modèle pour vos moindres carrés standard, vous pouvez modéliser uniquement les points de données qui ne sont ni masqués ni exclus.
Dans l'exemple ci-dessous, vous pouvez voir le modèle et l'ajustement SLS aux données. À partir du tracé des résidus par prévision, vous pouvez voir une certaine courbure, j'ai donc ajouté un terme Courant*Courant, et vous obtenez un bien meilleur ajustement avec des résidus légèrement plus aléatoires.


Si vous connaissez la forme fonctionnelle de la formule pour les différentes sections par morceaux de vos données, je procéderais de la même manière que Victor l'a mentionné en utilisant la plate-forme non linéaire. Mais vous devez connaître la forme fonctionnelle de chaque élément et savoir où « découper » les données.
Entre cela et ce que Victor a posté, vous devriez en avoir assez pour commencer.
J'espère que cela t'aides!,
DS