Medbb's blog

日々の中でなにかしらまとまった話をしたときや調べたときの内容を忘れないように書き留めたページです

Medbb Webサイトはコチラ

EXCELで発生する誤差および回避する方法について(有効桁数大切という話だけど私もexcelも一緒と判定したのに)

EXCELで計算を行っていると,誤差が知らぬ間に発生している事ないですか?

先日,そのような事象に遭遇して焦ったもので解決法含め示しておきます.

統計学2023(統計の復習用)

https://medbb.net/education/medbbstat2023/index.php

というオンライン講義を年末年始にかけて行っていますが,その時に以下の例題の部分で提供したcsvデータをエクセルで計算しながら解説したのですが,受講生の方が自身でエクセルを使った結果と違うことを教えていただきました.

それは私がaverage関数で平均を求めていたのですが,受講生の方は平均値を手打ちしていたところの違いに起因するものでした.

 

以下のリンク先のページ内にあるcsvファイルがその時に用いていたものです

例題1-3)(統計学(1)尺度と度数-統計学2023(統計の復習用))

https://medbb.net/education/medbbstat2023/index.php#1-3

真ん中あたりに
medbbstat2023-0101.csv

のリンクがありますので,ご自身で確認される方は,そちらからダウンロードしてください

 

さて,このデータを使いまわしして以下の例題に取り組んでもらいました

例題2-3)

あるクラスの生徒の身長について
a)この集団の分散を求めよ
b)この集団の標準偏差を求めよ

 

下図の左側が私が解説で作成したシート 右側が受講生の方が仰った内容を基に作成した想定シート.違うところはB22セルのみです.

喋りながら偏差の和が0にならないのはおかしいことと触れておりましたが,誤差だろうと思っていましたが,件のB22セルを直打ちすると0になって驚きました

https://medbb.net/education/medbbstat2023/img/medbbstat2023-b01.png

 

ならばaverage関数で求めたB22セルの平均値に問題があるのだろうと桁数を拡げてみてみると150.0000000000000000000000000000 となっています

https://medbb.net/education/medbbstat2023/img/medbbstat2023-b02.png

 

これで違うなんで・・・と腑に落ちないのですが,果たして150と同値ではないのでしょうか?

そこで,=IF('私のエクセルシート'!B22='受講者のエクセルシート'!B22,1,0)
と検証したら一緒(1)という結果が返ってきました.!!

ということで両者のセルがどの程度同値と判定されているのか比較しました

https://medbb.net/education/medbbstat2023/img/medbbstat2023-b03.png

最終的に求めた分散(D22セル)に関しては一緒という恰好でした.

 

いずれにしても一目どころかエクセル自身も判断できないややこしい問題です

解決策としては,測定値については有効桁数に基づき処理してから計算するのが妥当と思います.今回の場合は有効桁数4桁になりますので,今回は身長のデータですので全て小数点下一桁迄が有効.身長の平均の部分だけround関数で処理しました.

https://medbb.net/education/medbbstat2023/img/medbbstat2023-b04.png

 

有効桁数の大切さを再認識した一日でした.