[R] different results from nls in 2.10.1 and 2.11.1
Philip Bett
pbett at astro.uni-bonn.de
Sat Jun 18 15:44:13 CEST 2011
Hi,
I've noticed I get different results fitting a function to some data on
my laptop to when I do it on my computer at work.
Here's a code snippet of what I do:
##------------------------------------------------------------------
require(circular) ## for Bessel function I.0
## Data:
dd <- c(0.9975948929787, 0.9093316197395, 0.7838819026947,
0.9096108675003, 0.8901804089546, 0.2995955049992, 0.9461286067963,
0.8248071670532, 0.2442084848881, 0.2836948633194, 0.7353935241699,
0.5812761187553, 0.8705610632896, 0.8744471669197, 0.7490273118019,
0.9947383403778, 0.9154829382896, 0.8659985661507, 0.6448246836662,
0.8588128685951, 0.7347437739372, -0.1645197421312, 0.970999121666,
0.8038327097893, 0.9558997154236, 0.6846113204956, 0.6286814808846,
0.9201356172562, 0.9422197341919, 0.3470877110958, 0.4154576957226,
0.0721184238791, 0.14151956141, -0.6142936348915, -0.4688512086868,
0.6805665493011, 0.3594025671482, 0.8991097211838, 0.7656877636909,
0.9282909035683, 0.9454715847969, 0.9766132831573, 0.4316343963146,
0.62679708004, 0.2093886137009, 0.3937581181526, 0.4254160523415,
0.8684504628181, 0.3844584524632, 0.9578431844711, 0.956972181797,
0.4456568360329, 0.9793710708618, 0.5825698971748, 0.929228246212,
0.9211971759796, 0.9407976865768, 0.821156680584, 0.2048042863607,
0.6473184227943, 0.9456319212914, 0.7021154165268, 0.9761978387833,
0.1485801786184, 0.2195029109716, 0.5378785729408, 0.8304615020752,
0.8596342802048, 0.950027525425, 0.9102076888084, 0.5108731985092,
0.7200184464455, 0.3571084141731, 0.9765330553055, -0.143017962575,
0.8576183915138, 0.1283493340015, -0.3226098418236, 0.7031792402267,
0.8708582520485, 0.56754809618, 0.060470353812, 0.8015220761299,
0.7363410592079, 0.671902179718, 0.8082517385483, 0.9468197822571,
0.9729647636414, 0.7919752597809, 0.9539568424225, 0.4840737581253,
0.850653231144, 0.5909016132355, 0.8414449691772, 0.9699150323868)
xlims <- c(-1,1)
bw <- 0.05
b <- seq(xlims[1],xlims[2],by=bw) ; nb <- length(b)
h <- hist( dd, breaks=b, plot=FALSE)
FisherAvgdPdf <- function(theta,theta0,kappa){
A <- kappa/(2*sinh(kappa))
A * I.0( kappa*sin(theta)*sin(theta0) ) * exp(
kappa*cos(theta)*cos(theta0) )
}
nls(dens ~ FisherAvgdPdf(theta,theta0,kappa),
data = data.frame( theta=acos(h$mids), dens=h$density ),
start=c( theta0=0.5, kappa=4.0 ),
algorithm="port", lower=c(0,0), upper=c(acos(xlims[1]),500),
control=list(warnOnly=TRUE) )
##------------------------------------------------------------------
On one machine, nls converges, and on the other it doesn't. Any ideas
why, and which is "right"? I can't see anything in R News that could
be relevant.
The different R versions (and computers) are:
> R.version
_
platform i686-pc-linux-gnu
arch i686
os linux-gnu
system i686, linux-gnu
status
major 2
minor 11.1
year 2010
month 05
day 31
svn rev 52157
language R
version.string R version 2.11.1 (2010-05-31)
and
> R.version
_
platform x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 2
minor 10.1
year 2009
month 12
day 14
svn rev 50720
language R
version.string R version 2.10.1 (2009-12-14)
Thanks,
Phil Bett
--
------------------------------------------------------------------------
Dr Philip Bett (Room 2.009) http://www.astro.uni-bonn.de/~pbett
Argelander-Institut für Astronomie Tel : +49 (0)228-73-5084
Auf dem Hügel 71, D-53121 Bonn Email: p.e.bett at dunelm.org.uk
Rheinische Friedrich-Wilhelms-Universität Bonn
More information about the R-help
mailing list