régression linéaire dans l'éditeur de formulesBonjour,
J'étudie la pente d'une variable biologique dans le temps dans le cadre d'une étude clinique utilisant la régression linéaire.
Est-ce possible de calculer la pente dans une nouvelle colonne, avec l'éditeur de formule? Ou un autre moyen de générer une telle colonne?
J'utilise JMP 12.
Merci de votre aide,
Florent
Re: régression linéaire dans l'éditeur de formuleVoici deux exemples de formules de colonne permettant de calculer les pentes de régression longueur-poids. La table d'exemple "Big Class" est utilisée.
La première calcule la pente en fonction de toutes les observations et la montre dans la première ligne uniquement au lieu de répéter le même nombre dans la colonne.
La seconde calcule la pente de manière incrémentielle (ce qui peut être ce que vous demandez) et permet de voir comment la pente change / se stabilise au fur et à mesure que plus de données sont incluses et finalement convergent avec la pente de l'échantillon complet (c'est-à-dire le premier exemple).
Pour appliquer cela à vos propres données, copiez la formule entière entre parenthèses dans F = Expr () et collez-le dans l'éditeur de formule et sous-titrez poids et la taille pour vos variables.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Slope",
Formula(
If(Row() == 1,
Col Sum((:height - Col Mean(:height)) * (:weight - Col Mean(:weight))) /
Col Sum((:height - Col Mean(:height)) ^ 2),
.
)
)
);
F = Expr(
Eval(
Eval Expr(
Col Sum(
(:height - Col Mean(:height, Row() <= Expr(Row()))) * (:weight
-Col Mean(:weight, Row() <= Expr(Row()))),
Row() <= Expr(Row())
) / Col Sum(
(:height - Col Mean(:height, Row() <= Expr(Row()))) ^ 2,
Row() <= Expr(Row())
)
)
)
);
dt << New Column("Incremental Slope", Formula(Name Expr(F)));
Re: régression linéaire dans l'éditeur de formuleIl est faux de placer la valeur de la pente dans une colonne du même tableau que les données.
Mais si c'est bien ce que vous vouliez dire et que vous voulez éviter l'utilisation d'une plate-forme JMP, voici une façon de le faire dans JMP 12:
NamesDefaultToHere(1);
myLinearRegression =
Function({x, y}, {Default Local},
// Add the unit vector to the design matrix
x = J(NRow(x), 1, 1)||x;
// Get the parameters
betas = Transpose(Inv(x`*x)*x`*y);
);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
xVals = Column(dt, "height") << getValues;
yVals = Column(dt, "weight") << getValues;
betas = myLinearRegression(xVals, yVals);
slope = betas[2];
dt << NewColumn("Slope of weight vs. height", Numeric, Continuous, Values(Repeat(slope, NRow(dt))));
Faites "Fichier> Nouveau> Nouveau script", coupez et collez le JSL ci-dessus dans cette fenêtre, puis "Edition> Exécuter le script".
Bien sûr, il est toujours judicieux de tracer les données avant de faire confiance aux pentes que vous calculez, et c’est la raison pour laquelle «Analyser> Ajuster par X» est conçu.