Lorenzo Isella
2016-Mar-19 20:28 UTC
[R] Orthogonal Nonlinear Least-Squares Regression in R
Dear All, I am trying my hands at orthogonal least square regression. Have a look for instance at http://bit.ly/1pB2aHX https://cran.r-project.org/web/packages/onls/index.html http://bit.ly/1XDkkTL docs.scipy.org/doc/external/odrpack_guide.pdf However, I am experiencing some problems with a simple example, just to compare the results to a simple linear fit. Have a look at the following snippet ################################################ library(onls) dd <- structure(list(de_emp_mn_agg = c(9226, 9404, 9604, 10183, 10788, 11352, 11984, 12921, 14057, 15235, 15560, 15738, 16039, 16729, 17332, 18398, 19458, 20001, 19861, 20690, 21495, 21869, 22145, 22521), de_emp_ind_agg = c(43862, 40621, 37884, 36039, 35228, 34336, 33684, 33816, 33593, 33861, 33817, 33139, 32250, 31796, 31276, 30934, 31340, 32078, 31366, 30800, 31410, 31975, 32120, 32254), de_gov_exp_agg = c(1183695, 1281056, 1334560, 1390475, 1439175, 1472564, 1495661, 1520460, 1565451, 1604454, 1654996, 1672559, 1701664, 1722003, 1751547, 1793235, 1824640, 1874300, 1894248, 1939610, 2001224, 2056539, 2104642, 2156210), berd c(26245.5, 26579, 25933, 25910, 26816.6, 27211, 28909.8, 30334.44, 33622.55, 35600, 36331.9, 36950, 38029, 38363, 38651.038, 41148, 43034, 46073, 45275, 46929, 51077.2, 53790.1, 53566.2, 56226)), row.names c(NA, 24L), .Names = c("de_emp_mn_agg", "de_emp_ind_agg", "de_gov_exp_agg", "berd"), class = "data.frame") mm1 <- lm(berd~ de_emp_mn_agg+ de_emp_ind_agg+ de_gov_exp_agg , data=dd) #and now this fails mm3 <- onls(berd~ K+ A*de_emp_mn_agg+ B*de_emp_ind_agg+ D*de_gov_exp_agg, data=dd, start = list(K=-5e4, A= 1,B =1, D=0.1 )) ################################################ I get this error message Error in mf[[varNamesRHS]] : recursive indexing failed at level 2 What am I doing wrong? Here is my sessionInfo()> sessionInfo()R version 3.2.4 Revised (2016-03-16 r70336) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Debian GNU/Linux 8 (jessie) locale: [1] LC_CTYPE=en_GB.utf8 LC_NUMERIC=C [3] LC_TIME=en_GB.utf8 LC_COLLATE=en_GB.utf8 [5] LC_MONETARY=en_GB.utf8 LC_MESSAGES=en_GB.utf8 [7] LC_PAPER=en_GB.utf8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] onls_0.1-1 minpack.lm_1.2-0 Any suggestion is appreciated. Many thanks Lorenzo