July 2014
数学(算数?)を使うとはこういうことかな?
私は中学のころから、数学が苦手でした。先生の言っていることはさっぱりわかりませんでした。一度、高校のときに、真剣に先生の話を聞いてみました。質問もしてみましたが、先生の言っていること、なぜ数学をするのか、数学って何?ということがさっぱりわかりませんでした。そのまま私立文系用の大学受験の勉強をし、大学にすすみ、数学を全然しないままでした。 関数の意味、意義すら分かりませんでした。 <でもあの時代にエクセルが存在したら、すぐに分かったと思います。> 大学院に行ってから、統計分析をするようになり、SASという統計ソフトに出会い、20年ほどになります。授業でやったわけでもなく、SASのやり方を教科書で勉強したこともありませんが、なんとなくやってきました。 先日、以下のようなプログラミングをなんとなくしました。これが、数学を使うということなんじゃないかと思ったので紹介します。数学に詳しいかたにコメントいただけるとうれしいです。 自分が直面した問題 ある変数があり、その変数が持つ価値によって、その変数がダミー変数かどうかを判定したい。 最初は変数の最低値が0で最高が1ならば、その変数は、ダミー変数(0か1でコーディングされている)だと思ったのですが、レート(率)の変数も0から1です(例えば出席率)から、このルールでは不十分です。 ある変数を与えられて、以下の3つの統計(個数、平均、標準偏差)が与えられたとして、それを元にその変数に存在する価値が二つだけである(ダミー変数である)かどうか、、を知る方法はないかな~、、とぼんやり考えた結果、以下をSASにて書いたところ、実際に正しい答えがでました、、、ま、これでええわ、、と自分の仕事に使っています。 正しいかどうかも、やってみて、実際、結果がそうなるかどうか、、といういい加減な方法です。 ある変数のNumber(個数)、mean(平均)、SD(標準偏差)が分かっているとします。すると、以下で、その変数が(価値が0か1の)ダミー変数かどうかが分かります(VAR_TYPEがCONTINUOUSと出なかったら、ダミー変数です)。 num_yes=number*mean; num_no=number-(number*mean); mean_new=((num_yes*1) + (num_no*0))/(number); LOW=(0-mean)*(0-mean); HIGH=(1-mean)*(1-mean); SUMSUM=(LOW*num_no)+(HIGH*num_yes); RESULTSD=SQRT(SUMSUM/(number-1)); JUDGE_DICHO=abs(SD-RESULTSD); if JUDGE_DICHO ne . and JUDGE_DICHO > 0.001thendo; var_type="Continuous"; end; 具体的には、これを何に使っているかというと、その変数をLOGISTIC REGRESSION MODELにPREDICTORをしていれて、その結果からODDS RATIOを求めるのですが、そのPREDICTORがダミー変数でない場合は、その数値に、解釈を簡単にするために、ある調整をするのです。そのために、そもそもこの変数がダミー変数かどうかをプログラミングによって知りたかったのです。 自分は数学が苦手だったので、そもそも勉強もあまりしていないので、分からんのですが、こういうのを数学を使うというのか?単なるアルゴリズム???