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

MySQL 4.0.25 です。
SELECTしたデータの不偏分散を出したいのですが。

SELECT VARIANCE(MYDATA) AS VAR_MYDATA FROM MYTABLE

とすると、エラーになります。分散関数(VARIANCE)をサポート
しているのはMySQL 4.1以降と何かで読んだ覚えがあるので、
それが原因だと思います。

質問は二つあります。

(1) 標準偏差を算出し、強引に次のようにSTDDEV(MYDATA)を2乗、
ないしMYDATA*MYDATAみたいな意味の記述をしたいのですが、
これだと動きません。どのように書けばよいでしょうか。

SELECT STDDEV(MYDATA)^2 AS VAR_MYDATA FROM MYTABLE
SELECT STDDEV(MYDATA)*STDDEV(MYDATA) AS VAR_MYDATA FROM MYTABLE

(2) STDDEV関数は、不偏分散を返してくれない仕様だそうですが、
不偏分散を返すには、以下スレッドで提示されてる分散の公式を
コネクリまわすしかないでしょうか。
http://www.mysql.gr.jp/mysqlml/mysql/msg/10160

A 回答 (1件)

不遍分散(標本標準偏差の2乗)は、直接計算する関数はMySQLにはないようなので、母標準偏差(stddev)から換算するか、avg sum count などを駆使して計算するしかないでしょう。



>SELECT STDDEV(MYDATA)*STDDEV(MYDATA) AS VAR_MYDATA FROM MYTABLE
動かないと云うのは、どのような状況でしょう?
エラー情報がないと、原因究明は難しいです。

いっぺんに計算しようとして、無限ループにはまってるとか??
今手近にmysqlの環境がないので、実行チェックできてませんが、以下では、どうなりますか?
SELECT STDDEV(MYDATA) AS dev_mydata , dev_mydata * dev_mydata AS VAR_MYDATA, COUNT(MYDATA) AS num, VAR_MYDATA * num / (num-1) AS unbiased_var FROM MYTABLE;
    • good
    • 0
この回答へのお礼

貴重なアドバイスありがとうございます。

今日、PHP構文を駆使して力技で何とか
実現できました。

ご提示いただいたSQL文の方も、
うなずくばかりで、納得です。
(明日、追試させていただきます)

お礼日時:2005/09/21 22:03

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

関連するカテゴリからQ&Aを探す