【问题标题】:R time-series ddplyR时间序列ddply
【发布时间】:2012-12-04 14:48:34
【问题描述】:

我有一个包含城市、不同日期和这些日期温度的数据库(以下为简化格式)。我想为每个城市计算一段时间内的趋势,以及这种趋势是否显着。

我认为我必须以某种方式将 ddply 与 lm 函数(例如 lm(date ~ temp))结合起来并调用拟合系数,但不知道如何做到这一点......

可能有一个更简单的解决方案 - 非常感谢您帮助我;

W

City    Date    Temp (Celcius)
Amsterdam   Jan-01  21
Amsterdam   Mar-01  23
Amsterdam   May-01  25
Barcelona   Feb-01  20
Barcelona   Mar-01  19
Barcelona   May-01  25
Copenhagen  Jan-01  19
Copenhagen  Feb-01  23
Copenhagen  May-01  22

我试过了:

这是我尝试过的:

tempdata=read.csv("tempfile.csv", header=TRUE, sep=",", as.is=TRUE)
tempdata$Date <- as.Date(tempdata$Date, "%d/%m/%Y")

funcreg = function(x) {regmodel=lm(tempdata$Date ~ tempdata$Temperature) 
return(data.frame(regmodel$coefficients[2]))

}

ddply(tempdata, .(City), funcreg)

给出以下输出:

        City regmodel.coefficients.2.
1  Amsterdam                 14.71244
2  Barcelona                 14.71244
3 Copenhagen                 14.71244

输入:

structure(list(City = c("Amsterdam", "Amsterdam", "Amsterdam", 
"Barcelona", "Barcelona", "Barcelona", "Copenhagen", "Copenhagen", 
"Copenhagen"), Date = c("01/01/2001", "01/03/2001", "01/05/2001", 
"01/02/2001", "01/03/2001", "01/05/2001", "01/01/2001", "01/02/2001", 
"01/05/2001"), Temperature = c(21L, 23L, 25L, 20L, 19L, 25L, 
19L, 23L, 22L), X = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("City", 
"Date", "Temperature", "X"), class = "data.frame", row.names = c(NA, 
-9L))

【问题讨论】:

  • funcreg 中使用x 而不是tempdata。您可能还想考虑一下,哪些变量是独立的,哪些是依赖的。
  • 谢谢 - 非常感谢 - 解决了它。我的愚蠢错误。我是编写函数的新手。一个问题导致另一个问题——我也对回归的 p 值和 t 值感兴趣。但是 - 返回函数只允许输出一个变量。我可以运行多个函数,并将数据框合并在一起,但我想知道是否有更智能的方法。
  • @Roland,也许将您的评论作为答案,以便将问题标记为已解决?

标签: r time-series plyr regression


【解决方案1】:

funcreg 中使用x 而不是tempdata。您还应该在回归中切换变量。温度显然是这里的依赖项。

tempdata$Date <- as.Date(tempdata$Date,'%d/%m/%Y')

funcreg = function(x) {
  regmodel <- lm(Temperature ~ Date, data=x) 
  data.frame(trend = regmodel$coefficients[2], 
                 p = summary(regmodel)$coef["Date","Pr(>|t|)"])                       
}

library(plyr)
ddply(tempdata, .(City), funcreg)

        City      trend           p
1  Amsterdam 0.03333025 0.006125688
2  Barcelona 0.06301304 0.298501483
3 Copenhagen 0.01696590 0.660997625

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2020-09-15
    • 2011-04-22
    • 2016-12-30
    相关资源
    最近更新 更多