Formula della colonna di adattamento e intercetta, aiuto con un erroreVersione JMP18.1.1
Sto lavorando con dati di misurazione, dove vorrei calcolare una linea di adattamento in un particolare punto dati, utilizzando i punti dati adiacenti. Per poi ottenere un'intercetta sull'asse x per y=0.
Guardandomi intorno e provando a risolvere questo problema da solo, sembra che ci riesca usando la funzione "Regressione lineare" o "Risoluzione dei minimi quadrati" in JMP.
L'ho fatto in una formula di colonna (con un'istruzione if per identificare il punto dati su cui effettuare la valutazione):
x = J( 2, 1, 0 );
y = J( 2, 1, 0 );
x[1, 1] = Lag( :y_column, 1 );
x[2, 1] = Lag( :y_column, -1 );
y[1, 1] = Lag( :x_column, 1 );
y[2, 1] = Lag( :x_column, -1 );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
Questo codice produce l'output corretto, ma quando viene eseguito genera un errore:
'Impossibile stimare la varianza delle stime dei parametri perché il rango di X è uguale al numero di righe di X'
Non capisco davvero qual è il problema qui. Voglio solo l'intercettazione in ogni caso. C'è un modo semplice per risolvere questo problema? O disattivare l'avviso?
Posso provare un approccio simile con la funzione dei minimi quadrati, ma genera lo stesso errore.
Ho creato una tabella di esempio che mostra il problema. Riesegui la formula su quella tabella per vedere l'errore.
Grazie
Analisi e modellazione dei dati di baseRe: Formula della colonna della retta di adattamento e dell'intercetta, aiuto con un erroreSembra che io stesso abbia risolto immediatamente il problema aumentando il numero di punti dati nella regressione a 3, incluso il punto dati corrente.
x = J( 3, 1, 0 );
y = J( 3, 1, 0 );
x[1, 1] = Lag( :y_column, 1 );
x[2, 1] = :y_column;
x[3, 1] = Lag( :y_column, -1 );
y[1, 1] = Lag( :x_column, 1 );
y[2, 1] = :x_column;
y[3, 1] = Lag( :x_column, -1 );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
Questo impedisce che l'errore si presenti, il che potrebbe andare bene per ora. Vorrei comunque calcolare eventualmente le intercettazioni da soli 2 punti in futuro. Quindi la mia domanda rimane.
Grazie
Re: Formula della colonna della retta di adattamento e dell'intercetta, aiuto con un errorePotresti includere il punto in cui stai eseguendo il calcolo (quindi 3 punti invece di due)
If(Row() > 1 & Row() < Col Number(:y_column),
Linear Regression(:y_column[Index(Row() - 1, Row() + 1)]`, :x_column[Index(Row() - 1, Row() + 1)]`)[1][1];
,
.
);
Re: Formula della colonna della retta di adattamento e dell'intercetta, aiuto con un erroreOra ho un problema con il valore di intercetta restituito che non è corretto...
Per dimostrarlo dovrò mostrare un estratto di dati reali. File allegato.
Sto valutando l'intercetta nella riga in cui un'altra colonna è al suo valore massimo.
Lo script prende correttamente i valori dalle righe adiacenti e vedo nell'output del registro che sta formando correttamente la matrice.
Fornisce un valore di output per l'intercetta di '-1053478758'. Ma se prendo quei valori x/y manualmente in una tabella separata ed eseguo un adattamento di linea bivariato su di essi, fornisce un'intercetta di '-1,22', che è corretta.
Codice:
If( :"dlogIds/dVgs"n == Col Maximum( :"dlogIds/dVgs"n ),
x = J( 3, 1, 0 );
y = J( 3, 1, 0 );
x[1, 1] = Lag( :I_Drain Abs, 1 );
x[2, 1] = :I_Drain Abs;
x[3, 1] = Lag( :I_Drain Abs, -1 );
y[1, 1] = Lag( :V_GATE, 1 );
y[2, 1] = :V_GATE;
y[3, 1] = Lag( :V_GATE, -1 );
Show( x );
Show( y );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
)
Non riesco proprio a capire perché non sia giusto...
Re: Formula della colonna della retta di adattamento e dell'intercetta, aiuto con un errorePotrebbe trattarsi di un problema di accuratezza/svista/bug. Puoi contattare il supporto JMP @mzwald
Names Default To Here(1);
ys = [-0.999986, -1.49994, -1.99997];
xs = [1.3500e-12, 1.0600e-10, 1.9700e-9];
xs2 = Matrix(Eval List({1.3500e-12*10^12, 1.0600e-10*10^12, 1.9700e-9*10^12}));
ls = Linear Regression(ys, xs, << print to log);
ls2 = Linear Regression(ys, xs2, << print to log);
dt = New Table("",
New Column("Y", Numeric, Continuous, Values(ys)),
New Column("X1", Numeric, Continuous, Values(xs)),
New Column("X2", Numeric, Continuous, Values(xs2)),
);
biv1 = dt << Bivariate(Y(:Y), X(:X1), Fit Line({Line Color({230, 159, 0})}));
biv_estimates1 = Report(biv1)[Outline Box("Parameter Estimates"), Number Col Box("Estimate")];
Show(biv_estimates1 << get);
biv2 = dt << Bivariate(Y(:Y), X(:X2), Fit Line({Line Color({230, 159, 0})}));
biv_estimates2 = Report(biv2)[Outline Box("Parameter Estimates"), Number Col Box("Estimate")];
Show(biv_estimates2 << get);
Write();Re: Formula della colonna della retta di adattamento e dell'intercetta, aiuto con un erroreMi chiedevo se fosse un problema di precisione. Sembra che qualcosa in quella funzione non gestisca l'input con cifre significative sufficienti.
Per ora funziona usando la tua correzione e moltiplicando i valori dell'asse x per ottenere un valore gestibile.
Grazie!
Re: Formula della colonna della retta di adattamento e dell'intercetta, aiuto con un erroreCiao @GRoberts86 : Per completezza, il messaggio di "errore" "Impossibile stimare la varianza delle stime dei parametri perché il rango di X è uguale al numero di righe di X" è dovuto al fatto che hai solo due punti e li stai collegando con una linea retta. Pertanto, non c'è variabilità attorno alla linea... vale a dire, non stai realmente eseguendo una procedura statistica , stai solo collegando matematicamente due punti. Tuttavia, stai utilizzando un pacchetto statistico per farlo, tramite l'algebra delle matrici come mostrato qui.
https://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/13/lecture-13.pdf.
La procedura statistica che hai chiamato (Linear Regression( y, x )[1]) tenta di fare molto di più che collegare matematicamente due punti. Fornisce anche intervalli di confidenza, valori p, ecc. per la pendenza e l'intercetta. Ma nel tuo caso, poiché hai solo due punti (rango di X =2), non c'è variabilità e quindi nessun intervallo di confidenza, ecc.
Quindi, per farla breve, l'"errore" è in realtà solo una notifica che indica che non ci sarà alcun output statistico (diverso da quello matematico ).
Re: Formula della colonna della retta di adattamento e dell'intercetta, aiuto con un errore@MRB3855
Me ne sono reso conto dopo averci pensato un po'. Se lavori solo con 2 punti, allora la buona vecchia "equazione di una retta" y=mc+c è la cosa giusta da usare.
Comunque una bandiera "silenziosa" sarebbe carina haha.