[英]Optimise/Optimize() nonlinear function for Ordinal Logistic Regression Function in R
我想最大化這個非線性 function,但我不知道我做錯了什么。 這是代碼:
max.fun<-function(y0,y1,y2,pi0,pi1,pi2){y0*log(pi0)+y1*log(pi1)+y2*log(pi2)}
th = matrix(c(-1,-3,1),nrow=1,ncol = 3)
y0 = matrix(c(26,104),nrow=1,ncol = 2)
y1 = matrix(c(33,72),nrow=1,ncol = 2)
y2 = matrix(c(22,31),nrow=1,ncol = 2)
race = matrix(c(1,0),nrow=1,ncol = 2)
alpha1<-th[1]
alpha2<-th[2]
beta<-th[3]
ex1<-exp(alpha1+beta*race)
ex2<-exp(alpha2+beta*race)
ee1<-ex1/(1+ex1)
ee2<-ex2/(1+ex2)
pi0<-1/(1+ex1)
pi1<-ee1-ee2
pi2<-ee2
optimize(max.fun,
c(0,1),
y0=y0,
y1=y1,
y2=y2,
pi0=pi0,
pi1=pi1,
pi2=pi2,
tol = 0.0001)
當我運行優化 function 時,我收到以下錯誤消息:
Error in f(arg, ...) : unused argument (arg)
任何幫助是極大的贊賞。
你想優化什么? 如果 x 則它需要在 LHS 上,並且必須提供其他值 - 例如,如果您想最大化 y0:
max.fun<-function(y0,y1,y2,pi0,pi1,pi2){y0*log(pi0)+y1*log(pi1)+y2*log(pi2)}
th = matrix(c(-1,-3,1),nrow=1,ncol = 3)
y0 = matrix(c(26,104),nrow=1,ncol = 2)
y1 = matrix(c(33,72),nrow=1,ncol = 2)
y2 = matrix(c(22,31),nrow=1,ncol = 2)
race = matrix(c(1,0),nrow=1,ncol = 2)
alpha1<-th[1]
alpha2<-th[2]
beta<-th[3]
ex1<-exp(alpha1+beta*race)
ex2<-exp(alpha2+beta*race)
ee1<-ex1/(1+ex1)
ee2<-ex2/(1+ex2)
pi0<-1/(1+ex1)
pi1<-ee1-ee2
pi2<-ee2
# Using purely illustrative values
y0m <- optimize(max.fun,
c(0,1),
y1=2,
y2=3,
pi0=4,
pi1=5,
pi2=6,
tol = 0.0001,
maximum = T)
y0m
> y0m
$maximum
[1] 0.9999339
$objective
[1] 9.980357
如果提供給您的這個/任何其他答案對您有用,請接受答案 /vote+ !
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.