パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Excelの統計機能は不正確」記事へのコメント

  • by Anonymous Coward on 2008年10月27日 13時55分 (#1444831)
    なんかデジャブな感じがするんだが、Excelの算術関数・統計関数は精度が悪いとか、バグがあるとかいう話は昔からあったんじゃなかったっけ?(ソース忘れた)
    • Re:デジャブ? (スコア:5, 参考になる)

      by likeamagic (32922) on 2008年10月27日 14時40分 (#1444876)
      いつからかはわかりませんが、ココ [gunma-u.ac.jp]ではかなり前から指摘してます。
      これ読んだときには、注意して使えば良い程度のレベルだなって思いました。
      親コメント
    • Re:デジャブ? (スコア:2, 参考になる)

      by Anonymous Coward on 2008年10月27日 14時29分 (#1444867)
      同じくソースありませんが。
      97年か98年頃に大学で受けた統計の講義にて、Excelを使った実習もやっていたのですが、当時既に統計機能にバグがあることが教官によって指摘されていました。統計機能のアドオンで定義されている関数ではまともな結果がでないので、教科書の定義どおりの式を自分で入力して使え、と。
      具体的なバグの内容はおぼえていませんが、まったくおかしな数字が出る、本来の値の数分の1の値が出る、精度が悪い等の症状で、3,4か所以上はあった気がします。

      いまはExcelの統計機能を使う機会はないのですが、まだ直っていなかったことに驚きました。
      親コメント
    • Re:デジャブ? (スコア:1, 参考になる)

      by Anonymous Coward on 2008年10月27日 14時03分 (#1444840)
      Excel2002だと、sinh(1e-19)がゼロになったりして駄目駄目なんですが、2007では直ってますか?

      # xがゼロの近傍で、sinh(x)≒xになる筈。
      親コメント
      • Re:デジャブ? (スコア:2, 参考になる)

        by kawa-t (37052) on 2008年10月27日 20時20分 (#1445104) 日記
        ただ単に、倍精度の浮動小数点で計算していて、0近傍の値を考慮していないなら、処理系を問わず、そうなります。内部的には、

        sinh(x)=(exp(x)-exp(-x))/2

        で計算していて、0近傍でexp(x)≒1+x、exp(-x)≒1-xとなるので、これらの値が倍精度で表現出来なくなったところで終わりです。パーセントオーダーの精度だと5e-15で終わりです。

        MzScheme(Schemeの処理系の1つ)でも試してみましたが、倍精度なので結果は同じです。sinhは無いので、上記の式を使いました。

        ただ、個人的には、この手の計算をするときにExcelを使う奴の方が間違っていると思う。
        親コメント
        • by deleted user (3911) on 2008年10月27日 21時25分 (#1445159)
          そういえば、N88-BASIC だったか、その頃の MS-BASIC でもそういった安直な
          関数計算をしていて有効桁が少ないという問題がありましたね。
          あと、sqrt(x) を x^0.5 で代用しているのでこれも有効桁が少ないという
          問題がありました。(真面目に計算するならニュートン法でも使うところ。)

          親コメント
        • by kawa-t (37052) on 2008年10月28日 1時49分 (#1445402) 日記
          exp(x)をマクローリン展開すると、1とΣ(x^k)/(k!)の和でexp(x)を求められるので、1を足さなければ、exp(x)-1を精度よく計算できます。それを用いてsinh(x)を計算させてみると、

          > (sinh 1e-4)
          0.00010000000016666667
          > (sinh 1e-5)
          1.0000000000166668e-005
          > (sinh 1e-6)
          1.0000000000001666e-006
          > (sinh 1e-7)
          1.0000000000000017e-007
          > (sinh 1e-8)
          1e-008

          Excelのsinh(x)では

          1.00E-04のとき、

          1.00000000166689E-04

          ですが、1.00E-05のとき、

          1.00000000001210E-05

          となるので、Excelでは、1e-5のときの下位の桁は信頼できません。

          因みに、MzSchemeで計算しましたが、exp(x)-1を求める関数は、

          (define mexp (lambda (x) (exact->inexact (let loop1 ((n 60)) (if (= n 0) 0 (+ (let loop2 ((n n)) (if (= n 0) 1 (* (/ x n) (loop2 (- n 1))))) (loop1 (- n 1))))))))

          マクローリン展開のnは60としましたが、0近傍ではそんなにいりません。
          親コメント
      • by flutist (16098) on 2008年10月27日 14時16分 (#1444850)
        内部ではちゃんと値を保持してても、表示するところで安直に 0 にしている、というような話を聞いたことがあります。

        なんか設定でそういうのをいじれれば、良くなるかも。
        親コメント
        • Re:デジャブ? (スコア:2, 参考になる)

          by Anonymous Coward on 2008年10月27日 16時08分 (#1444921)
          >表示するところで安直に 0 にしている、というような話を聞いたことがあります。

          違うっぽいかも。
          セルの値を=Sinh(1E-19)/1E-19にしても0だから。
          1E-16前後あたりから値がおかしくなる。
          でもSin(x)/xだと(xが十分小さいところで)問答無用でちゃんと1になるから、内部的に
          どういう展開を使うかあたりで怪しいんかねぇ。
          親コメント
          • by Anonymous Coward
            sinh()の部分は偉い人が書いたからいじるにいじれないと云うオチだったらやだなぁ。
      • by Anonymous Coward
        =SINH(0.0000000000000000001)
        に自動変換され、セルには0とでますね。セルのプロパティから数値で小数点以下の桁数30にした状態でも0.0です。小数点以下に0が多く並んでるが数えるの面倒だから放置
        • by Anonymous Coward
          A1に"=sinh(1E-19)"を入力した状態で
          =IF(A1=0, "真", "偽")としてみると
          sinh(1E-16)までは偽で、sinh(1E-17)から真となりました。
          元コメントにあるとおり1E-16辺りから怪しいようです。
          # さらにsinh(6E-17)では偽、sinh(5E-17)では真……って何ヒマな事をやってるんだろ

          (*) 一応注意しておくと、sinh(6E-17)まで正しいという訳ではないです。
    • by Lafiell (6631) on 2008年10月27日 22時46分 (#1445232)
      統計の「と」というか"S"くらいしか囓っていませんが、100×2500くらいのシートでしょっちゅう
      計算しています。小数点下6桁目くらいでExcelの計算結果と統計ソフトの結果にズレが出てきて、
      「おかしいねえー。ここ(差で)0にならないと駄目なはずだよねえ」
      と一所懸命検算したことがあります。どういう計算だったか今手元にシートが無いので
      判りませんが、標準誤差とか四則演算位のはずなんですが。

      ppm表示で×10^6とかやるから、目立つんですよね。
      親コメント
    • by Anonymous Coward
      でも俺は初めて聞いた。なぜ知られていないのか分からないけど、
      昔からあるバグで、かつ競合製品にはないようなバグだとすれば、
      技術的には直すことが可能でその時間もあったはずだから、
      MSが本気で直そうとしていないということだと考えられます。

      そういう場合、MSに本気で直そうとしてもらうためには、
      この問題が広く知られて、苦情が殺到するくらいになる
      必要があるのではないかと思います。
      • Re:デジャブ? (スコア:5, すばらしい洞察)

        by flutist (16098) on 2008年10月27日 14時19分 (#1444855)
        詳しい人 -> 使わない
        詳しくない人 -> わからない

        で全然苦情が発生してない、とか。
        親コメント
      • by Anonymous Coward on 2008年10月28日 1時07分 (#1445373)
        >> MSが本気で直そうとしていないということだと考えられます。

        かなり前(5年以上前だな)にどこぞのweb siteで見た話なのでホントかどうかわかりませんが,MS側の見解としては「そもそも統計処理のソフトじゃなくて会計計算とかのためのものなので,本気の統計処理とかに使ってくれるな」という話だったはずです.
        親コメント
        • by Anonymous Coward
          >>「そもそも統計処理のソフトじゃなくて会計計算とかのためのものなので,本気の統計処理とかに使ってくれるな」という話だったはずです. その会計計算の関数もひどいことに...
        • by Anonymous Coward
          Excel を会計計算に使うとは正気ではありませんね。
      • > 昔からあるバグで、かつ競合製品にはないようなバグだとすれば、

        いまやOfficeがデファクトスタンダードだから、競合製品はどこも
        Excel互換 がウリなんだよなぁ。そういう観点からすると
        競合製品の質も五十歩百歩じゃないかな。
        OOoはどうなんだろうか。
        • by the.ACount (31144) on 2008年10月29日 15時38分 (#1446591)
          Excel 互換がウリなら、バグも再現せねばならない。
          --
          the.ACount
          親コメント
        • by Anonymous Coward
          >競合ソフトであるGnumericやOpenOffice.org Calcを比較したところ、Excel 2007の統計機能の信頼性はそれらと比較して大幅に劣る、という結果が掲載されている

          # コメントの信頼性も大幅に低下してるようですな
    • 時代が一巡りするのは早いねぇ

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

処理中...