2017-06-23 3 views
2

私は実験をシミュレートしています。この実験には3つのパラメータa、b、c(変数?)がありますが、結果rは確率的成分を持つため「予測」することはできません。確率的成分を最小にするために、私はこの実験を数回(n)実行した。ですから、私はn個の4タプルa、b、c、rを持ちますが、a、b、cは同じですが、rは変わります。実験の各バッチは、a、b、c(kバッチ)の異なる値で実行され、完全なデータセットはkタップの4タプルを有する。出力に確率的な振る舞いがある場合、多変量多項式回帰を実行するにはどうすればよいですか?

私は、このデータのための最良の多項式フィットを見つけるしたいとどのようにそれらを比較する:

FIT1:enter image description here fit3

enter image description hereと::enter image description here fit2

enter image description hereといくつかの第三の多項式関数と対応する誤差

fit4:別の3次(より単純な)多項式関数と対応する誤差

のように...

これはRまたはMatlabの®で行うことができます。私は多くの例を検索して見つけましたが、同じ出力値で同じ入力値を処理していませんでした。

多変量多項式回帰をn回行って、各パラメータに小さなデルタを追加することを検討しましたが、その前に、より洗練された解決策をとることをお勧めします。

ご協力いただければ幸いです。事前に

おかげで、 ジャック

答えて

0

多項式回帰がうまく確率的シミュレーションを扱うことができるはずです。 rn回のシミュレーションを行い、シミュレートしたすべての点で多変量多項式回帰を実行します(私はpolyfitn()をお勧めします)。

同じ[a,b,c]に複数のrの値が設定されますが、適切な曲線が真の分布を推定できるはずです。

polyfitnでは、それはそれは反復的/再帰的関数から多項方程式のセットを生成するためには難しいことではありません。この

n = 1000; 
a = rand(500,1); 
b = rand(500,1); 
c = rand(500,1); 
for n = 1:1000 
    for i = 1:length(a) 
     r(n,i) = foo(a,b,c); 
    end 
end 

my_functions = {'a^2 b^2 c^2 a b c',...}; 
for fun_id = 1:length(my_functions) 
     p{f_id} = polyfitn(repmat([a,b,c],[n,1]),r(:),myfunctions{fun_id}) 
end 

のようになります。 3つの変数については、必要がないかもしれません。より高次の多項式(惑星物理学、粒子物理学、物理学など)に適合するための特別な理由がない限り、あまりにも多くの関数を適合させるべきではありません。特定の理由がある場合(過剰適合、スパースなデータ間変数ノイズ、より正確な非線形方法)がないかぎり、高次多項式を使用してデータを説明するのは、一般的には良い習慣ではありません。

関連する問題