全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2590 5
2014-12-14
在使用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 进行非线性优化



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-12-14 20:53:50
粘贴代码请用代码选项
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-14 20:56:05
用constrOptim
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-15 08:45:09
qoiqpwqr 发表于 2014-12-14 20:56
用constrOptim
constrOptim支持数据框吗?我的数据集比较大。谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-15 08:56:32
qoiqpwqr 发表于 2014-12-14 20:56
用constrOptim
我的问题是一个非线性的,constrOptim是线性的啊,我的上面的控制条件可以在自定义函数里面写吗?还有OPtim支持数据框吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-15 22:14:13
h791693840 发表于 2014-12-15 08:56
我的问题是一个非线性的,constrOptim是线性的啊,我的上面的控制条件可以在自定义函数里面写吗?还有OPt ...
constrOptim就是optim加上一些线性的约束条件
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群