Falsche Rundung beim Übertragen von der Kreuztabelle in die neue TabelleHallo,
Ich verwende JMP Version 16.
Ich übertrage Daten aus einer CrossTab-Tabelle. Ich habe die Funktion so konfiguriert, dass sie auf drei Dezimalstellen rundet. Anschließend speichert sie die Daten in einem String, der zum Drucken der Ergebnisse in eine Tabelle verwendet wird. Siehe Code unten.
// 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 ) || "]" );
Ich habe zwei Fragen zur Berichterstattung:
1. Warum wird beispielsweise 0,019 als 0,02 und nicht als 0,020 gemeldet, wenn angegeben ist, dass 3 Dezimalstellen gemeldet werden sollen?
2. Das hat früher funktioniert, jetzt aber nicht mehr – es nimmt den Wert 0,0015 und rundet ihn auf 0,001 statt auf 0,002. Wissen Sie, warum das so ist und wie man es beheben kann? Ich möchte, dass die normalen Rundungsregeln beibehalten werden (4 oder weniger Rundungen nach unten und 5 oder mehr Rundungen nach oben).
Grundlegende Datenanalyse und -modellierungBetreff: Falsche Rundung beim Übertragen von einer Kreuztabelle in eine neue Tabelle1. Ich denke, wenn Sie diese zusätzlichen Nullen in JMP haben möchten, müssen Sie das Format angeben und in eine Zeichenfolge konvertieren
Format(1.100, "Fixed Dec", 10, 3)
2. Sind Sie sicher, dass Sie 0,0015 und nicht etwas anderes runden? Was ist der tatsächliche Wert in Ihrer Matrix? Selbst wenn die Plattform 0,0015 anzeigt, ist der Wert in Wirklichkeit höchstwahrscheinlich genauer, z. B. 0,00149, was dann auf 0,0015 gerundet würde.
Betreff: Falsche Rundung beim Übertragen von einer Kreuztabelle in eine neue TabelleHallo Jarmo,
Vielen Dank für die Antwort!
1. Ich werde das versuchen, danke.
2. Es sollte zur Kreuztabelle gehen und aus der zweiten Spalte, Zeile 1, Zeile 3 und Zeile 4 (Mittelwert[i]-Mittelwert[j], Unterer CL-Differenzwert und Oberer CL-Differenzwert) übernehmen.
Bitte sehen Sie sich das Bild unten an.

Die mittlere Differenz wird mit dieser Linie gedruckt
meandiff = Round( crossTab[1, 2] , 3 );
Es sollte auf drei Dezimalstellen gerundet werden und zwar gemäß den üblichen Rundungsregeln. Es wurde einfach nicht korrekt gerundet und ich kann nicht herausfinden, woran das liegt.
Betreff: Falsche Rundung beim Übertragen von einer Kreuztabelle in eine neue TabelleHaben Sie die tatsächlichen Werte überprüft? Die Werte im JMP-Bericht sind höchstwahrscheinlich bereits gerundet. Dies geschieht 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);

Betreff: Falsche Rundung beim Übertragen von einer Kreuztabelle in eine neue TabelleIch konnte es nicht dazu bringen, die folgende Zeile auszuführen
m = Report(obj)[ :Result , :Person , "LSMeans Differences Student's t" , CrosstabBox(1)] << get as matrix;
Stattdessen habe ich den Bericht zu den geordneten Differenzen geöffnet. Hier kann ich sehen, dass die Gesamtdifferenz 0,0015000 beträgt und daher nicht doppelt gerundet ist.

Betreff: Falsche Rundung beim Übertragen von einer Kreuztabelle in eine neue TabelleSie hatten bereits das Skript für Ihren Fall, um die Matrix zu extrahieren
crossTab = reportFitmod[Outline Box( "LSMeans Differences Student's t" )][CrosstabBox( 1 )] << get as matrix;
Überprüfen Sie die Werte einfach, indem Sie die Kreuztabelle ausdrucken
Betreff: Falsche Rundung beim Übertragen von einer Kreuztabelle in eine neue TabelleAhh, danke! Ich habe die Ergebnisse erhalten und sehe, dass es daran liegt, dass die Rundung auf zwei Dezimalstellen statt auf drei Dezimalstellen anders erfolgt.
crossTab = [0 0.00149999999999987, 0 0.000298142396959379, 0 0.000835697341910363, 0 0.00216430265808938, -0,00149999999999987 0, 0,000298142396959379 0, -0,00216430265808938 0, -0,000835697341910363 0];
Vielen Dank für Ihre Hilfe:)