R: 61928-й вопрос о сообщении об ошибке "матрица сингулярного градиента при начальных оценках параметров" - PullRequest
0 голосов
/ 28 марта 2020

У меня есть следующие данные:

479117.562500000    -100.366333008
479117.625000000    -100.292800903
479117.687500000    -100.772460937
479117.750000000    -101.344261169
479117.812500000    -102.828948975
479117.875000000    -103.842330933
479117.937500000    -102.289733887
479118.000000000    -101.856155396
479118.062500000    -101.972282410
479118.125000000    -101.272254944
479118.187500000    -101.042846680
479118.250000000    -101.957427979
479118.312500000    -101.363922119
479118.375000000    -101.065864563
479118.437500000    -99.710098267
479118.500000000    -98.789115906
479118.562500000    -99.854644775
479118.625000000    -100.956558228
479118.687500000    -100.456512451
479118.750000000    -100.779090881
479118.812500000    -101.598800659
479118.875000000    -100.329147339
479118.937500000    -100.486946106
479119.000000000    -102.275772095
479119.062500000    -103.128715515
479119.125000000    -103.075996399
479119.187500000    -103.266349792
479119.250000000    -102.390190125
479119.312500000    -101.386428833
479119.375000000    -102.008850098
479119.437500000    -103.579475403
479119.500000000    -103.382720947
479119.562500000    -100.842361450
479119.625000000    -98.478569031
479119.687500000    -98.745864868
479119.750000000    -99.653961182
479119.812500000    -100.032035828
479119.875000000    -99.955345154
479119.937500000    -99.842536926
479120.000000000    -100.187896729
479120.062500000    -100.456726074
479120.125000000    -101.258850098
479120.187500000    -102.649017334
479120.250000000    -104.833518982
479120.312500000    -102.760551453
479120.375000000    -101.653732300
479120.437500000    -102.729179382
479120.500000000    -102.752014160
479120.562500000    -103.103675842
479120.625000000    -102.842521667
479120.687500000    -102.692077637
479120.750000000    -102.499221802
479120.812500000    -101.806587219
479120.875000000    -102.124893188
479120.937500000    -101.700584412
479121.000000000    -101.385307312
479121.062500000    -101.242889404
479121.125000000    -100.172935486
479121.187500000    -100.230110168
479121.250000000    -100.861007690
479121.312500000    -101.013366699
479121.375000000    -100.585502625
479121.437500000    -100.897743225
479121.500000000    -101.453987122
479121.562500000    -102.233383179
479121.625000000    -102.231163025
479121.687500000    -99.512817383
479121.750000000    -97.662391663
479121.812500000    -97.647987366
479121.875000000    -100.217674255
479121.937500000    -102.411224365
479122.000000000    -101.892311096
479122.062500000    -102.475875854
479122.125000000    -103.164466858
479122.187500000    -103.406997681
479122.250000000    -104.319549561
479122.312500000    -102.138801575
479122.375000000    -99.946632385
479122.437500000    -100.355888367
479122.500000000    -101.683120728
479122.562500000    -101.582458496
479122.625000000    -99.907981873
479122.687500000    -100.329666138
479122.750000000    -100.243255615
479122.812500000    -100.713218689
479122.875000000    -102.436210632
479122.937500000    -103.173072815
479123.000000000    -103.720008850
479123.062500000    -105.225852966
479123.125000000    -104.841903687
479123.187500000    -103.589698792
479123.250000000    -101.543907166
479123.312500000    -101.051879883
479123.375000000    -103.181671143
479123.437500000    -104.825492859
479123.500000000    -103.848281860
479123.562500000    -102.969032288
479123.625000000    -101.002128601
479123.687500000    -100.698005676
479123.750000000    -102.078453064
479123.812500000    -103.582519531
479123.875000000    -105.085006714
479123.937500000    -103.349472046
479124.000000000    -100.479156494
479124.062500000    -100.558197021
479124.125000000    -101.563316345
479124.187500000    -101.261054993
479124.250000000    -102.108535767
479124.312500000    -104.861206055
479124.375000000    -105.044944763
479124.437500000    -105.712318420
479124.500000000    -105.045219421
479124.562500000    -104.131736755
479124.625000000    -104.060478210
479124.687500000    -103.435829163
479124.750000000    -103.167121887
479124.812500000    -102.186767578
479124.875000000    -101.180900574
479124.937500000    -101.686195374
479125.000000000    -102.167709351
479125.062500000    -102.771011353
479125.125000000    -103.367576599
479125.187500000    -103.127212524
479125.250000000    -103.924591064
479125.312500000    -103.187667847
479125.375000000    -102.220222473
479125.437500000    -102.674034119
479125.500000000    -101.717445374
479125.562500000    -100.879615784
479125.625000000    -100.964996338
479125.687500000    -102.864616394
479125.750000000    -102.009140015
479125.812500000    -99.761398315
479125.875000000    -99.798591614
479125.937500000    -101.713653564
479126.000000000    -103.273422241
479126.062500000    -102.664245605
479126.125000000    -101.682983398
479126.187500000    -101.853103638
479126.250000000    -103.193588257
479126.312500000    -104.359184265
479126.375000000    -105.037651062
479126.437500000    -104.446434021
479126.500000000    -103.674736023
479126.562500000    -103.374031067
479126.625000000    -102.921363831
479126.687500000    -103.374008179
479126.750000000    -104.299362183
479126.812500000    -104.015937805
479126.875000000    -103.758834839
479126.937500000    -103.698440552
479127.000000000    -103.501396179
479127.062500000    -101.677307129
479127.125000000    -101.010841370
479127.187500000    -103.159111023
479127.250000000    -105.232284546
479127.312500000    -105.949432373
479127.375000000    -104.999694824
479127.437500000    -104.207763672
479127.500000000    -103.822082520
479127.562500000    -103.189147949
479127.625000000    -102.943603516
479127.687500000    -102.586914062
479127.750000000    -102.973297119
479127.812500000    -104.049942017
479127.875000000    -106.436325073
479127.937500000    -105.395500183
479128.000000000    -106.032653809
479128.062500000    -106.538482666
479128.125000000    -105.961471558
479128.187500000    -106.049240112
479128.250000000    -104.937507629
479128.312500000    -104.842300415
479128.375000000    -104.720268250
479128.437500000    -105.791313171
479128.500000000    -106.022468567
479128.562500000    -103.848289490
479128.625000000    -103.887428284
479128.687500000    -104.258583069
479128.750000000    -105.152420044
479128.812500000    -107.673591614
479128.875000000    -107.705734253
479128.937500000    -105.925376892
479129.000000000    -105.528671265
479129.062500000    -106.021476746
479129.125000000    -107.750610352
479129.187500000    -108.693489075
479129.250000000    -108.675323486
479129.312500000    -109.919746399
479129.375000000    -110.940391541
479129.437500000    -109.279312134
479129.500000000    -108.321495056
479129.562500000    -107.995155334
479129.625000000    -109.164222717
479129.687500000    -111.977653503
479129.750000000    -113.194961548
479129.812500000    -114.239585876
479129.875000000    -115.780212402
479129.937500000    -116.979713440
479130.000000000    -117.042602539
479130.062500000    -116.658126831
479130.125000000    -116.624031067
479130.187500000    -116.923446655
479130.250000000    -118.727882385
479130.312500000    -120.354904175
479130.375000000    -121.513587952
479130.437500000    -121.322601318
479130.500000000    -121.338325500
479130.562500000    -120.500923157
479130.625000000    -116.656593323
479130.687500000    -113.295486450
479130.750000000    -111.713729858
479130.812500000    -111.394592285
479130.875000000    -109.731071472
479130.937500000    -108.571876526
479131.000000000    -109.059860229
479131.062500000    -106.810707092
479131.125000000    -106.095306396
479131.187500000    -106.258293152
479131.250000000    -106.243156433
479131.312500000    -106.613525391
479131.375000000    -105.910820007
479131.437500000    -104.405731201
479131.500000000    -102.325592041
479131.562500000    -101.502128601
479131.625000000    -103.445144653
479131.687500000    -105.970573425
479131.750000000    -105.379684448
479131.812500000    -102.992294312
479131.875000000    -100.679176331
479131.937500000    -99.553001404
479132.000000000    -100.532035828
479132.062500000    -102.480346680
479132.125000000    -104.630592346
479132.187500000    -103.669296265
479132.250000000    -101.364990234
479132.312500000    -100.193199158
479132.375000000    -98.483375549
479132.437500000    -98.084083557
479132.500000000    -100.955741882
479132.562500000    -102.788536072
479132.625000000    -102.540054321
479132.687500000    -102.550140381
479132.750000000    -101.182907104
479132.812500000    -100.926239014
479132.875000000    -100.933807373
479132.937500000    -101.358642578
479133.000000000    -100.544723511
479133.062500000    -99.536102295
479133.125000000    -99.533355713
479133.187500000    -100.520698547
479133.250000000    -99.944213867
479133.312500000    -100.118461609
479133.375000000    -101.425323486
479133.437500000    -102.523521423
479133.500000000    -102.540794373
479133.562500000    -101.491882324
479133.625000000    -100.919067383
479133.687500000    -100.623329163
479133.750000000    -99.431541443
479133.812500000    -99.252487183
479133.875000000    -101.166763306
479133.937500000    -102.311378479
479134.000000000    -101.306701660
479134.062500000    -100.665534973
479134.125000000    -100.248069763
479134.187500000    -99.179161072
479134.250000000    -100.506088257
479134.312500000    -101.349990845
479134.375000000    -101.028564453
479134.437500000    -101.089591980
479134.500000000    -100.819961548
479134.562500000    -100.899681091
479134.625000000    -102.236335754
479134.687500000    -101.911392212
479134.750000000    -101.253051758
479134.812500000    -102.417984009
479134.875000000    -101.647750854
479134.937500000    -100.494926453
479135.000000000    -99.920089722
479135.062500000    -101.046142578
479135.125000000    -102.893470764
479135.187500000    -102.895072937
479135.250000000    -103.607261658
479135.312500000    -104.568321228
479135.375000000    -104.253341675
479135.437500000    -102.952842712
479135.500000000    -101.928634644
479135.562500000    -101.746994019
479135.625000000    -102.218338013
479135.687500000    -102.627662659
479135.750000000    -102.185234070
479135.812500000    -103.266464233
479135.875000000    -104.480552673
479135.937500000    -102.991035461
479136.000000000    -101.333572388
479136.062500000    -102.019165039
479136.125000000    -100.434211731
479136.187500000    -99.072113037
479136.250000000    -100.616592407
479136.312500000    -101.648803711
479136.375000000    -102.449073792
479136.437500000    -103.141990662
479136.500000000    -101.611976624
479136.562500000    -101.742187500
479136.625000000    -102.974266052
479136.687500000    -101.894943237
479136.750000000    -101.637077332
479136.812500000    -101.545288086
479136.875000000    -101.042068481
479136.937500000    -101.836784363
479137.000000000    -103.539382935
479137.062500000    -105.681159973
479137.125000000    -102.126953125
479137.187500000    -98.450904846
479137.250000000    -98.859046936
479137.312500000    -102.353157043
479137.375000000    -105.606437683
479137.437500000    -104.589866638
479137.500000000    -103.607994080
479137.562500000    -102.202362061
479137.625000000    -101.861511230
479137.687500000    -101.010215759
479137.750000000    -100.456481934
479137.812500000    -101.639465332
479137.875000000    -102.876907349
479137.937500000    -103.880729675
479138.000000000    -105.811225891
479138.062500000    -106.915206909
479138.125000000    -108.233901978
479138.187500000    -106.625434875
479138.250000000    -103.686866760
479138.312500000    -102.977874756
479138.375000000    -105.153343201
479138.437500000    -106.966751099
479138.500000000    -104.752532959
479138.562500000    -104.894256592
479138.625000000    -105.125381470
479138.687500000    -102.721633911
479138.750000000    -102.299125671
479138.812500000    -102.762176514
479138.875000000    -101.316398621
479138.937500000    -100.695121765
479139.000000000    -101.257949829
479139.062500000    -102.382209778
479139.125000000    -104.331405640
479139.187500000    -106.033081055
479139.250000000    -105.467399597
479139.312500000    -104.492301941
479139.375000000    -104.413681030
479139.437500000    -103.263702393
479139.500000000    -103.199569702
479139.562500000    -104.447860718
479139.625000000    -104.169952393
479139.687500000    -105.357246399
479139.750000000    -105.624694824
479139.812500000    -104.329673767
479139.875000000    -104.890480042
479139.937500000    -103.739471436
479140.000000000    -102.343170166
479140.062500000    -102.630371094
479140.125000000    -103.861930847
479140.187500000    -102.614120483
479140.250000000    -102.544586182
479140.312500000    -103.947563171
479140.375000000    -104.194770813
479140.437500000    -103.187141418
479140.500000000    -102.442695618
479140.562500000    -103.064849854
479140.625000000    -104.047111511
479140.687500000    -103.641082764
479140.750000000    -104.192665100
479140.812500000    -105.001426697
479140.875000000    -106.180221558
479140.937500000    -106.504646301
479141.000000000    -104.772674561
479141.062500000    -104.167114258
479141.125000000    -102.925132751
479141.187500000    -102.731872559
479141.250000000    -104.101806641
479141.312500000    -104.532470703
479141.375000000    -103.677726746
479141.437500000    -103.467483521
479141.500000000    -104.314605713
479141.562500000    -106.088348389
479141.625000000    -105.849678040
479141.687500000    -104.784294128
479141.750000000    -104.685859680
479141.812500000    -102.816184998
479141.875000000    -103.009178162
479141.937500000    -105.581695557
479142.000000000    -104.964607239
479142.062500000    -103.978279114
479142.125000000    -104.709609985
479142.187500000    -105.373786926
479142.250000000    -105.477348328
479142.312500000    -107.076698303
479142.375000000    -108.599830627
479142.437500000    -107.518699646

