在使用optim求极值的时候,如果规定要估计的参数必须是大于0 小于1 并且参数相加等于1 这个控制条件该写在哪个地方?以下是我写的代码,希望知道的给改正一下。 (红颜色的地方是我的困惑所在)
library(stats)
mydata<-read.table("D:\\研究 论文\\R\\逻辑回归\\allFeaturesandType.txt",header=T,sep="\t") #读:属性加类型的文件
fn<-function(v){ #定义一个函数
sum<-0
t1<-v[1];
t2<-v[2];t3<-v[3];
diff<-v[4];var<-v[5];fake<-v[6]
repeatRatio<-v[7];
fgsize<-v[8]; #参数v是一个向量,里面存放8个未知的参数
features<-t1+t2+t3+diff+var+fake+repeatRatio+fgsize; #参数之和 规定要等于1
if(t1>0&t1<1&t2>0&t2<1&t3>0&t3<1&diff>0&diff<1&var>0&var<1&fake>0&fake<1&repeatRatio>0&repeatRatio<1&fgsize>0&fgsize<1&features==1){ #确保每个参数都是(0,1)范围内,并且总和等于1
sum(abs(t1*mydata$tightness1+t2*mydata$tightness2+t3*mydata$tightness3+diff*mydata$diffTime+var*mydata$var+fake*mydata$fakePRatio+repeatRatio*mydata$repeatRRatio+fgsize*mydata$fgsize-mydata$type)); #参数*每组属性值—此小组类型
}
return(sum); #当这个值最小的时候,迭代结束,得到最优参数向量
}
optim(c(1/8,1/8,1/8,1/8,1/8,1/8,1/8,1/8),fn) #调用函数 optim 进行非线性优化


雷达卡



京公网安备 11010802022788号







