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

polyfitを使って近似曲線を描こうとしているのですが,最適なnの決定方法はありますか?
curvefitting ToolBoxは持っていないのでpolyfit関数で行おうと思っています.
https://jp.mathworks.com/help/matlab/ref/polyfit.html を参考にやってみているのですが,どの手法もプロットの結果を見て次元数を決めているように見えます.
1つのデータの処理であればこの手法でできているのですが,各ファイルごとにxとyのデータが入っており,ファイルごとに近似曲線を求めたいので1つ1つプロットの結果をみてnのパラメータを決めるのは現実的ではないと考ええたため,質問させていただきました.
よろしくお願いいたします.

3 commentaires

Shunichi Kusano
Shunichi Kusano le 3 Mar 2020
答えは私もわかりませんので、コメントという形で参考になりそうな視点をいくつか書いてみます。
前提としてnを大きくするほど、データにフィットしますが、過適合ということになります。一般的には許容できる誤差を決めておいて、それを満たす最小のnが取られるケースが多いんじゃないかと推測します。フィッティングの目的は、任意のxを与えたときのyの予測なので、許容できる誤差はそのまま、目標とする予測精度、とも言い換えられます。
ただし、具体的にデータが表している現象を定式化できるのであれば、それがnの答えになるかと思います。例えば放物運動ならn=2と自動的に決まりますよね。逆にこのときにいくら誤差が大きいからといってn>2としてしまうとアウトです。
また、同じ現象を表すデータのフィッティングであれば、ファイルごとにnの値や係数が変わるのもちょっと変かなと思いますので、そのあたりも制約条件になりえるかもしれませんね。
統計の専門家ではありませんので、あくまで参考程度ということでお願いいたします。
Kenta
Kenta le 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 le 4 Mar 2020
これまでにでているコメントにプラスしてですが、(もっともシンプルであろう)一次式で近似してはいけない理由がないので、(まずは)一次式で近似すると言い切るのも一つの手かもしれません。

Connectez-vous pour commenter.

Réponses (1)

Yumi Iwakami
Yumi Iwakami le 4 Mar 2020

0 votes

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

Catégories

En savoir plus sur Curve Fitting Toolbox 入門 dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!