0

私は、lm()関数と、それに続く最適化のためのstep()関数を使用して、線形モデルの開発と最適化に取り組んでいます。0と1のランダムジェネレーターを使用してデータフレームに変数を追加しました(それぞれ50%の確率)。この変数を使用して、データフレームをトレーニングセットと検証セットにサブセット化します。レコードがトレーニングセットに割り当てられていない場合は、検証セットに割り当てられます。これらのサブセットを使用することで、モデルの適合度を推定できます(検証セット内のレコードの予測関数を使用し、それらを元の値と比較することにより)。最適化されたモデルの係数と、予測結果と実際の結果の分布の間のKSテストの結果に興味があります。

すべてのコードは正常に機能していましたが、モデルが選択したサブセットに敏感であるかどうかをテストしたいときに、いくつかの問題が発生しました。これを行うために、毎回異なるランダムサブセットを使用してfor(i in 1:10)ループを作成したいと思いました。これは私にとって非常に難しいことがわかりました(これまでRでforループを使用したことはありません)。

ここに問題があります(実際には多くの問題がありますが、ここにそのうちの1つがあります):

ループ内の実行ごとに、一意の名前(Run1、Run2、Run3など)を使用して個別のデータフレームを作成したいと思います。私はpaste(( "Run"、1:10、sep = "")を使用してさまざまな文字列で変数を作成できましたが、それは文字列のリストを提供するだけです。これらの文字列を自分の(サブセット化された)データフレーム?

私が遭遇すると予想されるもう1つの問題:その後、実行ごとに近似係数を使用して、これらをExcelにエクスポートしたいと思います。coef(function)を使用することで係数を取得できましたが、最適化アルゴリズムにより、シミュレーションの実行ごとにモデルに含まれる係数の数が変わる可能性があります。これはほぼ間違いなく、それらを同じデータフレームに貼り付けるのに問題が発生しますが、それについて何か考えはありますか?

手伝ってくれてありがとう。

4

2 に答える 2

5

あなたの最初の質問のために:

を使用して、以前と同じように文字列を作成できます

df.names <- paste(("Run",1:10,sep="")

次に、forループを作成し、次の手順を実行して、データフレームに必要な名前を付けます。

for (i in 1:10){
   d.frame <- # create your data frame here
   assign(df.name[i], d.frame)
}

これで、10個の異なる名前の10個のデータフレームが作成されます。

係数に関する2番目の質問:

私の知る限り、これらはデータフレーム構造に自然に適合しません。リストはさまざまなクラスを許可するため、リストの使用を検討する必要があります。つまり、実行ごとに、データフレームと係数を含む数値ベクトルを含むリストを作成します。

于 2012-07-24T19:50:09.700 に答える
4

名前に数字が含まれるオブジェクトを作成しないでください。その後、get、paste、assignを使用して、ループでオブジェクトにアクセスしてみてください。これを行う正しい方法は、要素をRリストオブジェクトに格納することです。

于 2012-07-24T19:58:54.187 に答える