問題タブ [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のフィッティング
いくつかのデータに最適な線を当てはめようとしています。一見すると、負の指数曲線です。関数を使用しnls
て 2 次多項式の近似を見つけることができましたが、指数の問題を近似しようとすると....
次のように入力すると:
R は次のメッセージを出力します。
numericDeriv(form[[3L]], names(ind), env) のエラー: モデルの評価時に値が欠落しているか、無限大が生成されました
さまざまな初期パラメーターをいじって非常に長い時間を費やしましたが、このメッセージまたはマトリックスが特異であるという別のメッセージが表示されます....
年齢に対して価格の線を当てはめようとしています(グラフは下のリンクに添付されています)
r - 非線形フィッティング方法 (nlsLM、nlxb、および wrapnls) でのフィッティングの失敗
nls
fitting
Rでやりたいタスクがあります。ここでこれを行う最初の試みと@Rolandが指摘したように
「要点は、複雑なモデルは当てはめが難しいということです。そうであるほど、データがモデルをサポートしなくなり、不可能になります。非常に良い開始値があれば、これを当てはめることができるかもしれません。」
私は@Rolandに同意excel
できますが、このフィッティングができるのであれば、できR
ないのはなぜですか?
基本的に、このフィッティングは Excel の GRG Nonlinear ソルバーで実行できますが、プロセスに非常に時間がかかり、フィッティングがうまくいかない場合もあります。(実際にはたくさんのデータがあるため)。
これが私のサンプルdata.frameです。set
各グループを以下に示すモデルに当てはめたいと思います。
試行 1
私はすでにここに質問を投稿しました。
基本的に問題は、グループ化されたデータでフィッティングを行い、フィッティング係数に基づいて予測を行いたかったことです。
から使用nlsLM
しlibrary(minpack.lm)
ました エラーが発生しました
nlsModel(formula, mf, start, wts, upper) のエラー: 初期パラメータ推定値での特異勾配行列
@Rolandによると、一見したところ、モデルエラーまたは私の開始値が良くなかったのかもしれません。一方、このモデルは 2 つのフィッティング パラメーターのみでフィッティングできました。問題はthird
、フィッティング関数にパラメーターを追加したいときに発生します。
試行 2
その投稿で、@ G をフォローして、トラブルを追加するときに 3rd-fitting-parameter-in-nls を追加します。Grothendieck の提案、私はパッケージnlxb
から試しnlmrt
、パラメーターの 1 つを に修正し、次のようにフィッティングを行いましたd
。d=32
フィッティング係数は妥当ですwolaa! しかし、今回、(@G. Grothendieck も後で指摘しました) 後の新しい値を予測することは不可能であることに気付きましたnlxb
(なぜ=? わかりません!)
::ここpredictvals
から機能を見つけることができます
UseMethod("predict") のエラー: クラス "nlmrt" のオブジェクトに適用される 'predict' に適用可能なメソッドがありません
ここにはない!coef
またはクラスオブジェクトの場合predict methods
。"nlmrt"
試行 3
@Gをフォローした後。Grothendieckwrapnls
から次に試した別の提案nlmrt
。
この投稿で彼が述べたので、 can-we-make-prediction-with-nlxb-from-nlmrt-package
「nlmrtパッケージwrapnls
が実行するものをnlmrt
提供nls
し、"nls"
オブジェクトが結果として得られ、そのオブジェクトをすべての"nls"
クラスメソッドで使用できるため.
以下のようにまだ問題がある同じnlmrt
パッケージから
ロードが問題をより複雑にしているためplyr
、最初の投稿の後、使用を断念しました。そのため、代わりに function に固執して使用します。plyr
dplyr
dplyr
do
nlsModel(formula, mf, start, wts, upper) のエラー: 初期パラメータ推定値での特異勾配行列
このエラーで開始した場所に戻りました。関連する例を探し(ただし 3 つだけ)、本を読み、提案に従って、できることはすべて試したと思います。
r - R における非線形ラングミュア パラメーター推定の最適化
この投稿で行われたのと同様nls
のラングミュア方程式のフィッティングを支援するために使用することに興味がありますR の非線形ラングミュア等温線のフィッティング. 私が興味を持っている方程式のパラメーターは、以下にプロットされた収着データの水平方向の漸近線 (緑の線) に対応するものです。周囲の視覚的な漸近線 (緑の線) にできるだけ近い値を取得するために使用できる方法以外に、より堅牢なアプローチ、または使用を改善する方法はありますか?Y =(Qmax*k*X)/(1+(k*X))
Qmax
nls
nls
Qmax
Qmax=3200
次のデータを使用します。
私はQmax = 4253.63
(赤線)を得ています - 約1000ユニット離れています。上限と下限を使用しても、上限に設定した Qmax のみが得られ、初期値を変更しても結果は変わらないようです。これは、ベース R で採用したものとは異なる非線形回帰へのアプローチで解決できる課題ですか、それとも何よりもまず統計的/数学的な問題ですか?
モデルの線形化の試みはうまくいきませんでした:
免責事項:これは私の最初の投稿ですので、ご容赦ください。私はRに比較的慣れていません。上記の技術を改善するのに役立つ可能性のある技術的なアドバイスは大歓迎です。
r - R で nls を使用した非線形回帰の交差検証
問題:
私はデータセットを持っていinputAll.data
ます。データの 80% をモデル構築の入力として使用し、残りの 20% のデータでモデルを検証したいと考えています。
データセットを 2 つの小さなデータセットに手動で分割し、input80.data
それぞれinput20.data
データの 80% と 20% を含めました。
私のデータセット内のデータの形式:
を使用して非線形回帰モデルを構築するために、データの 80% を使用していnls
ます。
残りの 20% のデータを使用して予測値を取得しています。y
という名前の別のファイルに実際の値を含むこのデータのコピーを保存しましたinput20Actual.data
がinput20.data
、値のみが含まれていx
ます。
RMSE
次に、予測値と実際の値の間の誤差を計算するために呼び出されるカスタム関数を使用しています。
エラー計算は、各予測値を取得し、それを に保存した実際の値と比較することによって行われますinput20Actual.data
。出力をファイルに保存しています。
問題は、入力セットを手動で分割したことです。これを自動化し、異なる分割 (毎回異なるデータ) に対して同じことを行い、計算されたエラーの平均を取得したいと思います。
私が試したこと:
R のクロス検証について StackOverflow を読みました。私の理解では、モデルの作成にデータの一部を繰り返し使用し、残りをテストに使用するということです。で相互検証関数を使用できる場合nls
、入力データを 2 つのファイルに分割する必要はありません。
SOで解決策をたくさん検索しました。交差検証に関する多くの回答はlm
. しかし、特にクロス検証が必要ですnls
。パッケージについても読みましたcaret
が、インストールしようとしましたが、ほとんどの場合、次のようなパッケージのインストール エラーが発生します。
したがって、パッケージを追加インストールせずに (rkward で) 相互検証を実行する直接的な方法があることを期待していました。モデルを繰り返し作成してテストするために使用できる R の関数または API はありますか?
私はRの完全な初心者であることに注意してください。これが明らかな質問である場合は申し訳ありません。