2014-05-23 47 views
0

一個函數I創建的模型在一個數據集到extimate一個價格敏感性,現在爲每個單獨的欲extimate「最優價格」以獲得「最大收入」優化和情節中的R

價格爲> 0和< 14.收入是= data$money[i]*sow

我想使用優化功能來找到最大利潤改變每個「我」的價格。我也想對我的功能有一個陰謀。

我的功能:

MYF<-function(x,i) { 
y<-exp(predict(ols, cbind(data[i,!names(data) %in% c("spread") ], spread=(x-data$price_of_system[i])))) 
sow<-y/(1+y) 
return(data$money[i]*sow) 
} 

所以我要尋找的x(my_price),最大限度地爲(data$money[i]*sow)i=5 我用

max <- optimize(MYF, tol = 0.0001,lower=0,upper=14, maximum = TRUE, i=5) 

但[R返回:invalid function value in 'optimize'。我想找到如何繪製這種方式。謝謝

+0

我認爲問題是'MYF'的返回值。 '優化'期望一個單純的價值作爲回報。另見[這裏](http://stackoverflow.com/questions/6658941/r-question-about-optimizing-invalid-function-value-in-optimize)。當然,沒有數據很難說發生了什麼。考慮用[可重現的例子]清楚你的問題(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – alko989

回答

1

而不是指定較低和較高的參數,而是指定間隔。你的功能應該是

max <- optimize(MYF, interval = c(0,14), tol = 0.0001, maximum = TRUE, i = 5) 

對於你的第二個問題,這裏是一個例子。我認爲它可能會幫助你:

test.function <- function(x,i) { 
    2 * x * i 
} 

curve(test.function(x, i = 5), xlim=c(0,14)) 
+0

我想繪製如何改變我的x在區間(0,14)返回的y發展 – dax90

+0

看到我更新的答案。讓我知道如果這就是你想要的。 –

+0

'lower'和'upper'與'interval'的用途相同,所以我認爲這不是問題。我認爲問題是函數'MYF'的返回值。 – alko989