如何对R中的数据框执行逐组线性回归?

逐组线性回归意味着为组级别创建回归模型。例如,如果我们有一个因变量y和自变量x还有一个将x和y的组合分为多个组的分组变量G,那么我们可以为每个组创建线性回归模型。在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)

创建三个类别的薪资和等级的回归模型-

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

以上是 如何对R中的数据框执行逐组线性回归? 的全部内容, 来源链接: utcz.com/z/340781.html

回到顶部