[英]Write a loop for my function in r
我目前正在尝试针对30个变量编写滞后回归的第一个循环。 变量被标记为rx1,rx2 ... rx3,数据帧称为my_num_data。
我创建了一个看起来像这样的循环:
z <- zoo(my_num_data)
for (i in 1:30)
{dyn$lm(my_num_data$rx[i] ~ lag(my_num_data$rx[i], 1)
+ lag(my_num_data$rx[i], 2))
}
但是我收到一条错误消息:
model.frame.default(formula = dyn(my_num_data $ rx [i]〜lag(my_num_data $ rx [i]):变量'my_num_data $ rx [i]'的类型无效(NULL))中的错误
谁能告诉我循环的问题是什么?
谢谢!
这将产生一个列表L
,其第i个成分的名称为z
的第ith列的名称,其内容为z
的第i个列在前两个滞后的回归。 Lag
与lag
相同,只是参数k的符号相反。
library(dyn)
z <- zoo(anscombe) # test input using builtin data.frame anscombe
Lag <- function(x, k) lag(x, -k)
L <- lapply(as.list(z), function(x) dyn$lm(x ~ Lag(x, 1:2)))
我对R不是很熟悉,但是看来您正在尝试增加rx的索引。 rx是具有不同索引值的向量吗? 如果不是解决方案,我将串联一个字符串
for (i in 1:30){
varName <-- "rx"+i
dyn$lm(my_num_data$rx[i] ~ lag(my_num_data$rx[i], 1)
+ lag(my_num_data$varName, 2))
}
再说一次,我可能离这里很远,因为如果我的第一篇文章和R对我来说仍然很陌生。
第一个问题,我很确定您要寻找的函数是dynlm()
,没有$
字符。 其次,使用$rx[i]
不会连接rx
和i
的内容,而是选择$rx
具有索引i
的(单个)元素。 尝试一下...已编辑,因为我没有您的数据,所以无法在我的机器上对其进行测试:
results <- list()
for (i in 1:30) {
results[[i]] <- dynlm(my_num_data[,i] ~ lag(my_num_data[,i], 1)
+ lag(my_num_data[,i], 2))
}
然后列表元素results[[1]]
将是第一次回归的结果,依此类推。
注意,这里假设你的my_num_data
data.frame只包含列的rx1
, rx2
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.