アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCEL2002でSTDEV関数を用い標準偏差を出力しておりまして、通常対象となる数値(データ)が全て同じ値となる場合は平均値も同じ値となるため標準偏差"0"となるかと思うのですが、数値が3.974でn数が3,5,6,7の場合"0.0000000596…"のように"0"にならず、頭を悩ませております。
そこで質問なのですが、ズバリ『何故"0"という結果が出ないのか』です。単純な事かもしれませんが有識者の皆様、是非ご教授下さいますようお願い申し上げます。

A 回答 (3件)

エクセルの浮動小数点の計算桁数は確か16桁です。


無限の桁で計算しませんので当然誤差が生じます。
いまの場合を本来無限の桁数を計算すれば0になるはずですが,
有限桁で行うと0にならない場合もあります。
単純な話。
1/3=0.333333333333・・・・
両辺に3をかけると左辺は1になりますが右辺は0.99999999・・・
ですよね。
特に浮動小数点の10進数を2進数の浮動小数点であらわすと0.5とか0.25とかで無い限り,無限桁でないとあらわせませんから,なおさらです。
エクセル2003では多少計算精度が向上しておりこのようなことが起こりにくくはなっているようです。
以下のリンクを参考にしてください。

こういう場合は有効数字の考え方を導入して,もとのデータの有効数字が4桁の場合は標準偏差も4桁と考えて5桁目を四捨五入すべきです。

参考URL:http://support.microsoft.com/kb/826112/ja
    • good
    • 0
この回答へのお礼

早速の回答有難う御座います。
なぜ問題にしたかというと、出力された標準偏差の値を別の計算で参照しており、その結果が不自然な値となったからです。
実際は小数点以下4位程度を表示し運用しているため、『表示桁数で計算する』オプションを有効にして対処しました。
大変参考になりました。有難う御座いました。

お礼日時:2007/02/24 02:16

こんばんは。



>ズバリ『何故"0"という結果が出ないのか』

それは、簡単です。数値が3.974 なら、そのデータを1000 倍すればよいです。そして、出てきた値を 1000分の1にすればよいです。(0なら必要はありませんが)

小数点は、それを表現するために、元から丸め誤差が存在している可能性が強いので、プログラムなどでは、整数計算するというのが、コンピュータの常識なのですが、こうした表計算では、いくつかの方法があります。人によって好みもありますが、あまり安易に数値そのものを処理しないほうがよいようです。こういう問題は、精度をどこまで求めるか、ということを最初に念頭においてから、処理したほうがよいです。

つまり、#1 さんのご指摘のように、"0.0000000596…"のような数値で、元の桁数は、小数点第3位までですから、第4位を四捨五入か、切捨てにしますから、これは、0とみなされます。そういう論理が、あまり好まれないようでしたら、1000倍にするという方法があるわけです。
    • good
    • 0
この回答へのお礼

回答有難う御座います。
なるほど、整数で計算させるのですね。
とても参考になりました。有難う御座いました。

お礼日時:2007/02/24 02:17

たぶんコンピュータの誤差が原因でしょう。



現在のコンピュータは内部では2進数で計算していますが,小数が付いている10進数を2進数に変換するとほとんどの数値が循環小数になってしまいます。そのため,誤差が出ていると思われます。

> "0.0000000596…"のように

標準偏差の概念からすれば,この数値は"0"とみなせます(この程度ずれていても実害は無い)。
平均点の偏差値を50とするために50を足してみてください。50.0000000596・・・となるかもしれませんが,50と同じ(平均点と同じ)とみなせるでしょう。
    • good
    • 0
この回答へのお礼

早速の回答有難う御座います。
演算誤差ということですね。本回答を受け確信致しました。
有難う御座いました。

お礼日時:2007/02/24 02:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!