【发布时间】:2019-08-06 11:12:09
【问题描述】:
我已经使用 for 循环模拟了 holtwinter 函数,现在我正在尝试优化 alpha、beta、gamma 的值。但是当我运行 optim 函数时,它返回的值与我作为起点传递的值相同。我是 R 的新手,所以寻求帮助。
我将提供我编写的代码和我正在使用的数据表。
我已经按照给定的格式尝试了优化,但无法得到想要的结果
sol3<-function(par){
bal_data<- read.csv("C:/Gitaish_bkp/gitaish/Oracle/ittemar/kpmg docs/hw/bal_data.csv", header=TRUE,sep=",",stringsAsFactors =FALSE)
final_trend<-data.frame(u= numeric(0))
#alpha<-par[1]
#beta<-par[2]
#gamma<-par[3]
for (i in 5:11){
data_cur<-as.numeric(bal_data$data[i])
data_u_prev<-as.numeric(bal_data$u[i-1])
data_v_prev<-as.numeric(bal_data$v[i-1])
bal_data$u[i]<-(x[1]*data_cur/bal_data$forecast[i-4]+(1-x[1])*(data_u_prev+data_v_prev))
data_u_cur<-as.numeric(bal_data$u[i])
bal_data$v[i]<-(x[2]*(data_u_cur-data_u_prev)+(1-x[2])*data_v_prev)
data_v_cur<-as.numeric(bal_data$v[i])
bal_data$forecast[i]<-(x[3]*(bal_data$data[i]/data_u_cur)+(1-x[3])*bal_data$forecast[i-4])
bal_data$PV[i]<-(data_u_prev+data_v_prev)*bal_data$forecast[i-4]
i<-i+1
dt<-sum(bal_data$data)
pred<-sum(bal_data$pv)
return(dt^2-pred^2)
}
}
x<-c(0.9,0.9,0.9)
result<-optim(x,sol3)
> result$par
[1] 0.9 0.9 0.9
下面是我用来优化代码的数据。
data u v forecast
11551714.57 1.0506142
10860713.81 0.9877685
10989780.35 0.9995069
10578597.92 10995202 0 0.9621104
10343260.81 0
10481946.15
10144200.01
10486943.26
10701326.12
10530507.92
10633318.04
【问题讨论】:
-
能否请您使用
dput()stackoverflow.com/questions/49994249/example-of-using-dput 发布数据 -
你的函数没有使用
par变量——你把它注释掉了。所以没有什么可以优化的。 -
对不起,我只是尝试了几个选项,实际上代码发布在下面
-
dput 输出已发布并已粘贴修正代码
标签: r