RのLMオブジェクトのリストを作成できません -- r フィールド 関連 問題

Cannot create a list of lm objects in R












-2
vote

問題

日本語

多項式の程度がリスト内の位置に対応するように、20 <コード> lm オブジェクトのリストを作成しています。

Response lm とPredictor poly(x, degree = 1) を持つ最初の lm オブジェクトがあります。 99887666 < / Code>とPredictor <コード> poly(x, degree = 2) など、 9988777668 。以下は私が書いたコードです:

<事前> <コード> model_list = list() for(deg in 1:20){ model_list[[deg]] = lm(y ~ poly(x, degree = deg), data = data) }

<div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div>

のRMSEを計算する <div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div> 0 内のすべてのオブジェクトに関数を適用しようとしています。 <事前> <コード> <div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div> 2

とエラーが発生し続けます:

<事前> <コード> <div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div> 3

私は20個の異なるLMオブジェクトを作成してからそれらのうちリストを作成し、そのリストを作成し、<コード> <div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div> 4 はそこに機能しますが、このリストにはfor Loopのリストにはありません。

<div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div> 5 を使って問題を変更し、以前の投稿を検索し、 y616 を使用して何かのようですが、どうやってわかりません。 <div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div> 7 が機能するように変更する。

編集: <コード> <div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div> 8 は次のとおりです。

<事前> <コード> <div> <label>ItemXXX</label> <div> <label> <Field name="ItemXXX" component="input" type="radio" value="1" /> {' '} 1 </label> <label> <Field name="ItemXXX" component="input" type="radio" value="2" /> {' '} 2 </label> </div> </div> 9

lm0 lm1 は、CSVの2つの列の読み取りからのデータフレームだけです(<コード> lm2 )。両方の列の(-10,10)の範囲内のランダムに生成された数。

英語

I am creating a list of 20 lm objects such that the degree of the polynomial corresponds to the position in the list.

I have the first lm object with a response y and a predictor poly(x, degree = 1), the second would be with response y and predictor poly(x, degree = 2), and so on till poly(x, degree = 20). The following is the code I wrote:

model_list = list() for(deg in 1:20){    model_list[[deg]] = lm(y ~ poly(x, degree = deg), data = data) } 

Now I'm trying to apply a function to all the objects in model_list that calculates the RMSE of each lm object like so:

rmse = sapply(model_list, rmse_function, data = data2, response = "y") 

and I keep getting an error:

longer object length is not a multiple of shorter object  lengthError: variable 'poly(x, degree = deg)' was fitted with type "nmatrix.1" but type "nmatrix.20" was supplied 

I tried straight creating 20 different lm objects and then making a list out of them, and the sapply works there, but not on this list from the for loop.

I tried using lapply and that does not change the issue, and looking up previous posts it seems to be something with setting degree = deg, but I'm not sure how to change it so that the sapply works.

EDIT: The rmse_function is as follows:

rmse_function = function(model, data, response){   sqrt(mean((data[, response] - predict(model, data)) ^ 2)) } 

data and data2 are just data frames from reading csv's of 2 columns (x and y) with randomly generated numbers in the range of (-10,10) for both columns.

</div
  
         
         

回答リスト

0
 
vote

問題は、式を lm() に直接指定しているため、適切なモデル内では、 ... poly(x, degree = deg) が保存されます。この呼び出しは後で predict() 内で使用され、 deg 20 です。常に nmatrix.20 を作成します。ただし、 model_list は、 nmatrix.N を持っています。ここで、 model_list は次数です。したがって、エラーが発生します。

これを修正する最も簡単な方法は、事前に文字列を作成するだけで、 lm()

内の式に変換するだけです。 <事前> <コード> ... poly(x, degree = deg)0
 

The problem is that you directly supply the formula into lm(), so inside your fitted model it will store the call ... poly(x, degree = deg). This call is later used inside predict(), and since deg is 20, it will always create nmatrix.20. However, in model_list each fitted model has nmatrix.N, where N is the degree. Therefore, you get an error.

The easiest way to fix this, is to just create a string beforehand, and then transforming it to a formula inside lm():

for(deg in 1:20){    form <- paste0("y ~ poly(x, degree = ", deg, ")")    model_list[[deg]] <- lm(as.formula(form), data = data) } 
</div
 
 

関連する質問

10  RBIで変数をバインドします  ( Bind variables in r dbi ) 
Rの DBI パッケージで、バインド変数を使用するための機能を見つけていません。私はバインド変数について言われた文書(2002年からのオリジナルのビネット)を見つけました、「おそらくDBIはこの機能を実装することができます」はこれまでのところ、元に戻すことが...

191  あなた自身の関数を書くときにRの省略記号機能を使う方法?  ( How to use rs ellipsis feature when writing your own function ) 
R言語は、可変数の引数を取ることができる関数を定義するためのNIFTY機能を持っています。たとえば、関数 data.frame は任意の数の引数を取り、各引数は結果のデータテーブル内の列のデータになります。使用例: <事前> <コード> > data.fra...

8  R:シンプルなコマンドラインの作成ツール/キャプチャウィンドウ閉じるイベント  ( R building a simple command line plotting tool capturing window close events ) 
単純なコマンドラインプロットツールとして機能するスクリプト内でRを使用しようとしています。 NS。ユーザーパイプはCSVファイルでプロットを取得します。私はr罰金に到達して、さまざまな一時ファイルの機械加工を通して展示するためにプロットを取得することができます...

26  Rのベクトルで考える  ( Thinking in vectors with r ) 
私は、Rがベクトルとループを使って最も効率的に機能することを知っています。私は実際にこのようにコードを書くために自分自身を教えるのに苦労しています。私のコードを「ベクトル化」する方法についてのいくつかのアイデアが欲しいのですが。これは、10,000個の固有の状...

4  ASCIIキャラクターを表示します  ( Show an ascii character ) 
ブロックASCII文字█を表示したい(ASCIIコードは219)、 ターミナルに表示する方法は? winxp でRGUIを使用しています ...

2  空の文字列を含めるとRテーブルの列の順序  ( R table column order when including the empty string ) 
空の文字列を含む一連の値があります レベル(MyData $ Phone_Partner_Products) "" dont_know "" mays_intesting "> "not_inteenting" "very_not_inter...

1  Rを使用してデータポイントの対数形式のデータポイントを推定するにはどうすればよいですか。  ( How can i estimate the logarithmic form of data points using r ) 
対数関数を表すデータ点を持っています R?を使ってこのデータを説明する関数を推定できるアプローチはありますか? ありがとう。 ...

12  Rの重複属性を持つ行を取り除きます  ( Get rid of rows with duplicate attributes in r ) 
私は次のような列を持つ大きなデータフレームを持っています。 <事前> <コード> ID, time, OS, IP そのデータフレームの各行は1つのエントリに対応します。一部の IDS 複数のエントリ(行)のデータフレーム内には存在します。それらの複数行を...

5  複数の変数で変換された複数の列を追加する  ( Adding multiple columns transforming with multiple variables ) 
多くの変数から値を追加する方法? 2つの変数(列)を持っていた場合、私は単に行くことができます: <事前> <コード> summation.variable <- variable1 + variable2 またはそれがすべてデータフレームにあった場合:...

7  経済学を教えるための最高のプログラミング言語? [閉まっている]  ( Best programming language for teaching econometrics ) 
現在立つにつれて、この質問は私たちのQ&AMPにとって良いフィットではありません。フォーマット。私たちは事実、参考文献、または専門知識によって支持されることを期待していますが、この質問は...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有