問題タブ [non-linear-regression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - モデル (R,nls) として exp(-exp(-x/c)) を使用した非線形回帰
次のモデルを後続のデータに適合させるのに苦労しています。
実際には、log(y, base = 10)
プロットが必要です。そのため、 とを使用するggplot
とstat_smooth(method='nls',...)
、ひどいフィット感になってしまいます。また、フィット感を改善する方法がわかりません。合理的なアプローチを考えることができますか?ありがとう !
これまでの私のコード:
matlab - nlinfit 次元エラー
私はmatlabでnonlinearfitツールを使用しています。次のエラーが発生し続けます。
nlinfit の使用エラー (210 行目) MODELFUN は、Y (1 行 100 列) と同じサイズの近似値のベクトルを返す関数でなければなりません。指定したモデル関数は、1 行 2 列の結果を返しました。サイズが一致しない一般的な理由の 1 つは、対応する要素単位の演算子 (. 、./、.^)ではなく、関数で行列演算子 ( 、/、^) を使用することです。
この質問は私のものと非常に似ていることがわかりましたが、それでも同じエラーが発生します。ベクトルを入力として使用しながら、コンソールでmyfunを計算しようとしました。これにより、正しい次元の出力が得られます。間違いを指摘していただけると大変助かります。
前もって感謝します...:)
編集:これが機能していることがわかりました。
g = fittype('exp(k*x + a)');
[fit1,gof,fitinfo] = fit(x',y',g,'StartPoint',[1 1]);
r - R の双指数モデル
質問があります: Biexponential Model の R では、負の値を含むデータを使用できますか??? それは私にエラーを与えるからです!!! 負の数がそのエラーの理由である可能性はありますか?
R の Biexponential に対する私の関数は次のとおりです。
A1*exp(-exp(lrc1)*input)+A2*exp(-exp(lrc2)*input)
どこ:
input - モデルを評価する値の数値ベクトル。
A1 - 最初の指数の乗数を表す数値パラメーター。
lrc1 - 最初の指数関数の速度定数の自然対数を表す数値パラメーター。
A2 - 2 番目の指数の乗数を表す数値パラメーター。
lrc2 - 2 番目の指数関数の速度定数の自然対数を表す数値パラメーター。
r - Rの「with」ベースでNAを削除するコードを作成する方法
私の単純なデータセットは次のようになります。
上記のデータセットは、次のコードを使用して再現できます。
まず、次のコマンドを使用して、パネル データ回帰のパネル構造を取得します。
回帰を実行します
次に、以下のように結果の見積もりのショートカットが作成されます。
面積の限界積を計算するためのこのコードがあります。しかし、私のデータ フレームにはいくつかの欠損値があり、上記の計算からそれらの欠損値を削除するコードを含める必要があります。それ以外の場合、答えも NA となります。上記のコードの最後に以下を含めようとしました。
ただし、そのタグは使用しません。データフレーム pdat は、パネル データ回帰を使用して分析されたパネル データ セットです。a1、a2、a11、a12 は、特定の回帰の係数です。pdatにはいくつかの欠落データがあり、pdatにデータが欠落しているため、このpdat $ mpLabは各観測に対してNAを与えると思います。
誰かが私を助けることができれば大歓迎です。
julia - Julia: CurveFit パッケージの非線形を使用
以下のコードが機能しないのはなぜですか?
エラー: LoadError: MethodError:
convert
一致するメソッドがありません convert(::Type{Float64}, ::Array{Float64,1}) これは、コンストラクター Float64(...) の呼び出しから発生した可能性があります。これは、型コンストラクターがフォールバックするためです。メソッドを変換します。最も近い候補は次のとおりです: call{T}(::Type{T}, ::Any) convert(::Type{Float64}, !Matched::Int8) convert(::Type{Float64}, !Matched::Int16)/home/jmarcellopereira/.julia/v0.4/CurveFit/src/nonlinfit.jl:75 にある Nonlinear_fit の 8 行目から始まる式で、In[269] を読み込み中
c++ - GSL 非線形最小二乗法は収束しません
私はC++、特にGSLに比較的慣れていません。それにもかかわらず、GSL によって提供される実装を使用して、非線形関数を一部のデータに適合させる問題を解決するための努力を行ってきました。アイデアは、Clnm
データとモデル係数などを保持する Class()を持つことです。Clnm
クラスには、初期値を取るメソッドCnlm::fitModel_manu
と、最小化する関数への関数ポインタがあり、これらは で提供されますfit_functions.cpp
。
GSLリファレンスマニュアルが提供する例のように、式と係数を使用して最初にいくつかのデータを生成する最小限の作業例があります( Y = A exp(lambda*x)+b ,
{A,lambda,b}=<5.0, -0.1,1.0>)。これはうまくいき、期待どおりにデータを取得します。
このデータを使用して、Cnlm
オブジェクトが構築されます。次に、fitModel_manu
メソッドが呼び出されます。
実装は機能し、コードは (g++ および ISO C++11 を使用してg++ -std=c++0x
) 正常にコンパイルされますが、最初の推測として正しいパラメーターを指定したとしても、これまで収束していないようです。
かなりの数の投稿を調べましたが、問題の解決策が見つかりませんでした。
私は知恵の果てにいます。誰かが試してみたい場合は、以下のコードを提供しました。たぶん、他の誰かが光を当てることができますか?
前もって感謝します!
これがコードです
ヘッダーnlls.h
:
main.cpp
:
class_functions.cpp
:
fit_functions.cpp
: