Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将多元时间序列用作lm中的数据时,将tsp属性保留在响应变量中_R_Lm - Fatal编程技术网

R 将多元时间序列用作lm中的数据时,将tsp属性保留在响应变量中

R 将多元时间序列用作lm中的数据时,将tsp属性保留在响应变量中,r,lm,R,Lm,我想知道如何捕获公式中使用的响应变量的tsp属性,例如在lm中 在model.frame的帮助下,它指出选项na.action=NULL应保留tsp属性: 除非na.action=NULL,否则时间序列属性将从中删除 找到的变量 但如果使用多元时间序列对象作为数据,情况似乎并非如此。下面是一个使用lm的示例: Seatbelts[,"drivers"] Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 196

我想知道如何捕获公式中使用的响应变量的tsp属性,例如在
lm

model.frame
的帮助下,它指出选项
na.action=NULL
应保留
tsp
属性:

除非na.action=NULL,否则时间序列属性将从中删除 找到的变量

但如果使用多元时间序列对象作为数据,情况似乎并非如此。下面是一个使用
lm
的示例:

    Seatbelts[,"drivers"]
      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
1969 1687 1508 1507 1385 1632 1511 1559 1630 1579 1653 2152 2148
1970 1752 1765 1717 1558 1575 1520 1805 1800 1719 2008 2242 2478
1971 2030 1655 1693 1623 1805 1746 1795 1926 1619 1992 2233 2192
...

out<-lm(drivers~log(PetrolPrice)+law,data=Seatbelts,na.action=NULL,y=TRUE)
out$y
   1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16  
1687 1508 1507 1385 1632 1511 1559 1630 1579 1653 2152 2148 1752 1765 1717 1558
...
试试这个:

library(dyn)
out <- dyn$lm(drivers ~ log(PetrolPrice) + law, data = Seatbelts, na.action = NULL)
y <- fitted(out) + resid(out)
y
库(dyn)

out我最后做的是,如果调用包含
数据
参数,我会在进一步处理数据之前存储可能的
tsp
属性:

if (missing(data)) {
  data <- environment(formula)
  tsp_data <- NULL
} else {
  tsp_data <- tsp(data)
  data <- as.data.frame(data)
}

谢谢,这是可行的,除了我实际上需要在我自己的函数(不是lm)中使用公式,所以我想我必须查看
dyn
的源代码,看看它如何以不同的方式处理
tsp
属性…添加了第二种方法。再次感谢,但正如我所说,我需要捕获公式中使用的变量的tsp属性,即函数调用内部,例如lm函数内部。公式中使用的变量的tsp属性与安全带的tsp属性相同。好的,我应该更精确,上面的安全带案例只是一个更一般的案例。我现在已澄清问题。
library(dyn)
out <- dyn$lm(drivers ~ log(PetrolPrice) + law, data = Seatbelts, na.action = NULL)
y <- fitted(out) + resid(out)
y
 out <- lm(drivers ~ log(PetrolPrice) + law, Seatbelts, y = TRUE)
 out$y <- ts(out$y)
 tsp(out$y) <- tsp(Seatbelts)
if (missing(data)) {
  data <- environment(formula)
  tsp_data <- NULL
} else {
  tsp_data <- tsp(data)
  data <- as.data.frame(data)
}
class(y) <- if (p > 1) {
  c("mts", "ts", "matrix")
} else "ts"
if (is.null(tsp(y))) {
  if (!is.null(tsp_data)) {
    tsp(y) <- tsp_data
  } else tsp(y) <- c(1, n, 1)
}