從交叉表轉移到新表時舍入錯誤你好,
我正在使用 JMP 版本 16。
我正在從 CrossTab 表中傳輸資料。我要求它四捨五入到小數點後 3 位。然後,它會將資料儲存為字串,該字串將用於將結果列印到表格中。請參閱下面的程式碼。
// 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 ) || "]" );
對於該報道我有兩個疑問:
1. 為什麼指定報告 3 位小數,但將 0.019 報告為 0.02,而不是 0.020?
2. 以前這個方法可以正常工作,但現在不行了——它會把 0.0015 的值四捨五入為 0.001,而不是 0.002。你知道為什麼會這樣嗎?該如何修復?我希望它保持正常的捨入規則(4 位元或更少向下取整,5 位元或更高向上取整)。
基礎資料分析與建模回覆:從交叉表轉移到新表時出現捨入錯誤1. 我認為如果你希望在 JMP 中保留這些額外的零,你必須指定格式並將其轉換為字串
Format(1.100, "Fixed Dec", 10, 3)
2. 你確定你四捨五入的是 0.0015 而不是其他數字嗎?你的矩陣中實際值是多少?即使平台顯示的是 0.0015,實際值很可能更準確,例如 0.00149,它最終會被四捨五入為 0.0015。
回覆:從交叉表轉移到新表時捨入錯誤你好,Jarmo,
謝謝您的回覆!
1. 我會嘗試一下,謝謝。
2. 它應該轉到交叉表並從第二列、第 1 行、第 3 行和第 4 行(平均值 [i]-平均值 [j]、下限 CL 差異和上限 CL 差異)中取出。
請參考下圖。

平均差異用這一行列印
meandiff = Round( crossTab[1, 2] , 3 );
它應該四捨五入到小數點後三位,而且應該按照正常的捨入規則進行四捨五入。但它四捨五入不正確,我不明白哪裡出了問題。
回覆:從交叉表轉移到新表時捨入錯誤你檢查過它的實際值嗎?你在JMP報表中看到的那些數值很可能已經是四捨五入的數值了。這是在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);

回覆:從交叉表轉移到新表時捨入錯誤我無法讓它運行以下行
m = Report(obj)[ :Result , :Person , "LSMeans Differences Student's t" , CrosstabBox(1)] << get as matrix;
於是我打開了有序差異報告。在這裡我可以看到,總差異為 0.0015000,因此它沒有被雙精度舍入。

回覆:從交叉表轉移到新表時捨入錯誤您已經有了針對您的案例提取矩陣的腳本
crossTab = reportFitmod[Outline Box( "LSMeans Differences Student's t" )][CrosstabBox( 1 )] << get as matrix;
只需透過列印交叉表來驗證值
回覆:從交叉表轉移到新表時捨入錯誤啊,謝謝!我把結果拿出來,發現這是因為當四捨五入到小數點後兩位而不是三位時,四捨五入的方式就不一樣了。
交叉製表 = [0 0.00149999999999987, 0 0.000298142396959379, 0 0.000835697341910363, 0 0.002164302658 -0.00149999999999987 0, 0.000298142396959379 0, -0.00216430265808938 0, -0.000835697341910363 0];
非常感謝你的幫助:)