2016-12-07 3 views
0

私はこれが世界で最も簡単なものでなければならないと感じます。まず、私はRに比較的新しいですが、私はそれを学びたいと思っていました。つまり、私の経験から、Rはあまり直感的ではないことが示唆されています。私が数時間以内にPythonで把握できたのは、これまでRの結果がなくて2日間だったのです。Rパネルモデルで独立変数をループする

パネルデータの選択範囲内の従属変数の選択を取り消したいと思います。私はさまざまな正規化曲線を持ついくつかの変数を持っています。一度に回帰を書くのではなく、多くを繰り返し処理できるようにしたいと思います。

私は、次のような何かをしたい:PLM(依存〜loopedvar + var2に+ VAR3 + VAR4、データ= MYDATA、モデル= Cを() "内の")

私はgrepのを使用して変数リストを作成して、実際には非常に簡単です。今、私は、 'loopedvar'としてvarlistに1行1列の変数を代入したいと考えています。 SPSSとのpython私はまた、このチュートリアルhttp://www.ats.ucla.edu/stat/r/pages/looping_strings.htmを発見した

nvariables=len(varlist) 
for variable in xrange(nvariables): 
testvariable=varlist[variable] 
spss.Submit("""AREG dependent WITH 
{} 
var2 
var3 
var4 
/METHOD PW. 
""" .format(testvariable)) 

ような何かをするだろうが、私はそれが仕事を得ることができない、と私は*理解一つはR.で関数を適用しないで

lapply(varlist、function(x)[model])を書くとき、varlist [var]はどこへ行くのですか?

私はループをペーストして試してみて、さまざまなエラーで置き換えました。エラー "

for (var in 1:length(varlist)) { 
+  models<-summary(plm(paste0("dependent ~ ",var," + var2 + var3 + var4"), data=mydata, model=c("within"))) 
+ } 

例外」 "[(")データ

for (var in 1:length(varlist)) { 
    models<-plm(substitute(dependent ~ i, list(i=as.name(paste0(var)), as.name("var2"), as.name("var3"), as.name("var4")) data=mydata, model=c("within"))) 
} 

は... VAR4)]:で予期しないシンボルエラー":スロー(オブジェクト、 "式" を継承する)真ではありません"

これらのエラーは大したことではありません。私は推測にはうんざりです。 Rの構文は、私の見積もりではあまり簡単ではありません。私はそれを正しく得るチャンスはスリムです。

無回答を投稿しないでください。私の経験では、R人はそれに好都合です。私の問題や要望が十分に記述されていない場合、より多くの情報を要求すれば、私は喜んで喜んでくれるでしょう。

EDIT:plm関数でインデックス引数を忘れました。それはそこにあるはずです。

答えて

0

Rで頭を囲むのが難しいのは、他の言語で使われている "マクロ"アプローチが好きではないということです(StataをRに分岐する前にコードすることを学びました)。ほとんどの場合、ループ・イン・マクロ参照の代わりに*適用関数を使用して、やりたいことをする方法があります。

ここでは、私があなたの特定の問題にアプローチする方法を示します。

data <- data.frame(dep = runif(100), var1=runif(100), var2=runif(100),var3=runif(100)) #Create some fake data 

varlist<-c("var1","var2","var3") # Declare your varlist as a vector 

lm.results<- lapply(data[,varlist],function(x) lm(dep ~ x, data=data)) # run the regression on each variable. 

最後の行を少し壊してみましょう。 Rのデータフレームは、実際には余分な構造を持つリストです。リスト内の各項目は変数/列です。したがって、lapply(data[,varlist],FUN)data[,varlist]の各列を使用して、dataの各変数varlistに名前が付けられた関数FUNを評価します。

あなたが必要とする機能(内蔵していないこともあります)が組み込まれていないので、即座に宣言します。function(x) lm(dep ~ x, data=data)は、引数として変数(lapplyコールでは、各変数varlist)を受け取り、その変数のdepを回帰します。結果はlm.resultsという新しいリストに保存されます。

+0

応答する時間をとってくれてありがとうが、これは私が求めていたものではありません。私はモデル内の変数をループする必要があります。したがって、varlist =(a、b、c、d)に対しては、plm(従属〜varlist [a] + var2 + var3 + var4、index = c( "index1"、 "index2")、data = mydata)次に、plm(依存〜varlist [b] + var2 + var3 + var4、index = c( "index1"、 "index2")、data = mydataなど)などです。これが明確でない場合はお詫び申し上げます。さらに、これは線形モデル(lm)でも機能するかもしれませんが、より複雑なモデル(prais、plm)が* apply関数でより複雑になることがわかりました。 – Xander

+0

明らかにこれは対になっている例です。関数呼び出しに '+ var2 + var3'などを追加するだけです。私はこれがPLMで動作しない理由は見当たりません。 – rsandler

+0

あなたはそうです。これはまさに私が探していたもので、plm回帰では間違いなく働いていました。本当にありがとう! – Xander

関連する問題