1

1970年1月から2009年12月までの月次株式リターン(行)を含むメガデータフレームがあり、米国を含む7か国(列)があります。私の仕事は、70年代、80年代、90年代、00年代の、4つの異なる期間の値を使用して、各国の株式リターン(従属変数)を米国の株式リターン(独立変数)に回帰することです。

データセット(.csv)は、 https://docs.google.com/file/d/0BxaWFk-EO7tjbG43Yl9iQVlvazQ/editからダウンロードできます 。

これは、個別に実行して結果を報告するための24の回帰があることを意味します。これは、lm()関数を使用してすでに実行しています。ただし、現在、Rをよりスマートに使用して、目的を達成し、24セットの結果を生成するカスタム関数を作成しようとしています。

10年で120か月あることを知って、期間に従ってクラスター化された観測値を含むサブデータフレームを作成しました。

seventies = mydata[1:120, ] # 1970s (from Jan. 1970 to Dec. 1979)
eighties = mydata[121:240, ] # 1980s (from Jan. 1980to Dec. 1989)
nineties = mydata[241:360, ] # 1990s (from Jan. 1990 to Dec. 1999)
twenties = mydata[361:480, ] # 2000s (from Jan. 2000 to Dec. 2009)

注意:新しく作成された変数はそれぞれ、7か国にわたる120の観測値に対する120x7の行列です。

Javaを使用して24の回帰を実行するには、覆瓦forループを使用する必要があります。

希望する結果が得られる関数を作成するために必要な手順を誰かに教えてもらえますか?Rコードのスニペットもいただければ幸いです。mapplyこの機能も使われると思います。

ありがとうございます。私の投稿に編集が必要な場合はお知らせください。

4

3 に答える 3

1

これを試して:

 install.packages('plyr')
 library('plyr')
 myfactors<-c(rep("seventies",120),rep("eighties",120),rep("nineties",120),rep("twenties",120))
 tapply(y,myfactors,function(y,X){ fit<-lm(y~ << regressors go here>>; return (fit);},X=mydata)
于 2013-01-29T05:12:59.680 に答える
1

このlm関数は、応答変数として行列を受け入れ、各列の個別の回帰を計算するためcbind、その部分でさまざまな国を組み合わせる()ことができます。

異なる10年間の分散が同じであると想定する場合は、10年間のダミー変数を使用して異なる10年間を適合させ(gl10年間の係数を計算する簡単な方法については関数を参照)、への1回の呼び出しですべてを実行できますlm。簡単な例:

fit <- lm( cbind( Sepal.Width, Sepal.Length, Petal.Width ) ~ 0 + Species + Petal.Length:Species,
    data=iris )

これにより、個別の回帰と同じ係数推定値が得られます。標準偏差と自由度(したがって、テストとそれらに依存するその他のもの)のみが、回帰を個別に実行する場合とは異なります。

10年ごとに個別に計算された標準偏差が必要な場合は、tapplyまたは(10年の情報をの引数にsapply渡す)または他の適用関数を使用できます。subsetlm

いくつかの異なる回帰モデルからの結果を表示するために、新しいスターゲイザーパッケージが興味深い場合があります。

于 2013-01-29T16:29:02.437 に答える
1

出版品質のテキストまたはLaTeX回帰結果テーブルには「stargazer」パッケージを使用してみてください。

于 2013-08-05T17:39:42.500 に答える