适用于可变窗口大小的R移动窗口模型
目前,我正在使用R中的数据帧,其中第一列是日期的数字。现在,我将数据按日期升序排序。我想在20天内拟合一个模型(我提供的代码是一个简单的OLS模型),但现在我不得不假设我每天有124个观测值,需要使用for循环,但事实并非如此。我有没有办法在不做假设的情况下加入一个20天的窗口期?我目前的算法如下。任何帮助都将不胜感激。输入是一个数据集和两个整数,预测和预测适用于可变窗口大小的R移动窗口模型,r,time-series,linear-regression,modeling,R,Time Series,Linear Regression,Modeling,目前,我正在使用R中的数据帧,其中第一列是日期的数字。现在,我将数据按日期升序排序。我想在20天内拟合一个模型(我提供的代码是一个简单的OLS模型),但现在我不得不假设我每天有124个观测值,需要使用for循环,但事实并非如此。我有没有办法在不做假设的情况下加入一个20天的窗口期?我目前的算法如下。任何帮助都将不胜感激。输入是一个数据集和两个整数,预测和预测 rollerOLS <- function(data, predict, predictor){ res <- list(
rollerOLS <- function(data, predict, predictor){
res <- list()
alpha <- c()
beta <- c()
m <- dim(data)[1]
for(i in 1:(floor(m/124)-10)){
data.new <- as.data.frame(data[c((1+(124*(i-1))):((i+9)*124)),])
data.pred <- as.data.frame(data[c((1+(124*(i+9))):((i+10)*124)-1),])
n <- dim(data.new)[1]
k <- dim(data.pred)[1]
x <- data.new[-1,predictor]
y <- data.new[-n, predict]
mod <- lm(y ~ x)
ts <- mod$coefficients[1] + mod$coefficients[2]*data.pred[-1,predictor]
actual <- data.pred[-k,predict]
alpha[i] <- mod$coefficients[1]
beta[i] <- mod$coefficients[2]
}
coef <- as.data.frame(cbind(alpha, beta))
res$coefs <- coef
res <- as.data.frame(res)
return(res)
}
rollerOLS请显示dput(数据)
或其dput(head(数据))
这显然是一个大数据集,因此我只包括数据的head。结构(列表(日期=c(17169.1354166667,17169.1423611111,17169.1458333333,17169.1493055556,17169.1527777817169.15625),开放=c(14.07,13.92,13.96,13.97,13.97,13.98),高=c(14.07,13.97,13.98,13.97,13.99,13.99),低=c(13.97,13.92,13.85,13.97,13.96,13.98),最后价格=c(13.99,13.99,13.97,13.97,13.98),TR=c(0.75,1.5,0.75,1,1,1)),.Names=c(“日期”、“开盘”、“高”、“低”、“最后价格”、“TR”),row.Names=c(NA,6L),class=“data.frame”)请显示dput(数据)
或其dput(头部(数据))
这显然是一个大数据集,所以我只包括数据的头部。结构(列表(日期=c(17169.1354166667,17169.1423611111,17169.1458333333,17169.1493055556,17169.1527777817169.15625),开放=c(14.07,13.92,13.96,13.97,13.97,13.98),高=c(14.07,13.97,13.98,13.97,13.99,13.99),低=c(13.97,13.92,13.85,13.97,13.96,13.98),最后价格=c(13.99,13.99,13.97,13.97,13.98),TR=c(0.75,1.5,0.75,1,1,1)),.Names=c(“日期”、“开盘”、“高位”、“低位”、“最后价格”、“TR”),row.Names=c(NA,6L),class=“数据帧”)