Arrotondamento errato durante il trasferimento da una tabella a campi incrociati a una nuova tabellaCIAO,
Sto utilizzando la versione 16 di JMP.
Sto trasferendo dati da una tabella CrossTab. Ho chiesto di arrotondare a 3 cifre decimali. Quindi salva i dati in una stringa, che verrà utilizzata per stampare i risultati in una tabella. Vedi codice qui sotto.
// Get data from CrossTab table
crossTab = reportFitmod[Outline Box( "LSMeans Differences Student's t" )][CrosstabBox( 1 )] << get as matrix;
meandiff = Round( crossTab[1, 2] , 3 );
lowerCL = Round( crossTab[3, 2] , 3 );
upperCL = Round( crossTab[4, 2] , 3 );<BR /><BR /> // Create the Difference in mean and CL string<BR />Insert Into( dif, Char( meandiff ) || " [" || Char( lowerCL ) || " ; " || Char( upperCL ) || "]" );
Ho due domande sulla segnalazione:
1. Perché, ad esempio, 0,019 viene riportato come 0,02 anziché 0,020 quando è specificato di riportare 3 decimali?
2. Prima funzionava, ma ora non più: prende il valore 0,0015 e lo arrotonda a 0,001 invece di 0,002. Sai perché succede e come risolvere il problema? Voglio che mantenga le normali regole di arrotondamento (4 o meno arrotonda per difetto e 5 o più arrotonda per eccesso).
Analisi e modellazione dei dati di baseR: Arrotondamento errato durante il trasferimento da una tabella a campi incrociati a una nuova tabella1. Penso che se desideri avere quegli zeri extra in JMP, devi specificare il formato e convertirlo in stringa
Format(1.100, "Fixed Dec", 10, 3)
2. Sei sicuro di arrotondare a 0,0015 e non a qualcos'altro? Qual è il valore reale nella matrice che hai? Anche se la piattaforma ti mostra 0,0015, il valore è molto probabilmente più accurato nella realtà, ad esempio 0,00149 che verrebbe arrotondato a 0,0015.
R: Arrotondamento errato durante il trasferimento da una tabella a campi incrociati a una nuova tabellaCiao Jarmo,
Grazie per la risposta!
1. Proverò, grazie.
2. Dovrebbe andare alla tabella incrociata e prendere dalla seconda colonna, riga 1, riga 3 e riga 4 (Media[i]-Media[j], Dif. CL inferiore e Dif. CL superiore).
Vedere l'immagine qui sotto.

La differenza media è stampata con questa linea
meandiff = Round( crossTab[1, 2] , 3 );
Dovrebbe essere arrotondato a tre decimali e secondo le normali regole di arrotondamento. Semplicemente non è stato arrotondato correttamente e non riesco a capire cosa non vada.
R: Arrotondamento errato durante il trasferimento da una tabella a campi incrociati a una nuova tabellaHai controllato i valori effettivi? I valori che vedi nel report JMP sono molto probabilmente già arrotondati. Questo avviene in JMP18.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Drug.jmp");
obj = Fit Model(
Y(:y),
Effects(:Drug, :x),
Personality(Standard Least Squares),
Emphasis(Effect Leverage),
<< Run(:Drug << {LSMeans Student's t(.05, Ordered Differences Report(1))})
);
m = Report(obj)["Response y","Drug","LSMeans Differences Student's t",CrosstabBox(1)] << get as matrix;
show(m);

R: Arrotondamento errato durante il trasferimento da una tabella a campi incrociati a una nuova tabellaNon sono riuscito a far eseguire la seguente riga
m = Report(obj)[ :Result , :Person , "LSMeans Differences Student's t" , CrosstabBox(1)] << get as matrix;
Quindi ho aperto il report delle differenze ordinate. Qui vedo che la differenza totale è 0,0015000, quindi non è arrotondata due volte.

R: Arrotondamento errato durante il trasferimento da una tabella a campi incrociati a una nuova tabellaAvevi già lo script per il tuo caso per estrarre la matrice
crossTab = reportFitmod[Outline Box( "LSMeans Differences Student's t" )][CrosstabBox( 1 )] << get as matrix;
Basta verificare i valori stampando la tabella incrociata
R: Arrotondamento errato durante il trasferimento da una tabella a campi incrociati a una nuova tabellaAh, grazie! Ho tirato fuori i risultati e vedo che è perché quando arrotonda a 2 decimali invece che a 3, allora l'arrotondamento è diverso.
crossTab = [0 0.001499999999999987, 0 0.000298142396959379, 0 0.000835697341910363, 0 0.00216430265808938, -0.00149999999999987 0, 0.000298142396959379 0, -0.00216430265808938 0, -0.000835697341910363 0];
Grazie mille per il tuo aiuto:)