[R] Non-linear system of equations

Radka Pancheva radica at abv.bg
Fri Apr 25 14:12:45 CEST 2008


Hello Paul,

Thank you for your quick answer. I have tried to use your advice and to estimate the parameters of beta distribution with moments matching. This is my code:


ex <- 0.3914877
ex2 <- 0.2671597

my.mm <- function(x){
	p <- x[1]
	q <- x[2]
	p <-  .Machine$double.eps
	q <-  .Machine$double.eps

	F <- rep(NA,2)

	F[1] <- p/(p + q)
	F[2]<- (p*q + (p + q + 1)*p^2)/((p + q + 1)*(p + q)^2)

	return(F)
}

p0 <- c(ex,ex2)

dfsane(par=p0, fn=my.mm,control=list(maxit=50000))

and I became the following output:

…
iteration:  3640  ||F(xn)|| =   0.7071068
iteration:  3641  ||F(xn)|| =   0. 7071068
…
iteration:  49990  ||F(xn)|| =   0. 7071068
iteration:  50000  ||F(xn)|| =   0. 7071068
$par
[1] -446.2791 -446.4034

$residual
[1] 0.5

$fn.reduction
[1] 0

$feval
[1] 828495

$iter
[1] 50001

$convergence
[1] 1

$message
[1] "Maximum limit for iterations exceeded"

I have tried maxiter=100000 but the output is the same. I know that ex and ex2 are bringing the problems, but I am stuck with them. How can I make it convergent?

Thank you,

Evgeniq

 >2008/4/25 Radka Pancheva <radica at abv.bg>:
 >>  I am trying to estimate the parameters of a bimodal normal distribution using moments matching, so I have to solve a non-linear system of equations. How can I solve the following simple example?
 >>
 >>  x^2 - y^2 = 6
 >>  x – y = 3
 >>
 >>  I heard about nlsystemfit, but I don't know how to run it exactly. I have tried the following code, but it doesn't really work:
 >>
 >>
 >>  f1 <-y~ x[1]^2-x[2]^2-6
 >>  f2 <-z~ x[1]-x[2]-3
 >>  f  <- list(f1=0,f2=0)
 >>  nlsystemfit("OLS",f,startvals=c(0,0))
 >
 >You could try the recent package BB by Ravi Varadhan. The code could
 >be the following:
 >
 >library(BB)
 >
 >f <- function(x) {
 >  x1 <- x[1]
 >  x2 <- x[2]
 >
 >  F <- rep(NA, 2)
 >
 >  F[1] <- x1^2 - x2^2 - 6
 >  F[2] <- x1 - x2 - 3
 >
 >  return(F)
 >}
 >
 >p0 <- c(1,2)
 >dfsane(par=p0, fn=f,control=list(maxit=3000))
 >
 >I got the solution:
 >
 >x1 = 2.5
 >x2 = -0.5
 >
 >Paul
 >
 >______________________________________________
 >R-help at r-project.org mailing list
 >https://stat.ethz.ch/mailman/listinfo/r-help
 >PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
 >and provide commented, minimal, self-contained, reproducible code.
 >



More information about the R-help mailing list