我有一個函數myFunction<-function(var1,var2)
,它使用兩個輸入變量(var1
和var2
),並在幾個計算步驟後返回結果(此結果爲經過幾次迴歸後獲得)。我的兩個輸入變量具有有限的可能值(它們只能在名爲myList
的20個整數列表中選擇,而var2
必須大於var1
)。R - 如何從列表中找到最佳輸入變量,以最大化功能輸出而無循環
我的目標是找到var1
和var2
的最佳組合,以最大化我的函數(總是正數)的輸出。我已經有了兩個for
循環的答案,我嘗試了所有可能的組合,但它不是非常快且不像R。
有沒有更有效的方法來找到最好的var1
和var2
最大限度地提高myFunction
的結果?
這時我與for
循環的解決辦法是這樣的:
myList<-c(5,10,15,20,25,30,35,40,45,50,55,60,75,80,90,105,120,135,150,165,180)
bestVar1<-0;bestVar2<-0;bestResult<-0
for (i in myList[(1:length(myList))-1] {
otherList<-myList[which(myList>i)]
for (j in otherList){
temp<-myFunction(i,j)
if (temp>bestResult) {bestResult<-temp;bestVar1<-i;bestVar2<-j}
}
}
bestVar1;bestVar2;bestResult # to know the results
編輯:myFunction
的myFunction
表達的是類似的東西:
myFunction<-function(var1,var2){
columnVar1<-df[,paste0('d',var1);columnVar2<-df[,paste0('d',var2]
column_2Var1<-df4[,paste0('d',var1);column_2Var2<-df4[,paste0('d',var2]
df2<-cbind(df2,columnVar1,columnVar2)
df3<-cbind(df3,column_2Var1,column_2Var2)
reg<-lm(x1~.,data=df2)
result<-predict(reg,df3)
}
所以基本上我有兩個數據幀df
和df4
,每列20列(每個可能的值爲myList
,它們的移動平均值爲myList
)以及兩個其他數據幀df2
和df3
。我在df2
上用2個新列進行迴歸分析,然後我預測df3
的結果。我只想找到移動平均線的最佳順序以獲得最佳預測值。我簡化了一下myFunction
的內容,但這就是主意。
是myFunction一個黑匣子,或者你有它的表達? –
這確實取決於你的函數調用。它原則上是連續的(儘管使用了不連續的輸入選擇),但可能存在漸變方法,但如果它是用於執行大量搜索的更快方法,那麼可以考慮將矢量化步驟... 也許如果你更多明確你的意思是「有效」,也可能對你的問題有其他幫助。 – DH4wes
「有效」我主要是指最快的方式 – etienne