Olu Ola
2015-Aug-13 17:20 UTC
[R] Error: Gradient function might be wrong - check it! OPTMX
Hello,
I am trying to estimate a non-linear GMM in R using Optimx. However, when I do
the start test to compare my analytical gradient with the numerical gradient, I
get the following error message
Error: Gradient function might be wrong - check it!
Below are the print out of my analytical and numerical gradient. They are close
to an extent and I want to use my analytical gradient. The first column is the
analytical gradient while the second column is the numerical gradient
numgrad
[1,] -9862.118 -9862.103
[2,] -20855.001 -20854.985
[3,] -12277.764 -12277.767
[4,] 3332.864 3332.865
[5,] 3562.808 3562.804
[6,] -14971.913 -14971.915
[7,] 27394.457 27394.451
[8,] -15634.531 -15634.532
[9,] -16893.399 -16893.402
[10,] -1330.469 -1330.468
[11,] 16877.994 16877.991
[12,] -9406.643 -9406.643
[13,] -40451.881 -40451.881
[14,] -48052.941 -48052.944
[15,] -29997.114 -29997.116
[16,] 34546.011 34546.002
[17,] -65540.191 -65540.200
[18,] -24400.970 -24400.972
[19,] -26655.760 -26655.760
[20,] -59128.576 -59128.576
[21,] -40026.926 -40026.931
[22,] -34780.662 -34780.655
[23,] -119284.474 -119284.473
[24,] 22336.013 22336.025
[25,] -40665.139 -40665.139
[26,] -21596.959 -21596.959
[27,] -33859.274 -33860.747
[28,] -30536.938 -30539.807
[29,] -95411.022 -95416.182
[30,] -33016.450 -33018.690
[31,] -90052.772 -90059.612
[32,] 8008.684 8009.342
[33,] -45084.823 -45086.720
[34,] -34071.584 -34074.802
[35,] -259960.860 -259990.135
[36,] -69986.472 -69990.537
[37,] 24870.530 24874.012
The code for my optimization is as follows:
nlgmm = optimx(par=b0, fn=obj,gr=gra, method ="BFGS", itnmax=10000,
control=list(follow.on = TRUE,usenumDeriv=FALSE,kkttol=10,starttests=TRUE,
save.failures=TRUE, trace=0))
Is there a way to turn off the gradient check? this is because if I do not run
the start test, it will still eventually display the error message. Any help to
cross this bridge will be greatly appreciated.
Thank you
ProfJCNash
2015-Aug-13 17:42 UTC
[R] Error: Gradient function might be wrong - check it! OPTMX
There are tolerances in the checks, and sometimes scaling of the problem leads to false positives on the checks. Try control = list(starttest=FALSE, etc.) to suppress the test. JN On 15-08-13 01:20 PM, Olu Ola via R-help wrote:> Hello, > I am trying to estimate a non-linear GMM in R using Optimx. However, when I do the start test to compare my analytical gradient with the numerical gradient, I get the following error message > > Error: Gradient function might be wrong - check it! > > Below are the print out of my analytical and numerical gradient. They are close to an extent and I want to use my analytical gradient. The first column is the analytical gradient while the second column is the numerical gradient > > numgrad > [1,] -9862.118 -9862.103 > [2,] -20855.001 -20854.985 > [3,] -12277.764 -12277.767 > [4,] 3332.864 3332.865 > [5,] 3562.808 3562.804 > [6,] -14971.913 -14971.915 > [7,] 27394.457 27394.451 > [8,] -15634.531 -15634.532 > [9,] -16893.399 -16893.402 > [10,] -1330.469 -1330.468 > [11,] 16877.994 16877.991 > [12,] -9406.643 -9406.643 > [13,] -40451.881 -40451.881 > [14,] -48052.941 -48052.944 > [15,] -29997.114 -29997.116 > [16,] 34546.011 34546.002 > [17,] -65540.191 -65540.200 > [18,] -24400.970 -24400.972 > [19,] -26655.760 -26655.760 > [20,] -59128.576 -59128.576 > [21,] -40026.926 -40026.931 > [22,] -34780.662 -34780.655 > [23,] -119284.474 -119284.473 > [24,] 22336.013 22336.025 > [25,] -40665.139 -40665.139 > [26,] -21596.959 -21596.959 > [27,] -33859.274 -33860.747 > [28,] -30536.938 -30539.807 > [29,] -95411.022 -95416.182 > [30,] -33016.450 -33018.690 > [31,] -90052.772 -90059.612 > [32,] 8008.684 8009.342 > [33,] -45084.823 -45086.720 > [34,] -34071.584 -34074.802 > [35,] -259960.860 -259990.135 > [36,] -69986.472 -69990.537 > [37,] 24870.530 24874.012 > > The code for my optimization is as follows: > > > nlgmm = optimx(par=b0, fn=obj,gr=gra, method ="BFGS", itnmax=10000, control=list(follow.on = TRUE,usenumDeriv=FALSE,kkttol=10,starttests=TRUE, save.failures=TRUE, trace=0)) > > Is there a way to turn off the gradient check? this is because if I do not run the start test, it will still eventually display the error message. Any help to cross this bridge will be greatly appreciated. > > Thank you > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. >