ラウンド関数にエラーがあるようです。下に私はそれが6を返すことを期待するが、私たちが期待するとして、それは、6.5、4.5戻り7,5として、5.5 [その他5.Rのラウンド関数にエラーはありますか?
round(5.5)
# 5
を返します。
説明はありますか?
ラウンド関数にエラーがあるようです。下に私はそれが6を返すことを期待するが、私たちが期待するとして、それは、6.5、4.5戻り7,5として、5.5 [その他5.Rのラウンド関数にエラーはありますか?
round(5.5)
# 5
を返します。
説明はありますか?
この動作は?round
機能のヘルプファイルで説明されています。5を四捨五入のため、IEC 60559規格は に期待されていることを
注意「さえ桁に行く」、使用すること。従って、round(0.5)は0であり、 round(-1.5)は-2です。ただし、これはOSサービスと 表現エラー(例えば0.15が正確に表現されていないため、丸め規則は表現された数字に適用され、 の数字には適用されないため、round(0.15、1)は0.1または0.2)。
round(.5 + 0:10)
#### [1] 0 2 2 4 4 6 6 8 8 10 10
グレッグ雪に別の関連するメール交換:R: round(1.5) = round(2.5) = 2?:でもルールにラウンドの背後にあるロジックは、我々は にしようとしているということである
は、基礎となる連続値を表し、xがから来る場合真に 連続分布ならば、x == 2.5が0であり、 2.5の確率は、すでに2.45と2.54999999999999の間の値から一度丸められているはずです...グレードで学んだ0.5のルール学校、その後二重丸めとは、2.45と2.50との間の値 がすべて3に丸められることを意味します(最初に を2.5に丸めたものです)。これは推定値を上方に偏らせる傾向がある。 バイアスを取り除くには、2.5に丸める前に戻ってください( はしばしば実際的ではありません)。または、半分の時間を切り上げて、 を半分に丸めます。 2.5未満または2.5を超える値が2.5に丸められて表示される可能性はありますが、 で、ほとんどの基礎となるディストリビューションでは50/50に近くなります)。 確率的アプローチは、ラウンド関数をランダムにすることです。 ラウンドする方法を選択しますが、確定的なタイプは ではありません。したがって、「round to even」が選択されました一貫性のあるルールとなり、 は約50/50下がります。
あなたは2.5正確な 値(例えば金)、その後、あなたは10または100で全て 値を乗算し、整数で働いて、その後、バックのみ を変換することによって、より良い行うことを表現する可能性があるデータを扱っている場合最終的な印刷のために。 2.50000001は3に丸めますので、最終印刷まで の精度を維持すると、 が四捨五入される直前に0.000000001(または その他の小数)を追加することができます。それは の見積もりを上向きにすることができます。
私が大学に通っていたとき、数値解析の教授は、数値を丸める方法が正しいことを教えてくれました。常に数値(整数)を丸めてはいけません。これは、(整数)と(整数+1)から等しく離れているためです。合計の誤差(または平均の誤差など)を最小限に抑えるには、その状況の半分を切り上げ、残りの半分を切り捨てる必要があります。 Rプログラマは、私の数値解析の教授と同じ意見を共有しているようです...
"丸め半分"は唯一可能な丸めモードではありません。 'round 'は、OSのサービスが何をするかによって異なります。あなたのシステムが最も近い奇数整数に丸めをするのが好きなようです。どのOSとアーキテクチャを使用していますか? –
私のコンピュータのOSは「Windows 10 Home」です。あなたの説明をありがとう。 –
これは[this](http://stackoverflow.com/questions/12688717/round-up-from-5-in-r)と同じではありませんか? –