polyfitのnを求める関数はありますか?

2 views (last 30 days)
Yumi Iwakami
Yumi Iwakami on 3 Mar 2020
Answered: Yumi Iwakami on 4 Mar 2020
polyfitを使って近似曲線を描こうとしているのですが,最適なnの決定方法はありますか?
curvefitting ToolBoxは持っていないのでpolyfit関数で行おうと思っています.
https://jp.mathworks.com/help/matlab/ref/polyfit.html を参考にやってみているのですが,どの手法もプロットの結果を見て次元数を決めているように見えます.
1つのデータの処理であればこの手法でできているのですが,各ファイルごとにxとyのデータが入っており,ファイルごとに近似曲線を求めたいので1つ1つプロットの結果をみてnのパラメータを決めるのは現実的ではないと考ええたため,質問させていただきました.
よろしくお願いいたします.
  3 Comments
Kenta
Kenta on 3 Mar 2020
こんにちは、私からもコメントという形で感じたことを述べさせてください。不勉強のため間違いがあれば申し訳ございません。
nを決めるアルゴリズム/手法を議論するまえに、Iwakamiさまがお持ちの、xとyの関係に関する仮説を考える必要があると思います。
例えば、モデル式/理論式にて、yはxの2乗スケールで増加するならnは2であるべきでしょうし、そもそもxとyという本来は一致すべき値を解析するのであればnは1などの小さめの値になるかと思います。
また、x=∞や0のときのことも参考になると思います。xが大きくなればyがある一定に収束するのであれば、単調増加(減少)する関数でフィッティングするのは最適ではないかもしれません。例えば、十分長い斜面を自転車で下っても空気抵抗などである値に収束するはずです。逆に、x=0付近ではある値になるべきであればその値で補正したのちにnの値を考えても良いと思います。
さらに、xが☆%増加したらyが△%増加するということが仮説にあるのなら、logスケールでのフィッティングをするのかもしれません。詳しくは、例えば(https://atarimae.biz/archives/13161)が参考になると思います。
以上、こちらも感想程度、ということで思っていただけると幸いです。よろしくお願いいたします。
Hiroyuki Hishida
Hiroyuki Hishida on 4 Mar 2020
これまでにでているコメントにプラスしてですが、(もっともシンプルであろう)一次式で近似してはいけない理由がないので、(まずは)一次式で近似すると言い切るのも一つの手かもしれません。

Sign in to comment.

Answers (1)

Yumi Iwakami
Yumi Iwakami on 4 Mar 2020
みなさま,コメントありがとうございます.
処理しようとしているデータは7万件くらいで,全部見るのは不可能に近いので質問させていただきました.
Kusanoさまのご意見をもとに考えたところ,私の求めたいデータはたぶん2次式か3次式の近似になると思われます.任意に選択した1つのデータを可視化し,2次式,3次式,4次式でフィッティングしてみたところ,4次式は過適合でした.(パッと見では4次式に形が近いとも思われたので4次も試しています)
Kentaさまのおっしゃる通り,仮説をたてる必要がありますね.
Hisidaさまのおっしゃる,1次式では今回は難しそう(おそらく全部曲線だと思われるため)なので,数個のデータをランダムに選び,データの傾向を見て2次式でいけるか,3次式のほうがよいのかを検討しようと思います.
ありがとうございました.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!