Tutti,
Sto cercando di calcolare intervalli di confidenza di alcuni dati. Sono consapevole che è possibile ottenere ciò utilizzando quanto segue:
// Gets me what I want
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Obj = dt << Distribution( Column( :Age, :Weight ) );
Obj << Confidence Interval(0.95);
// How to achieve using matrix
Mat = dt << Get As Matrix;
Obj = Distribution(Mat[0,1]) << Confidence Interval(0.95);
Quanto sopra diventa particolarmente difficile se volessi farlo ulteriormente dai gruppi, supponiamo che dovessi raggruppare per età? Qualsiasi consiglio è apprezzato
Non farei la manipolazione della matrice, farei qualcosa del genere,
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Obj = dt << Distribution( Column( :height, :weight ), by(:sex), "Invisible" );
Obj << Confidence Interval(0.95);
Report(Obj[1])["Confidence Intervals"][TableBox(1)] << make combined data table;
Obj << close window;
È possibile eseguire funzioni matriciali, ma richiederebbe la ricerca di tutte le uniche per gruppi (età o sesso), quindi indicizzare le matrici. C'è una funzione di matrice CDF che potrebbe essere di interesse. Lo script di seguito è un FYI e non raccomandato, ma qui ci sono le formule. La matrice risultante non ha i gruppi o la variabile. Raccomando il metodo sopra.
Mat = dt << Get As Matrix;
//Obj = Distribution(Mat[0,1]) << Confidence Interval(0.95);
/* CDF function */
/* only one column at a time get weight*/
{Quant, CumProb} = CDF( Mat[0,3] );
mxb = V Mean(Mat);
msd = V Std(Mat);
mdf = V Sum( !IsMissing(Mat) ) -1;
xb_lci = mxb - msd:/sqrt(mdf+1) :* tquantile(0.975,mdf);
xb_uci = mxb + msd:/sqrt(mdf+1) :* tquantile(0.975,mdf);
sd_lci = msd :* sqrt( mdf :/ ChiSquareQuantile(0.975,mdf));
sd_uci = msd :* sqrt( mdf :/ ChiSquareQuantile(0.025, mdf));
show(Quant, CumProb, mxb[3], msd[3], xb_lci[3], xb_uci[3], sd_lci[3], sd_uci[3]);