2016-08-20 13 views
-3

私はRの新機能ですが、パネルデータで異なるIDに対していくつかの簡単な回帰を実行する必要があります。 私は4列1を持っています。ID 2.時間3. Y 4. Xと私は各IDのY〜Xを回帰する必要があります。 IDごとに120の期間を持つ100のIDがあるので、120回の観測で100回の単純回帰を実行する必要があります。パネルデータで異なるIDについてRで複数の回帰を実行する

どうすればいいですか?

ありがとうございます!

答えて

2

私たちは、いずれかを使用することができdata.table

library(data.table) 
setDT(df1)[, coef(lm(Y~X)), by = ID] 

それとも我々は、我々は、出力

library(broom) 
setDT(df1)[, glance(lm(Y~X)), Species] 

の複数の列を取得することができ、 broomを使用している場合は pvalues

setDT(df1)[, summary(lm(Y~X))$coef[,4], by = ID] 

を取得します

それともbroom/dplyr

library(dplyr) 
df1 %>% 
    group_by(ID) %>% 
    do(model = lm(Y~X, .)) %>% 
    glance(model) 

再現例

data(iris) 
iris %>% 
    group_by(Species) %>% 
    do(model = lm(Sepal.Width ~Petal.Width, .)) %>% 
    glance(model) 
#  Species r.squared adj.r.squared  sigma statistic  p.value df  logLik  AIC  BIC deviance df.residual 
#  <fctr>  <dbl>   <dbl>  <dbl>  <dbl>  <dbl> <int>  <dbl>  <dbl>  <dbl> <dbl>  <int> 
#1  setosa 0.0541735 0.03446878 0.3724741 2.749265 1.038211e-01  2 -20.546993 47.093987 52.830056 6.659375   48 
#2 versicolor 0.4408943 0.42924626 0.2370691 37.851387 1.466661e-07  2 2.043799 1.912403 7.648472 2.697685   48 
#3 virginica 0.2891514 0.27434209 0.2747206 19.524930 5.647610e-05  2 -5.326334 16.652669 22.388738 3.622626   48 

data.table/broom

as.data.table(iris)[, glance(lm(Sepal.Width~Petal.Width)), by = Species] 
#  Species r.squared adj.r.squared  sigma statistic  p.value df  logLik  AIC  BIC deviance df.residual 
#1:  setosa 0.0541735 0.03446878 0.3724741 2.749265 1.038211e-01 2 -20.546993 47.093987 52.830056 6.659375   48 
#2: versicolor 0.4408943 0.42924626 0.2370691 37.851387 1.466661e-07 2 2.043799 1.912403 7.648472 2.697685   48 
#3: virginica 0.2891514 0.27434209 0.2747206 19.524930 5.647610e-05 2 -5.326334 16.652669 22.388738 3.622626   48 
+0

ありがとうございました!唯一のことは私のRがグランズ機能を見つけることができないことです。おそらく私はインストールされていないでしょうか? – Beatrice

+0

@Beatrice 'glance'は' library(broom) 'からインストールされています。' install.packages( "broom") 'をロードし、' library(broom) 'をロードします。 – akrun

+1

ありがとうございます!私は今それを試してみましょう! – Beatrice

1

付きでnlmeパッケージはlmListがあります

共通のプールされた分散を使用する場合は、

またはpool = TRUE(デフォルト)を使用します。 "lmList"クラスオブジェクトで動作するこれらのメソッドもチェックしてください:

methods(class = "lmList") 
+0

私はあなたが言ったようにしようとしてくれてありがとう、しかし、どのように係数に関連付けられてpvaluesを引き出すことができますか?ありがとう! – Beatrice

+0

'summary(fm)'を試してください –

+0

私は試しましたが、pvaluesは表示されません! – Beatrice

関連する問題