我有一些数据,我经常运行回归分析。每个“块”数据都会配合不同的回归方程。例如每个州可能有一个不同的函数来解释因变量。这似乎是一个典型的“拆分-应用-组合”问题,因此我正在使用 plyr 包。我可以轻松创建
下面是一个完全人为制造的例子,说明我想要做什么:
lm()
对象的列表,这很有效。但我还不太确定如何稍后使用这些对象来预测另一个数据框中的值。下面是一个完全人为制造的例子,说明我想要做什么:
# setting up some fake data
set.seed(1)
funct <- function(myState, myYear){
rnorm(1, 100, 500) + myState + (100 * myYear)
}
state <- 50:60
year <- 10:40
myData <- expand.grid( year, state)
names(myData) <- c("year","state")
myData$value <- apply(myData, 1, function(x) funct(x[2], x[1]))
## ok, done with the fake data generation.
require(plyr)
modelList <- dlply(myData, "state", function(x) lm(value ~ year, data=x))
## if you want to see the summaries of the lm() do this:
# lapply(modelList, summary)
state <- 50:60
year <- 50:60
newData <- expand.grid( year, state)
names(newData) <- c("year","state")
## now how do I predict the values for newData$value
# using the regressions in modelList?
我怎样使用在modelList
中包含的lm()
对象,利用来自newData
的年份和州独立值进行值预测呢?
.fun
最终在名为piece
的数据框上调用。但是,正如 @BrianDiggs 在聊天中指出的那样,不应该依赖于此。最好将其包装在匿名函数中(请参见我的更新)。 - Joshua Ulrichse.fit=TRUE
。请注意,现在距离这个问题被回答已经过去了8年,我不再使用adply
,而是可能会使用broom
。 - JD Long