4

R のキャレットパッケージを使用して、モデルの変数を選択しています。rfeコマンドを使用する場合、メソッドパラメータを持つ rfeControl オブジェクトを渡す必要があります。このパラメーターのオプションは、boot、cv、LOOCV、および LGOCV です。私は時系列データを扱っているので、特別なブートストラップ/交差検証手法を使用する必要があります。通常の手法は時系列データには適用されません (そうしないと、分布が破損するなど)。

私の質問は、ブートストラップの独自の実装をプラグインする方法ですが、必要な他のすべてのものを備えたキャレットrfeメソッドを使用する方法です。

4

1 に答える 1

1

簡単な方法はありません。コードを調べると、関数が使用されrfe.default()ている場合に気付くでしょう。これは、ブートストラップ サンプルを生成する関数です。他の CV メソッドにも同様の関数が使用されます。method = "boot"createResample()

難しい方法があります。create*()最も適切な機能を追い越します。createResample()ブロック ブートストラップまたは ME ブートストラップを実行したい場合は、関数を引き継いでを使用しますmethod = "boot"。または、特別な形式の CV が必要な場合は、 を使用method = "cv"して を引き継ぐとしcreateFolds()ます。

create*()独自の関数を作成し、キャレット NAMESPACE の関数を自分のバージョンに置き換える必要があります。簡単ではありませんが、非常に実行可能です。独自のcreateResample()関数を作成するとします。最初に、この関数はn =ブートストラップ サンプルを作成し、サンプルと同じ数の行と列をtimes持つマトリックスでこれを返すことに注意する必要があります。同じオブジェクトを返すが、使用したい時系列ブートストラップを実行するtimesカスタム関数を作成する必要があります。createResample()

その関数を記述したら、それをキャレット名前空間に取得して、キャレット パッケージ内の関数で使用できるようにする必要があります。これには、 を使用しますassignInNamespace()。新しいブートストラップ関数が呼び出されcreateMyResample()、それがワークスペースであるとします。これをキャレット名前空間に挿入するには、次のようにします。

assignInNamespace("createResample", createMyResample, ns = "caret")

申し訳ありませんが、具体的には言えませんがブートストラップ/CV を実行する方法や、リサンプリングに使用する R コードについては言及していません。リサンプリングを行う方法についてさらに詳細を提供していただければ、もう一度見て、create*()関数の作成を支援できるかどうかを確認します。

これらすべてに失敗した場合は、caret の作成者でありメンテナーである Max Kuhn に連絡してください。彼はさらにアドバイスできるかもしれませんし、少なくともこの機能を将来のバージョンのウィッシュ リストとして提案することもできます。

于 2012-06-13T07:56:13.417 に答える