数値と、グラフから、数式を作りたいと思っています。
http://www.yutopia.or.jp/~taikeda/hp4suiteisikizyunbi.html
このURLの一番下の表の
「妊娠週数」「児体重」について、「○週なら×グラム」というのを計算で出せるようにしたいと考えています。
function getWeight(weeks)
return weight;
のようなイメージです。
・厳密でなくても、おおよそ曲線が同じになるようであればいいです。誤差5%以下くらいなら構いません。
・引数は10~42のみで結構の整数のみで結構です。
・Javascriptか、ActionScriptで計算したいと思っています。
※計算できない場合は、最悪switchで、30通りくらいの分岐にするしかないかもしれないです。
参考:http://q.hatena.ne.jp/1170229396
エクセルにデータ打ち込んで散布図のグラフを作成して
近似曲線を追加すればいいのではないのですか?
答えが知りたいわけではない?
グラフ作成ソフトにデータを打ち込み、最小二乗フィッティングしてやると数式が求まります。例えば『Sma4Win』 というグラフ作成ソフトでしたら試用期間中でも機能は全て使えます。
http://www.vector.co.jp/soft/win95/business/se032520.html
ちなみに私が使っているグラフ作成ソフト(OriginPro)で例示されていたデータをフィッテングしてやると、
Y = A + B1*X + B2*X^2 + B3*X^3 + B4*X^4
A = -1529.21983
B1 = 341.77507
B2 = -27.96341
B3 = 0.98928
B4 = -0.01074
X = 児体重
Y = 妊娠週数
という4次式で、グラフ上は綺麗に合いました。ただ細かく数字を突き合わせてみると、この4次式では週数が小さい時に誤差が大きいので、他の関数(次数を上げる等)を試してみる必要がありそうです。
ありがとうございます。
難しそうですが、あとからじっくり見させていただきます。
Curve Fittingをしたいってことですよね.
まず,何次式でフィットするかが大事になります.
そこらへん面倒なので,僕なりのやり方を説明させていただきます.
まず,上の方のようにエクセルで近似曲線を作ります.
(3次関数とかでフィットしてあげればできるんじゃないでしょうか,とりあえず3次式と仮定して話を進めます)
そのあと近似曲線のプロパティから,近似式の表示を選びます.
http://www.pu-kumamoto.ac.jp/~fujio/Excel/F-2.htm
そうすると,y=a*x^3+b*x^2+c*x+dと表示されるはずです.
この{a,b,c,d}にはそれぞれ数字が入ります.
つぎにスクリプトの作業をします.
先ほどの{a,b,c,d}の数字を使って下のようにcodeingします.
function getWeight(weeks)
weight = a*week^3+b*week^2+c*week+d
return weight;
これで,関数の出来上がりです.
具体的な方法ありがとうございます。
ずばりこれではないでしょうか?
JavaScript による統計計算など
http://aoki2.si.gunma-u.ac.jp/JavaScript/index.html
まず、取得したデータの分布からフィットさせる近似式のタイプを選択する必要があります。
例えば、直線近似、多項式近似、対数近似、指数近似など。
その式にあった回帰分析をすればよいと思います。
#しかし、Javascriptで数値計算って気合入ってますね。
まさにこんな感じですね。
ありがとうございます。
たびたびすみません。
目的変数に対して、説明変数が複数ある場合の式の計算だったのですね。
#よく、問題を読んでいませんでした。
これもそれぞれの説明変数の式のタイプ(直線、指数、対数など)を決めなければならないのと、通常であれば最小二乗法をとかなければならないですが、下記の本に最小二乗法を直接使わず(使ってるんですけど)簡単に計算する方法がのっています。
他見量解析の実践 上 菅 民郎著
この方法を使えば、先ほど紹介したサイトの重回帰分析のjavascriptがそのまま流用できます。
それから、この数値はお互いに相関がある数値だと思われるので、各パラメーター間の相関が0.9より高い場合には、説明変数として採用しないほうがよいです。いわゆるマルチコという現象が起こります。
#特異値分解のソースもあったので、最小二乗法で求めることも不可能ではないです。
ありがとうございます。
なかなか難しいそうな言葉が多いので、あとからじっくり調べてみます。
エクセルってそんな使い方ができたとは知りませんでした。
質問の意図は、
JavascriptかActionScriptでこの数値が計算できる関数を作ることです。
関数ができれば、(おおよその値でしょうが、)週数から体重の計算ができるようになります。