Re: Calcolo di un p-value in uno scriptCi sono un paio di cose qui:
- Lo script sta calcolando il valore p in base a critico t-value (calcolato sulla prima riga) invece del osservato valore t. Quest'ultimo è la differenza nelle medie divisa per l'errore standard della differenza.
- La chiamata t Distribution() sta calcolando la proporzione della distribuzione inferiore al valore t, che non è esattamente il valore p che stai cercando. Il calcolo del valore p a due code richiede una semplice aritmetica da qui (vedi esempio).
Se possiamo presumere che la tabella dei dati abbia almeno le dimensioni, le medie e le deviazioni standard del campione per gruppo nelle proprie colonne, allora ecco alcuni JSL che faranno quello che vuoi. Provalo sulla tabella di esempio allegata. Si noti che ho incluso un passaggio intermedio per il calcolo di una colonna di deviazione standard in pool per migliorare la leggibilità della formula per la colonna del valore t.
Names Default to Here( 1 );
dt = Data Table( "Example.jmp" );
dt << New Column( "Pooled stdev",
Numeric,
Continuous,
Format( "Fixed Dec", 15, 3 ),
Formula(
Sqrt( ((:Group A n - 1) * :Group A stdev ^ 2 + (:Group B n - 1) * :Group B stdev ^ 2) / (:Group A n + :Group B n - 2) )
)
);
dt << New Column( " t-Value",
Numeric,
Continuous,
Format( "Fixed Dec", 15, 3),
Formula(
(:Group A mean - :Group B mean) / (:Pooled stdev * Sqrt( 1 / :Group A n + 1 / :Group B n) )
)
);
dt << New Column( "p-Value",
Numeric,
Continuous,
Format( "Fixed Dec", 15, 3 ),
Formula(
( 1 - t Distribution( Abs( :"t-Value"n ), :Group A n + :Group B n - 2 ) ) * 2
)
);
Re: Calcolo di un p-value in uno scriptCiao Ross,
Grazie per la tua risposta, come ti sembra
dt5 << New Column( "Difference in Mean", Numeric, Continuous, Format( "Fixed Dec", 15, 3 ), Formula( :"Mean(Data) VPP"n - :"Mean(Data) Commercial"n ) );
dt5 << New Column( "Pooled Std Dev", Numeric, Continuous, Format( "Fixed Dec", 15, 3 ), Formula( sqrt(((:"N(Data) VPP"n - 1)* :"Std Dev(Data) VPP"n ^ 2 + (:"N(Data) Commercial"n - 1) * :"Std Dev(Data) Commercial"n ^ 2 ) / (:"N(Data) VPP"n + :"N(Data) Commercial"n - 2)))) ;
dt5 << New Column( "Lower 90% Confidence Interval", Numeric, Continuous, Format( "Fixed Dec", 15, 3 ), Formula( (:"Mean(Data) VPP"n - :"Mean(Data) Commercial"n ) - t Quantile (0.95,:"N(Data) VPP"n + :"N(Data) Commercial"n -2) * (:Pooled Std Dev * sqrt(( 1/:"N(Data) VPP"n) + (1/:"N(Data) Commercial"n )) )));
dt5 << New Column( "Upper 90% Confidence Interval", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula( (:"Mean(Data) VPP"n - :"Mean(Data) Commercial"n ) + t Quantile (0.95,:"N(Data) VPP"n + :"N(Data) Commercial"n -2) * (:Pooled Std Dev * sqrt(( 1/:"N(Data) VPP"n) + (1/:"N(Data) Commercial"n )) )));
dt5 << New Column( "Pooled Variance", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula(:Pooled Std Dev ^ 2));
dt5 << New Column(" Std Error for t-Value", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula(sqrt (:Pooled Variance * ( 1/:"N(Data) VPP"n + 1/ :"N(Data) Commercial"n ) )));
dt5 << New Column(" t-stat", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula((Abs (:"Mean(Data) VPP"n - :"Mean(Data) Commercial"n - 0)) / :"Std Error for t-Value"n));
dt5 << New Column( "one tail p-Value", Numeric, Continuous, Format( "Fixed Dec", 15, 4), Formula(1 - t Distribution (:"t-stat"n,:"N(Data) VPP"n + :"N(Data) Commercial"n - 2 )));
dt5 << New Column( "two tail p-value", Numeric, Continuous, Format( "Fixed Dec", 12, 4 ),Formula( :"one tail p-Value"n * 2 ));
Re: Calcolo di un p-value in uno scriptNon ho esaminato ogni equazione in dettaglio, quindi ricontrolla tutto anche tu. Ma detto questo, ho colto solo una cosa che probabilmente vorrai cambiare: la formula per la statistica t prende il valore assoluto della differenza nelle medie, il che significa che la tua statistica t risulterà sempre positiva quando dovrebbe essere negativo ogni volta che la media VPP è inferiore alla media commerciale. Ho utilizzato la funzione Abs() nel mio esempio solo per assicurarmi che il valore p fosse calcolato correttamente indipendentemente dal segno della statistica t. Probabilmente vorrai fare lo stesso.
Re: Calcolo di un p-value in uno scriptGrazie ancora Ross, molto apprezzato
Ri: Calcolo di un p-value in uno scriptGrazie per la soluzione.
Calcolo di un valore p in uno scriptCiao a tutti,
So che sto facendo qualcosa di sbagliato qui, ma non riesco a vederlo al momento, desidero il valore p a due code per una differenza tra due medie e sto utilizzando il seguente script
dt5 << New Column(" t-Value", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula( t Quantile (0.95,:"N(Data) VPP"n + :"N(Data) Commercial"n -2)));
dt5 << New Column( "p-Value", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula( t Distribution (:"T-Value"n,:"N(Data) VPP"n + :"N(Data) Commercial"n - 1 )));qualcuno può per favore offrire qualche consiglio.
Grazie,
Mick.
Automazione e scriptingRicerche sui consumatori e sul mercatoRi: Calcolo di un valore p in uno scriptNon è necessario prendere il valore assoluto della differenza tra le medie quando si calcola la statistica t. Il valore assoluto non viene utilizzato nei calcoli del test t standard perché perderebbe informazioni sulla direzione della differenza, che è importante per l'interpretazione dei risultati. Se la media del primo gruppo è inferiore alla media del secondo gruppo, la statistica t sarà naturalmente negativa e ciò si rifletterà correttamente nel calcolo senza utilizzare il valore assoluto.