, к которым я хочу соответствовать функции enter image description here

В то время как формула является своего рода зверя, оно имеет физический смысл, поэтому я бы не хотел его менять. У меня есть следующий код:

  index_min <- which(mydf[,2] == min(mydf[,2]))[1]

  n0start <- -119
  n1start <- 16
  df0start <- 120
  df1start <- 1
  f0start <- mydf[index_min,1]
  f1start <- mydf[index_min,1]

  plot(x=mydf[,1],y=mydf[,2])
  eq = function(f,n0, n1, f0, f1, df0, df1){ n0+n1*4*(f-f1)^2/(4*(f-f1)^2+(4*((f-f0)/df0)*(f-f1)-df1)^2)}
  lines(mydf[,1], eq(mydf[,1],n0start, n1start, f0start, f1start, df0start, df1start), col="red" )


  res <- try(nlsLM( y ~ n0+n1*4*(f-f1)^2/(4*(f-f1)^2+(4*((f-f0)/df0)*(f-f1)-df1)^2),
                   start=c(n0=n0start, n1=n1start,f0=f0start,df0=df0start,f1=f1start,df1=df1start) , data = mydf))
  coef(res)

Как видите, начальные значения выглядят довольно прилично, но я получаю ошибку "матрица сингулярного градиента при начальных оценках параметров". Я просмотрел все остальные посты, однако не понимаю, почему моя формула переопределена или почему начальные значения должны быть плохими. enter image description here

1 Ответ

0 голосов
/ 29 марта 2020

Хорошо, я понял ошибку. nlsLM требует, чтобы data был фреймом данных, а не просто матрицей. Сообщение об ошибке просто вводит в заблуждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...