数値から、数式を作る方法は?


数値と、グラフから、数式を作りたいと思っています。
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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/01/31 19:20:57
  • 終了:2007/02/01 12:12:23

回答(5件)

id:castiron No.1

castiron回答回数418ベストアンサー獲得回数302007/01/31 19:37:05

ポイント20pt

エクセルにデータ打ち込んで散布図のグラフを作成して

近似曲線を追加すればいいのではないのですか?

答えが知りたいわけではない?

http://q.hatena.ne.jp/1170238854

id:iiiiiiiii

エクセルってそんな使い方ができたとは知りませんでした。

質問の意図は、

JavascriptかActionScriptでこの数値が計算できる関数を作ることです。

関数ができれば、(おおよその値でしょうが、)週数から体重の計算ができるようになります。

2007/01/31 19:40:42
id:pyopyo No.2

pyopyo回答回数14ベストアンサー獲得回数02007/01/31 20:00:41

ポイント20pt

グラフ作成ソフトにデータを打ち込み、最小二乗フィッティングしてやると数式が求まります。例えば『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次式では週数が小さい時に誤差が大きいので、他の関数(次数を上げる等)を試してみる必要がありそうです。

id:iiiiiiiii

ありがとうございます。

難しそうですが、あとからじっくり見させていただきます。

2007/02/01 12:09:12
id:risktaker No.3

risktaker回答回数4ベストアンサー獲得回数02007/01/31 20:03:04

ポイント20pt

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;


これで,関数の出来上がりです.

id:iiiiiiiii

具体的な方法ありがとうございます。

2007/02/01 12:09:49
id:wm5775 No.4

wm5775回答回数351ベストアンサー獲得回数42007/01/31 21:22:21

ポイント20pt

ずばりこれではないでしょうか?

JavaScript による統計計算など

http://aoki2.si.gunma-u.ac.jp/JavaScript/index.html

まず、取得したデータの分布からフィットさせる近似式のタイプを選択する必要があります。

例えば、直線近似、多項式近似、対数近似、指数近似など。

その式にあった回帰分析をすればよいと思います。

#しかし、Javascriptで数値計算って気合入ってますね。

id:iiiiiiiii

まさにこんな感じですね。

ありがとうございます。

2007/02/01 12:11:03
id:wm5775 No.5

wm5775回答回数351ベストアンサー獲得回数42007/01/31 22:14:34

ポイント20pt

たびたびすみません。

目的変数に対して、説明変数が複数ある場合の式の計算だったのですね。

#よく、問題を読んでいませんでした。

これもそれぞれの説明変数の式のタイプ(直線、指数、対数など)を決めなければならないのと、通常であれば最小二乗法をとかなければならないですが、下記の本に最小二乗法を直接使わず(使ってるんですけど)簡単に計算する方法がのっています。

他見量解析の実践 上 菅 民郎著

isbn:4-7687-0211-2

この方法を使えば、先ほど紹介したサイトの重回帰分析のjavascriptがそのまま流用できます。

それから、この数値はお互いに相関がある数値だと思われるので、各パラメーター間の相関が0.9より高い場合には、説明変数として採用しないほうがよいです。いわゆるマルチコという現象が起こります。

#特異値分解のソースもあったので、最小二乗法で求めることも不可能ではないです。

id:iiiiiiiii

ありがとうございます。

なかなか難しいそうな言葉が多いので、あとからじっくり調べてみます。

2007/02/01 12:12:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません