我编写了一个函数来进行Arima建模,输出一个系数和p值表,对p值进行排名,并返回一个无显着变量的arima模型。
该函数需要两个输入,一个时间序列对象和一个数据框。
代码如下:
backward_stepwise<-function(x, y){
repeat{
arima_result<-auto_arima(x)
arima_pvals<-p_calc(arima_result)
arima_outputs<-run_outputs(arima_result, arima_pvals)
arima_ranked<-rank_pval(arima_outputs)
# temporary fix to .xreg being added to term names
for(i in 1:length(arima_ranked$term)){
arima_ranked$term<-gsub(arima_ranked$term, pattern = 'xreg.',
replacement = "")
}
remove_num_one<-remove_one(arima_ranked)
# removed the cond_select function so that y and x write over
themselves
y<-subset(y, select = colnames(y) != remove_num_one)
x<-as.ts(y)
if(min(arima_ranked$rank, na.rm = TRUE) != 1){
break
}
}
return(arima_result)
}
我将其应用于时间序列对象列表和数据帧列表
时间序列列表示例
CAN_V98
ADE_U91
ADE_V95
数据帧示例
CAN_V98
ADE_U91
ADE_V95
当我将其应用于mapply或for循环时,这两种方法都是从同一索引获取值的方法。也就是说,将向后逐步执行的功能剥离CAN_V98的变量,并继续使用数据帧列表中的CAN_V98,或者在执行第一个循环后,它将使用数据帧列表中的第二个数据帧。
# Application via for loop
for(i in mkt_grd){
x<-list_ts_actual[[i]]
y<-list_df_actual[[i]]
ts_outputs[[i]]<-backward_stepwise(x, y)
}
# Application via mapply
ts_outputs1<-mcmapply(backward_stepwise, list_ts_actual,
list_df_actual,SIMPLIFY = FALSE)
谢谢您的帮助
答案 0 :(得分:0)
def frequency():
f = open('Loto4.txt', "r")
l = []
for line in f:
line = line.strip('\n')
start = line.find("[")
end = line.find("]")
line = line[start + 1:end]
l.extend([int(i) for i in line.split(',')])
print(line)
print(l)
frequency()
不能像嵌入式for循环那样工作。可以这么说,它不会遍历每个mapply
的每个j
。
i
如您所见,它是否并行进行迭代,如果列表y的长度较短,它将回收,即,
mapply(function(x, y){cat("x = ", x, " y = ", y, "\n")},
x = 1:5, y = 1:5)
x = 1 y = 1
x = 2 y = 2
x = 3 y = 3
x = 4 y = 4
x = 5 y = 5