如何在R中對資料框執行分組線性迴歸?


分組線性迴歸意味著為每個組級別建立迴歸模型。例如,如果我們有一個因變數y和一個自變數x,還有一個分組變數G將x和y的組合劃分為多個組,那麼我們可以為每個組建立一個線性迴歸模型。在R中,我們可以將資料框轉換為data.table物件,這將幫助我們輕鬆建立迴歸模型。

示例

 線上演示

考慮以下資料框 -

G1<−sample(LETTERS[1:4],20,replace=TRUE)
x1<−rnorm(20,2,0.96)
y1<−rnorm(20,5,1)
df1<−data.frame(G1,x1,y1)
df1

輸出

   G1    x1    y1
1 C 1.2692290 3.994126
2 C 1.6317682 4.474443
3 D 1.3686734 5.444823
4 D 2.4969567 5.818360
5 C 2.3882221 3.766412
6 A 2.7568873 5.506297
7 A 2.1352764 4.548771
8 B 2.5232049 5.378314
9 A 2.8695959 4.735447
10 C −0.2317400 5.280478
11 A 1.1473469 5.064822
12 A 2.9099241 4.090654
13 A 2.4095434 6.538454
14 C 2.5310162 7.137598
15 A 2.4097431 4.778472
16 C 0.4945313 5.511772
17 C 1.3427334 5.030479
18 A 1.5200120 6.758618
19 A 2.4414779 5.854175
20 B −0.6968409 4.594522

載入data.table包並將資料框df1轉換為data.table物件 -

library(data.table)
df1<−data.table(df1)

建立由G1列定義的組的線性迴歸模型 -

df1[,as.list(coef(lm(y1 ~ x1))), by=G1]

輸出

   G1 (Intercept) x1
1: C 4.959098 0.05109642
2: D 4.991700 0.33106700
3: A 6.536957 -0.53189331
4: B 4.764140 0.24341026

讓我們看看另一個例子 -

Class<−sample(c("I","II","III"),20,replace=TRUE)
Ratings<−sample(1:10,20,replace=TRUE)
Salary<−sample(20000:50000,20)
df2<−data.frame(Class,Ratings,Salary)
df2

輸出

Class Ratings Salary
1 I 4 28423
2 III 1 34728
3 II 1 26975
4 I 9 26777
5 II 6 29501
6 I 8 33061
7 II 4 43584
8 I 4 42525
9 II 9 30526
10 I 1 32872
11 I 7 21198
12 I 3 20971
13 III 9 49071
14 I 1 40314
15 III 1 36269
16 I 6 45482
17 II 1 48595
18 I 8 44054
19 I 1 25294
20 III 10 34944
df2<−data.table(df2)

建立三個班級中Salary和Ratings的迴歸模型 -

df2[,as.list(coef(lm(Salary~Ratings))),by=Class]

輸出

Class (Intercept) Ratings
1: I 31894.13 194.9152
2: III 35270.10 663.4089
3: II 40405.42 -1087.9103

更新於: 2020年11月7日

5K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告