gpt4 book ai didi

R通过lapply命令从乘法回归中提取回归系数

转载 作者:行者123 更新时间:2023-12-02 08:50:13 24 4
gpt4 key购买 nike

我有一个包含多个变量的大型数据集,其中一个是状态变量,每个状态的编码为 1-50。我想对数据集的其余 27 个变量(总共有 55 个变量)运行 28 个变量的回归,并且特定于每个状态。

换句话说,对于状态==1 的观察值,在协变量 1、协变量 2、...、协变量 27 上运行变量 1 的回归。然后我想对状态 2-50 的 variable1 重复此过程,并对 variable2、variable3、...、variable28 重复整个过程。

我想我已经编写了正确的 R 代码来执行此操作,但接下来我想做的是提取系数,最好是提取到系数矩阵中。有人可以帮我解决这个问题吗?这是我到目前为止编写的代码:

for (num in 1:50) {

#PUF is the data set I'm using

#Subset the data by states
PUFnum <- subset(PUF, state==num)

#Attach data set with state specific data
attach(PUFnum)

#Run our prediction regression
#the variables class1 through e19700 are the 27 covariates I want to use
regression <- lapply(PUFnum, function(z) lm(z ~ class1+class2+class3+class4+class5+class6+class7+
xtot+e00200+e00300+e00600+e00900+e01000+p04470+e04800+
e09600+e07180+e07220+e07260+e06500+e10300+
e59720+e11900+e18425+e18450+e18500+e19700))

Beta <- lapply(regression, function(d) d<- coef(regression$d))


detach(PUFnum)
}

最佳答案

这是经典Split-Apply-Combine 问题的另一个示例,可以使用@hadley 提供的plyr 包来解决。在你的问题中,你想要

  1. 按状态分割数据帧
  2. 对每个子集应用回归
  3. 将系数组合到数据框中。

我将使用 MASS 库中可用的 Cars93 数据集来说明它。我们有兴趣根据国家的 origin 找出 horsepowerenginesize 之间的关系。

# LOAD LIBRARIES
require(MASS); require(plyr)

# SPLIT-APPLY-COMBINE
regressions <- dlply(Cars93, .(Origin), lm, formula = Horsepower ~ EngineSize)
coefs <- ldply(regressions, coef)

Origin (Intercept) EngineSize
1 USA 33.13666 37.29919
2 non-USA 15.68747 55.39211

编辑。对于您的示例,将 PUF 替换为 Cars93,将 state 替换为 Origin 并将 fm 替换为公式

关于R通过lapply命令从乘法回归中提取回归系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com