2017-09-17 9 views
2

私は統計的な目的でRを使用し始めましたが、何か助けに感謝します。回帰のループを作成する方法

私の仕事は、インデックスから1つのインデックスと20の株を計算することです。データには22列(DATE、INDEX、S1 .... S20)と約4000行(1日1行)が含まれています。

最初に、 "データセット"と呼ばれる.csvファイルをインポートし、計算されたログをこの方法で返し、すべての株 "S1-S20"にINDEXを加えたものに対して行いました。

n <- nrow(dataset) 
S1 <- dataset$S1 
S1_logret <- log(S1[2:n])-log(S1[1:(n-1)]) 

は第二に、私はdata.frameにデータを記憶されている:

logret_data <- data.frame(INDEX_logret, S1_logret, S2_logret, S3_logret, S4_logret, S5_logret, S6_logret, S7_logret, S8_logret, S9_logret, S10_logret, S11_logret, S12_logret, S13_logret, S14_logret, S15_logret, S16_logret, S17_logret, S18_logret, S19_logret, S20_logret) 

それから対数リターンを用いて回帰(S20へS1)を実行した:

S1_Reg1 <- lm(S1_logret~INDEX_logret) 

Iのcouldnより効率的な方法でコードを書く方法を理解し、繰り返しのためにいくつかの関数を使用します。

さらにステップでは、選択した間隔で毎日断面回帰を実行する必要があります。これを手動で行うことは不可能であり、Rは迅速な解決策を提供する必要があります。私はこの部分をどうやって行うのかについては非常に不安です。しかし、以前の計算ではループの種類を使用したいと思います。

しかし、私は必要なRコーディングの知識が不足しています。どんな種類の助けが頂点になるか、または文学やチュートリアルのアドバイスが高く評価されています!ありがとうございました!

答えて

1

回帰を実行するために、マトリックス内のすべての独立した従属変数を指定できます。このような何か:

#example data 
Y1 <- rnorm(100) 
Y2 <- rnorm(100) 
X <- rnorm(100) 
df <- data.frame(Y1, Y2, X) 

#run all models at once 
lm(as.matrix(df[c('Y1', 'Y2')]) ~ X) 

アウト:私は:)助けることができる

Call: 
lm(formula = as.matrix(df[c("Y1", "Y2")]) ~ df$X) 

Coefficients: 
      Y1  Y2  
(Intercept) -0.15490 -0.08384 
df$X   -0.15026 -0.02471 
+0

うれしいです。 – LyzandeR

+0

これは完全に機能します! 私は、一定の期間(1回の回帰)で同じ効果的な方法で横断的回帰をどのように実行できるのか不思議です。 1日の従属変数として各在庫(S1〜S20)のログを使用し、前に計算された係数を説明変数として使用します。私はY - X + 0で動作するインターセプトを削除する必要はありません。 この種の回帰を実行すると、はるかに複雑になります。回帰が50日を超える場合、50の推定係数(毎日1つ)と50 * 20 = 1000の誤差で終わるはずです。 – Consti

+0

これはコメントで議論すべきでない新しい質問です。自由に新しい質問を追加することができます(あなたに聞くことのできる質問に制限はありません)。また、達成したいことを明確にするための例を追加することもできます。した)。 – LyzandeR

関連する問題