首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R w/ PLYR中提取组回归系数

在R w/ PLYR中提取组回归系数
EN

Stack Overflow用户
提问于 2012-11-16 06:28:01
回答 3查看 615关注 0票数 3

我试图对数据集中的每个邮政编码运行回归,并将系数保存到数据帧中,但我遇到了问题。

每当我运行下面的代码时,我都会得到一个名为“系数”的数据帧,其中包含每个邮政编码,但每个邮政编码的截距和系数等于简单回归lm(Sealed$hhincome ~ Sealed$square_footage)的结果。

当我运行下面链接中Ranmath的例子中的代码时,一切都像预期的那样工作。我在STATA工作多年后才接触R,所以如果有任何帮助,我将非常感激:)

R extract regression coefficients from multiply regression via lapply command

代码语言:javascript
复制
library(plyr)
Sealed <- read.csv("~/Desktop/SEALED.csv")

x <- function(df) {
      lm(Sealed$hhincome ~ Sealed$square_footage)
}

regressions <- dlply(Sealed, .(Sealed$zipcode), x)
coefficients <- ldply(regressions, coef)
EN

回答 3

Stack Overflow用户

发布于 2012-11-16 10:41:13

由于dlply采用...参数,允许将额外的参数传递给函数,因此可以使操作更简单:

代码语言:javascript
复制
dlply(Sealed,.(zipcode),lm,formula=hhincome~square_footage)

lm的前两个参数是formuladata。由于在这里指定了formula,因此lm将把它给定的下一个参数(Sealed的相关邮政编码特定块)作为data参数...

票数 3
EN

Stack Overflow用户

发布于 2012-11-16 06:45:38

您正在应用函数:

代码语言:javascript
复制
x <- function(df) {
      lm(Sealed$hhincome ~ Sealed$square_footage)
}

数据的每个子集,所以我们不应该感到惊讶,每次的输出都是

代码语言:javascript
复制
lm(Sealed$hhincome ~ Sealed$square_footage)

对吗?试着在你的函数中用df替换Sealed。这样,您引用的是传递给函数的每个单独部分中的变量,而不是数据帧Sealed中的整个变量。

票数 2
EN

Stack Overflow用户

发布于 2012-11-16 07:27:45

问题不在于plyr,而在于函数的定义。您正在调用一个函数,但没有对该变量执行任何操作。

打个比方,

代码语言:javascript
复制
 myFun <- function(x) {
    3 * 7
  }

    >  myFun(2)
    [1] 21
    >  myFun(578)
    [1] 21

如果你对x的不同值运行这个函数,它仍然会给你21,无论x是什么。也就是说,函数中没有对x的引用。在我这个愚蠢的例子中,纠正是显而易见的;在上面的函数中,混淆是可以理解的。可以想象,$hhincome$square_footage应该充当变量。

但是你想让你的x在 $之前改变它的值。正如@Joran正确指出的那样,将sealed$hhincomedf$hhincome互换(对于$squ..也是如此),这将有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13407361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档