optim函数已收敛,但梯度不够接近零

问题描述

我为使用optim进行函数优化编写了以下代码。收敛码为零,表明函数已成功优化,估计参数符合预期。但是,当我使用“ numDeriv”中的“ grad”函数来计算优化点中目标函数的数值梯度时,它给出的值不够小。这些值应该小于1/100000,甚至更低,但它们约为1/1000,甚至更高。我在下面的代码中提供了所有内容。我想知道是否有人对此有任何帮助的想法?

dt<-structure(list(FARM = c(1,1,2,3,4,5,6,7,8,9,10,10),AGEL = c(10,YEAR = c(93,94,95,96,97,98,93,98),YIT = c(11.2070387,11.4214679,11.6826514,11.6213672,11.6120375,11.7844553,11.6797018,11.7577679,11.8947124,12.0041645,12.005198,12.0408442,11.5370813,11.7748127,11.8076973,11.7950471,11.8535391,12.1119652,12.911746,13.1003918,13.1731591,13.2100702,13.2538494,13.2064177,11.6230526,11.543862,11.7496642,11.8953607,11.8827289,11.7417727,11.9285785,11.9940545,12.1364117,12.0369733,11.979103,12.043236,11.7952733,12.0445121,12.2373581,12.3413856,12.3717693,12.3734032,11.8997513,12.0806681,12.2331672,12.1984638,12.1695072,12.2869888,12.9730812,13.0168517,13.1557382,13.2580789,13.3012524,13.3181472,12.3470426,12.3593687,12.5377082,12.6183975,12.5887194,12.5560321),Cons = c(1,1),X1 = c(-0.2508472,-0.0827881,-0.0995015,-0.1279935,-0.1396215,-0.0082855,0.0319209,0.1123425,0.1697534,0.2401758,-0.0031704,0.1213923,0.2560492,0.2281032,0.2521044,0.2832353,1.0358796,1.1723399,1.1707639,1.1754846,1.2408077,1.2525037,-0.1164991,-0.0501765,-0.0772784,-0.0395381,0.0120197,-0.0185949,0.1567942,0.2199731,0.2240464,0.1524369,0.1258867,0.1611326,0.4324477,0.4056903,0.5086751,0.5056123,0.5025401,0.5505974,0.294664,0.3022112,0.3781971,0.3920382,0.324517,1.150046,1.231945,1.2697952,1.3612017,1.3414512,1.4316711,0.4776167,0.5358261,0.5268574,0.5936456,0.5766481,0.5328454),X2 = c(-0.3812693,-0.3812693,-0.5148007,-0.4866298,-0.2634863,-0.1189051,-0.0904671,-0.0998569,-0.2200012,-0.0628156,0.0241958,0.1419788,0.2134378,0.6303316,0.6747833,-0.0183638,-0.1581258,0.0488884,0.2801292,-0.0447971,0.171178,1.1003352,1.0946372,0.2929498,0.40149,0.3486918),X3 = c(0.2360746,0.2360742,0.2360746,0.2360752,0.2360754,0.2360749,0.236075,0.2360744,0.6415397,0.4592182,0.459218,0.4592187,0.4592181,0.4592183,-0.0516074,-0.0516078,-0.0516077,-0.051607,0.4592184,0.4592186,0.2360751,-0.0516076,-0.0516071,-0.0516075,0.6415401,0.6415398,0.6415396,0.6415399,0.2360745,0.2360748,0.2360746),X4 = c(-0.2680185,-0.1702716,0.2141804,0.1485103,0.154448,0.3005485,0.2090403,0.1734267,0.339429,0.4863562,0.4594159,0.5207343,-0.030207,0.367867,0.2944762,0.2277587,0.244321,0.7610341,1.5027406,1.5825834,1.8124528,1.9158651,1.8773012,1.7974122,0.1279725,0.1203183,0.3468252,0.4655212,0.5699703,0.2376632,0.3851576,0.5189973,0.6831419,0.6937942,0.5597348,0.5964109,0.1733808,0.556151,0.8324679,0.8772814,0.9770936,0.7515107,0.2701763,0.419759,0.7536951,0.8138994,0.7269556,1.0568626,1.1164991,1.5104721,1.4868396,1.7310326,1.7218132,1.7676257,0.9002175,0.8183035,0.9410059,1.116553,1.0732073,1.0853705),X11 = c(0.0314622,0.0034269,0.0049503,0.0081912,0.0097471,3.43e-05,0.0005095,0.0063104,0.0144081,0.0288422,5e-06,0.007368,0.0327806,0.0260155,0.0317783,0.0401111,0.5365233,0.6871904,0.685344,0.690882,0.7698019,0.7843828,0.006786,0.0012588,0.002986,0.0007816,7.22e-05,0.0001729,0.0122922,0.0241941,0.0250984,0.0116185,0.0079237,0.0129819,0.0935055,0.0822923,0.1293752,0.1278219,0.1262733,0.1515787,0.0434134,0.0456658,0.0715165,0.076847,0.0526556,0.6613029,0.7588443,0.80619,0.926435,0.8997457,1.0248411,0.1140588,0.1435548,0.1387894,0.1762076,0.1662615,0.1419621),X22 = c(0.0726832,0.0726832,0.1325099,0.1184043,0.0347125,0.0070692,0.0040922,0.0049857,0.0242003,0.0019729,0.0002927,0.010079,0.0227778,0.198659,0.2276663,0.0001686,0.0125019,0.001195,0.0392362,0.0010034,0.0146509,0.6053688,0.5991153,0.0429098,0.0805971,0.060793),X33 = c(0.0278656,0.0278655,0.0278656,0.0278657,0.0278658,0.2057866,0.1054407,0.1054406,0.1054409,0.0013317,0.0013316,0.1054408,0.2057868,0.2057867,0.0278656),X44 = c(0.035917,0.0144962,0.0229366,0.0110277,0.0119271,0.0451647,0.0218489,0.0150384,0.057606,0.1182712,0.1055315,0.1355821,0.0004562,0.067663,0.0433581,0.025937,0.0298464,0.2895865,1.1291146,1.2522852,1.6424926,1.8352695,1.7621298,1.6153454,0.0081885,0.0072383,0.0601439,0.108355,0.1624331,0.0282419,0.0741732,0.1346791,0.2333414,0.2406752,0.1566515,0.177853,0.0150305,0.1546519,0.3465014,0.3848113,0.477356,0.2823842,0.0364976,0.0880988,0.2840281,0.3312161,0.2642322,0.5584792,0.6232851,1.140763,1.105346,1.498237,1.4823203,1.5622503,0.4051957,0.3348103,0.4427461,0.6233453,0.5758869,0.5890146),X12 = c(0.0956403,0.0315645,0.0379369,0.0488,0.0718773,0.004032,-0.0084107,-0.0037956,-0.0101633,-0.0153571,-0.016951,-0.052839,0.0001992,-0.0076253,0.0061953,-0.0143284,0.0357935,0.0604531,0.6529476,0.7389629,0.7379694,0.7931974,0.8372764,0.8451687,0.007318,0.0031519,0.0048543,0.0024836,-0.0002207,0.0003415,-0.0413131,-0.0579599,-0.0590332,-0.040165,-0.0331694,-0.0424562,-0.0683811,0.0198335,-0.0804346,-0.1332219,0.1407761,0.1542384,-0.0132001,0.2039271,0.064739,0.0671083,0.0078519,0.009816,1.2654361,1.3555525,1.3972004,1.4977782,1.476046,1.5671604,0.1337944,0.1569702,0.1543428,0.1739084,0.2315184,0.1857988),X13 = c(-0.0592187,-0.0195441,-0.0234898,-0.0302161,-0.0329612,-0.001956,0.0075357,0.0265212,0.0400744,0.0400745,0.1540823,-0.0014559,0.0557455,0.1175824,0.1047493,0.1157709,0.1300668,0.4756948,0.5383598,0.5376359,0.539804,0.5698015,0.5751724,0.0060122,0.0025895,0.0039881,0.0020405,-0.0006203,0.0009596,0.0720028,0.1010157,0.1028862,0.0700018,0.0578095,0.0739951,0.1020899,0.0957731,0.1200853,0.1193625,0.1186369,0.1299822,-0.0152069,-0.0155964,-0.0195178,-0.020232,-0.0167475,-0.0209367,0.7378002,0.7903421,0.8146242,0.8732649,0.8605944,0.9184741,0.1127532,0.1264949,0.1243776,0.1401448,0.1361319,0.1257913),X14 = c(0.0672317,0.0140965,-0.0213113,-0.0190084,-0.0215643,-0.0024902,0.0066728,0.0055359,0.0381323,0.0825606,0.0779874,0.1250678,9.58e-05,0.0446562,0.0754004,0.0519525,0.0615944,0.2155517,1.5566583,1.8553257,2.1219542,2.2520698,2.3293698,2.2512656,-0.0149087,-0.0060371,-0.0268021,-0.0184058,0.0068509,-0.0044193,0.0603905,0.1141655,0.1530555,0.1057598,0.0704632,0.0961013,0.0749781,0.225625,0.4234557,0.4435643,0.4910287,0.4137798,0.0796112,0.1268559,0.2850453,0.3190797,0.2359094,0.4287589,1.2840253,1.8608186,1.8879819,2.3562846,2.3097284,2.5306587,0.4299589,0.4384683,0.4957759,0.6628368,0.6188629,0.5783347),X23 = c(-0.090008,-0.0900079,-0.090008,-0.0900082,-0.1215318,-0.1148811,-0.0622024,-0.0280705,-0.021357,-0.0235737,-0.1411395,-0.0288461,0.0111111,0.0651992,0.0980145,0.2894597,0.2894596,0.3098729,0.3098728,0.0032418,0.0009477,-0.1209977,-0.1209978,-0.0373295,0.0115413,-0.0622025,0.0661313,0.0661315,0.0023119,-0.0348239,-0.0088341,-0.008834,-0.0012487,0.7059088,0.7059091,0.7059089,0.7059087,0.7022534,0.0661314,0.069158,0.0691581,0.0947815,0.0823173),X24 = c(0.1021872,0.0649193,-0.0816604,-0.0566224,-0.07951,-0.1462559,-0.0550792,-0.0206213,-0.0307072,-0.0439992,-0.0458758,-0.1145622,0.0018975,-0.0231078,0.0071251,-0.0143068,0.0346884,0.1624334,0.9472248,0.9975523,1.1424462,1.2927938,1.2667716,1.2128639,-0.0080387,-0.0075579,-0.021786,-0.029242,-0.0104668,-0.0043644,-0.1014837,-0.1367487,-0.1799985,-0.1828053,-0.1474824,-0.1571461,-0.027416,0.0271893,-0.1316346,-0.2311516,0.2737124,0.2105201,-0.0121031,0.2832464,0.129016,0.1393217,0.0175893,0.0255716,1.2285233,1.6620256,1.636022,1.9047161,1.8945717,1.9349088,0.2521772,0.2397219,0.2756675,0.327094,0.430882,0.3784598),X34 = c(-0.0632724,-0.0401967,0.0505626,0.0350596,0.0364614,0.070952,0.0493491,0.0409417,0.0801305,0.1148162,0.1084566,0.3340718,-0.0138716,0.1689311,0.1352288,0.1045911,0.1121966,0.3494807,0.6900858,0.7267511,0.8323111,0.8798003,0.8620908,0.8254043,-0.0066043,-0.0062094,-0.0178988,-0.0240245,-0.0294144,-0.0122651,0.1768714,0.2383331,0.3137111,0.3186031,0.2570406,0.2738829,0.0409308,0.131293,0.1965246,0.2071043,0.2306668,0.1774128,-0.0139431,-0.0216627,-0.0388963,-0.042003,-0.0375163,-0.0545421,0.7162785,0.9690284,0.9538669,1.110526,1.1046117,1.1340024,0.2125185,0.1931807,0.2221475,0.26359,0.2533568,0.2562285)),row.names = c(NA,-60L),class = c("tbl_df","tbl","data.frame"))


y <- matrix(dt$YIT)
cons <- dt$Cons
x1 <- dt$X1
x2 <- dt$X2
x3 <- dt$X3
x4 <- dt$X4
x11 <- dt$X11
x22 <- dt$X22
x33 <- dt$X33
x44 <- dt$X44
x12 <- dt$X12
x13 <- dt$X13
x14 <- dt$X14
x23 <- dt$X23
x24 <- dt$X24
x34 <- dt$X34

x <- cbind(cons,x1,x2,x3,x4,x11,x22,x33,x44,x12,x13,x14,x23,x24,x34)

library(MASS)
xt <- t(x)
b_ols <- ginv((xt%*%x))%*%(xt%*%y);
startv <- c(b_ols,0.1,0.1)

n <- nrow(x)
n2 <- ncol(x)


ALSEx<- function(z) {
  beta <- z[1:n2]
  sv <- z[n2+1]
  su <- z[n2+2]
  sv2 <- sv^2
  su2 <- su^2

eps <- y-x%*%beta

  
  
  aa <- sv2/(2*su2)
  mub <- -eps-(sv2/su)
  A <- -(mub/sv)
  bb <- log(pnorm(-A))
  cc <- eps/su
  f <- -(-n*(log(su))+(n*aa)+sum(bb)+sum(cc))

}

res<-optim(startv,ALSEx,method = "BFGS")

res

library(numDeriv)

H <- hessian(func = ALSEx,res$par)
g <- grad(func = ALSEx,res$par)
View(H)
View(g)



解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...