これをとりあえず最急降下法で出してみることにする。
y.exp <- function(Xj,Yj){ y.exp.intern <- function(Xj,Yj){ return(paste("exp(-1/2 * ((Xi - ",Xj,")/h)^2) * ",Yj,sep="")) } paste(paste(mapply(function(Xj,Yj){y.exp.intern(Xj,Yj)},Xj,Yj),collapse=" + ")," - Yi") } gauusian <- function(Xj){ gauusian.intern <- function(Xj){ return(paste("exp(-1/2 * ((Xi - ",Xj,")/h)^2)",sep="")) } paste(paste(sapply(Xj,function(Xj){gauusian.intern(Xj)}),collapse=" + "),"- 1") } cv <- function(Xi,Yi){ x <- Xi y <- Yi cv.intern <- function(Xi,Yi){ y <- gsub("Yi",as.character(Yi),gsub("Xi",as.character(Xi),y.exp(x,y))) g <- gsub("Xi",as.character(Xi),gauusian(x)) return(paste(Yi," - ((",y,")/(",g,"))",sep="")) } paste("(",paste(mapply(function(Xi,Yi){cv.intern(Xi,Yi)},Xi,Yi),collapse=" + "),")^2") } eval(parse(text=paste("D(expression(",gauusian(x),"),\"h\")"))) cv(x,y) eval(parse(text=paste("D(expression(",cv(x,y),"),\"h\")")))