2013-05-12 143 views
10

polyfit(またはこの素晴らしいlogfitツールボックスも私が見つけたのはhere)のような多くのカーブフィッティングと補間ツールがありますが、xyデータにsigmoid関数を適合させることができません。データにシグモイドをフィッティング

このようなツールが存在するのですか、自分で作成する必要がありますか?

答えて

13

あなたはStatistics Toolboxには、インストールされている場合、あなたはnlinfitnonlinear regressionを使用することができます。

sigfunc = @(A, x)(A(1) ./ (A(2) + exp(-x))); 
A0 = ones(size(A)); %// Initial values fed into the iterative algorithm 
A_fit = nlinfit(x, y, sigfunc, A0); 

をここsigfuncはシグモイド関数の一例であり、Aはフィッティング係数のベクトルです。

+1

私は以下のsigfuncがより有用であることを発見しました。 'sigfunc = @(A、x)(A(1)./(1 + exp(-A(2)* x)));' – ohnoplus

+0

@user92519問題ありません、私は例としてこれを与えました。 –

+0

こんにちは。 「フィッティング係数のベクトル」とはどういう意味ですか? –

1

MATLABのGlobal Optimization Toolbox、特にGenetic Algorithm Solverを使用することをお勧めします。これは遺伝的アルゴリズムによるSigmoid関数のパラメータを最適化(=最適なデータを見つける)することによって問題に使用できます。それは使いやすいGUIを持っています。

あなたがgatoolを使用して呼び出すことができますGenetic Algorithm SolverのGUI、: enter image description here

9

nlinfit、特にgatoolは、この問題の大きなハンマーです。シグモイドは特定の機能ではありません。

y = 1./(1+exp(-x)); 

または一般的なロジスティック:最も一般的にはロジスティック関数(計算することもしばしば最も効率的な)と同じであると解釈されます。しかし、すべての曲線はsigmoidal shapesです。あなたのデータが特にデータに対応しているかどうかを知っていれば、フィッティングを改善し、より効率的な方法を適用することができます。例えば、error functionerf)は、S字状の形状を有し、のCDFに現れます。データがGaussianプロセスの結果(データがCDF)であり、Statsツールボックスがあることがわかっている場合は、normfit関数を使用できます。この機能はmaximum likelihood estimation(MLE)に基づいています。パフォーマンス上の理由から、カスタムフィッティング関数を書く必要が生じた場合は、フィットしたい特定のシグモイドのMLEテクニックを調べます。

関連する問題