我是R新手,但我需要針對不同ID使用面板數據運行幾個簡單迴歸。 我有4列1. ID 2.時間3. Y 4. X和我需要回歸Y〜X爲每個ID。我有100個ID,每個ID有120個時間段,所以我需要用120個觀測值運行100個簡單迴歸。在R中使用面板數據在不同ID中運行多個迴歸
我該怎麼辦呢?
非常感謝您提前!
我是R新手,但我需要針對不同ID使用面板數據運行幾個簡單迴歸。 我有4列1. ID 2.時間3. Y 4. X和我需要回歸Y〜X爲每個ID。我有100個ID,每個ID有120個時間段,所以我需要用120個觀測值運行100個簡單迴歸。在R中使用面板數據在不同ID中運行多個迴歸
我該怎麼辦呢?
非常感謝您提前!
我們既可以使用data.table
library(data.table)
setDT(df1)[, coef(lm(Y~X)), by = ID]
或者如果我們使用broom
,那麼我們就可以得到輸出
library(broom)
setDT(df1)[, glance(lm(Y~X)), Species]
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
非常感謝您!唯一的問題是我的R無法找到瀏覽功能。它是否在我可能沒有安裝的pacage中? – Beatrice
@Beatrice'glance'來自'庫(掃帚)'如果你沒有安裝它,'install.packages(「掃帚」)'然後加載'庫(掃帚)' – akrun
非常感謝你!我會馬上嘗試! – Beatrice