regressione lineare nell'editor di formuleCiao,
Sto studiando la pendenza di una variabile biologica nel tempo in uno studio clinico, utilizzando la regressione lineare.
È possibile calcolare la pendenza in una nuova colonna, con l'editor di formule? O un altro modo per generare una colonna del genere?
Sto usando JMP 12.
Grazie per l'aiuto,
Florent
Ri: regressione lineare nell'editor di formuleEcco due esempi di formule di colonna per calcolare le pendenze di regressione in lunghezza. Viene utilizzata la tabella di esempio "Big Class".
Il primo calcola la pendenza sulla base di tutte le osservazioni e la mostra solo nella prima riga invece di ripetere lo stesso numero in tutta la colonna.
Il secondo calcola la pendenza in modo incrementale (che può essere quello che stai chiedendo) e permette di vedere come la pendenza cambia / si stabilizza man mano che vengono inclusi più dati e alla fine converge con l'intera pendenza del campione (es. Primo esempio).
Per applicare questo ai propri dati, copiare l'intera formula all'interno delle parentesi in F = Expr () e incollarlo nell'editor di formule e nel sottotitolo peso e altezza per le tue variabili.
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)));
Ri: regressione lineare nell'editor di formuleÈ sbagliato inserire il valore di inclinazione in una colonna nella stessa tabella dei dati.
Ma, se è proprio questo che intendevi e vuoi evitare l'uso di una piattaforma JMP, ecco un modo per farlo in 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))));
Fai 'File> Nuovo> Nuovo script', taglia e incolla il JSL sopra in quella finestra, quindi 'Modifica> Esegui script'.
Naturalmente è sempre una buona idea tracciare i dati prima di fidarsi di qualsiasi pendenza calcolata, ed è per questo che è stato progettato 'Analizza> Adatta Y per X'.