optim関数
- Rのwikiの記事はこちら
- datax,datayにデータペアがあり、今、式へのあてはめを考えているとすると、変数a,b,cについて、その初期値をc(0.5,0.5,0.5)と与えてやり、次のように実行する
f <- function(x) { a <-x[1] b <-x[2] c <-x[3] sum((datay-(a*exp(b*datax)+c))^2) } optim(c(0.5,0.5,0.5),f)
結果はこんな感じ
$par
[1] 0.3169682 0.2442764 3.5609289$value
[1] 0.02900284$counts
function gradient
130 NA$convergence
[1] 0$message
NULL
- 今、タブ区切りのファイル(1行目がラベル行、カラム名が"x","y")、近似式がについて、a,b,cの初期値をそれぞれ0.1,0.2,0.3として推定値を得る関数はこんな感じ
runoptimPar<-function(file,par){
f <- function(x) {
a <- x[1]
b <- x[2]
c <- x[3]
sum((datay-(a*exp(-b*datax)+c))^2)
}data<-read.table(file,TRUE,"\t")
datax<-data$x
datay<-data$y
optim(par,f)}
- 実行方法は
> runoptimPar("hoge.txt",c(0.1,0.2,0.3))
$par
[1] 0.2816443 0.5790963 -0.3748909$value
[1] 2.348886$counts
function gradient
80 NA$convergence
[1] 0$message
NULL>
||<