代码之家  ›  专栏  ›  技术社区  ›  BlurKid

R中for循环时结果的奇怪差异

  •  0
  • BlurKid  · 技术社区  · 5 月前

    上下文的第一部分不是重要部分,但在这里: 所以我试着用 variofit 在R中为学校项目提供函数。尝试时 fix.kappa == FALSE 由于某种原因,它无法找到kappa的最佳值。因此,我试图手动找到它,通过尝试一系列kappa值,并手动搜索一个可以最小化MSE的值。

    奇怪的是: 我编写了这段代码,用于计算0.5到50之间每个kappa值的MSE:

    kappa_list = seq(0.5, 50, length.out = 50)
      MSE_list = c()
      for(kappa_temp in kappa_list){
        
        variofit_temp = variofit(
          emp_variog2,
          fix.nugget = FALSE, nugget = nugget_0,
          fix.kappa = TRUE, kappa = kappa_temp,
          ini.cov.pars = c(part_sill_0,range_0),
          cov.model = "matern",
          messages = F
        )
        
        MSE_list = append(variofit_temp$value, MSE_list)
      }
        
      plot(kappa_list, MSE_list)
    

    然后我想起kappa可以取比0.5更小的值,所以我重写了代码:

    kappa_list = seq(0.1, 50, length.out = 50)
      MSE_list = c()
      for(kappa_temp in kappa_list){
        
        variofit_temp = variofit(
          emp_variog2,
          fix.nugget = FALSE, nugget = nugget_0,
          fix.kappa = TRUE, kappa = kappa_temp,
          ini.cov.pars = c(part_sill_0,range_0),
          cov.model = "matern",
          messages = F
        )
        
        MSE_list = append(variofit_temp$value, MSE_list)
      }
        
      plot(kappa_list, MSE_list)
    

    但我意识到,这个循环中kappa=50的值与前一个循环不同。起初我以为这只是一个精度误差,因为MSE在50左右非常敏感,所以我查看了序列的最后一个值是否真的正好是50或50.00000001,但似乎正好是50。

    我尝试了其他一些东西,但发现通过逐一播放每一行来“模拟”循环,奇怪的是,这并不是问题所在!这就是奇怪的部分。以下是a在控制台中播放的代码:

    > min_kappa = 0.1
    > kappa_list = seq(min_kappa, 50, length.out = 5)
    > kappa_temp = kappa_list[length(kappa_list)]
    > kappa_temp
    [1] 50
    > variofit_temp = variofit(
    +     emp_variog2,
    +     fix.nugget = FALSE, nugget = nugget_0,
    +     fix.kappa = TRUE, kappa = kappa_temp,
    +     ini.cov.pars = c(part_sill_0,range_0),
    +     cov.model = "matern",
    +     messages = F
    + )
    > variofit_temp$value
    [1] 1721348178
    > variofit_temp = variofit(
    +     emp_variog2,
    +     fix.nugget = FALSE, nugget = nugget_0,
    +     fix.kappa = TRUE, kappa = 50,
    +     ini.cov.pars = c(part_sill_0,range_0),
    +     cov.model = "matern",
    +     messages = F
    + )
    > variofit_temp$value
    [1] 1721348178
    > kappa_list = seq(min_kappa, 50, length.out = 5)
    >   print(paste0("kappa_list = ", kappa_list))
    [1] "kappa_list = 0.1"    "kappa_list = 12.575" "kappa_list = 25.05"  "kappa_list = 37.525" "kappa_list = 50"    
    >   MSE_list = c()
    >   for(kappa_temp in kappa_list){
    +     set.seed(123)
    +     print(paste0("kappa_temp = ", format(kappa_temp, digits = 22, scientific = FALSE)))
    +     
    +     kappa_temp <- round(kappa_temp, digits = 1)
    +     
    +     variofit_temp = variofit(
    +       emp_variog2,
    +       fix.nugget = FALSE, nugget = nugget_0,
    +       fix.kappa = TRUE, kappa = kappa_temp,
    +       ini.cov.pars = c(part_sill_0,range_0),
    +       cov.model = "matern",
    +       messages = F
    +     )
    +     
    +     MSE_list = append(variofit_temp$value, MSE_list)
    +   }
    [1] "kappa_temp = 0.1000000000000000055511"
    [1] "kappa_temp = 12.57499999999999928946"
    [1] "kappa_temp = 25.05000000000000071054"
    [1] "kappa_temp = 37.52499999999999857891"
    [1] "kappa_temp = 50"
    >   
    >   print(paste0("MSE for kappa = ", kappa_list[length(kappa_list)],
    +                " is ", MSE_list[length(MSE_list)]))
    [1] "MSE for kappa = 50 is 21781768624.2714"
    

    以下是完整的代码:

    # ---- Libraries ----
    library(ggplot2)
    library(geoR)
    library(sp)
    
    # ---- Data importation ----
    parana = structure(
      list(
        east = c(
          402.95294, 501.70493, 556.32618, 573.40431, 
          702.42284, 668.54416, 435.8477, 434.01245, 432.46225, 162.14585, 
          169.47663, 717.84675, 713.34332, 726.66302, 618.46885, 661.88082, 
          506.71667, 561.7874, 585.63949, 531.71056, 308.97183, 306.10469, 
          150.12196, 155.3399, 620.00181, 475.05766, 366.87187, 479.49527, 
          615.72353, 599.07288, 566.56758, 484.6613, 445.54377, 498.29528, 
          477.94465, 353.18336, 338.52463, 267.23204, 676.87847, 538.88998, 
          340.96468, 203.93695, 254.26247, 719.46243, 768.50871, 721.65469, 
          687.75359, 599.06043, 541.89327, 449.6865, 357.51524, 222.33953, 
          297.32299, 184.17268, 401.98944, 365.36206, 331.68065, 294.95009, 
          674.31593, 518.6908, 562.79775, 399.91232, 309.69511, 308.21592, 
          397.59888, 206.29791, 289.38003, 246.80304, 279.55302, 231.82964, 
          245.59459, 410.80902, 400.01532, 405.11185, 422.47533, 457.73378, 
          388.47179, 299.07823, 320.4695, 317.7274, 328.1532, 341.96468, 
          346.05942, 371.75809, 377.09969, 395.46678, 244.79297, 232.08612, 
          212.36295, 250.92841, 249.11474, 262.98869, 264.83559, 277.18097, 
          267.48289, 287.42489, 291.21859, 296.594, 295.11083, 211.66139, 
          189.31521, 165.97002, 164.28177, 184.98705, 711.89977, 749.59433, 
          702.73299, 650.76351, 640.73071, 600.65702, 421.28296, 451.44393, 
          419.33262, 377.71707, 357.49565, 372.27262, 287.35834, 285.6835, 
          224.32153, 218.99256, 262.66451, 217.24028, 212.63015, 249.35852, 
          245.90862, 251.23978, 197.7439, 172.85298, 187.83331, 568.34196, 
          541.68923, 493.34111, 471.68756, 445.03235, 479.99208, 333.22941, 
          400.32814, 343.6607, 320.24316, 331.8482, 235.32685, 226.53333, 
          692.54456
        ),
        north = c(
          164.52841, 428.771, 445.27065, 447.04177, 
          272.2959, 261.6707, 286.54044, 317.90506, 288.37001, 286.29984, 
          334.53158, 181.56741, 214.88336, 207.27952, 127.43265, 128.81455, 
          212.86691, 138.89773, 212.59809, 131.62153, 181.97682, 148.69468, 
          162.12624, 154.86652, 112.64927, 83.6448399999998, 92.2122400000002, 
          461.96806, 400.63795, 456.12037, 445.22857, 423.22788, 400.9933, 
          426.92592, 356.79285, 446.50166, 381.74695, 373.39454, 254.18138, 
          308.77851, 271.01967, 309.41998, 240.19632, 177.84707, 199.12352, 
          209.20941, 187.56295, 210.66083, 185.11924, 196.16437, 188.1198, 
          154.59123, 176.26524, 211.03701, 70.3728200000003, 77.4256500000004, 
          110.26775, 113.43465, 185.89772, 378.94032, 362.2088, 354.61628, 
          375.85998, 359.22457, 443.1808, 359.3556, 370.04023, 374.89923, 
          345.88871, 450.35979, 445.05926, 242.10715, 339.85273, 338.04194, 
          262.48003, 306.9234, 299.16275, 285.24334, 329.84407, 279.96009, 
          256.09127, 271.01967, 313.5301, 278.71589, 247.38436, 267.83959, 
          297.28745, 343.23287, 311.44174, 238.28897, 339.84732, 321.6157, 
          312.41223, 281.21777, 255.20257, 273.991, 246.34864, 340.60144, 
          325.80878, 263.38789, 281.3855, 267.90686, 267.86614, 323.79426, 
          124.40728, 175.47115, 179.95796, 178.79807, 180.7536, 199.57391, 
          177.57037, 174.02255, 223.70296, 179.08881, 189.96577, 223.34289, 
          170.56964, 170.54282, 139.84991, 154.52067, 146.1385, 158.17924, 
          217.21353, 142.19763, 147.67415, 131.14844, 205.80201, 192.283, 
          198.18379, 114.86877, 120.51877, 98.4340199999995, 103.94229, 
          105.70264, 118.72419, 119.52053, 70.36, 84.566, 93.49421, 97.3436600000001, 
          92.0340700000003, 114.02601, 170.87504
        ),
        data = c(306.09, 200.88, 
          167.07, 162.77, 163.57, 178.61, 301.54, 282.07, 319.12, 244.67, 
          233.31, 224.46, 206.12, 248.99, 237.87, 222.87, 263.1, 236.91, 
          247.01, 240.58, 304.28, 351.73, 277.92, 323.08, 253.32, 315.33, 
          379.94, 197.09, 199.91, 167, 182.88, 197.1, 257.5, 205.16, 224.07, 
          212.5, 242.08, 247.79, 187.27, 222.54, 313.6, 269.92, 321.69, 
          208.89, 238.62, 248.76, 193.48, 240.48, 265.56, 302.13, 335.41, 
          330.87, 329.49, 262.81, 365.88, 359.08, 344.59, 366.1, 201.84, 
          218.27, 200.38, 229.4, 235.07, 236.25, 228.82, 258.12, 232.17, 
          248.17, 240.66, 184.59, 165.46, 320.31, 232.8, 266.27, 301.1, 
          244.78, 248.57, 299, 269.49, 300.89, 311.81, 317.34, 286.93, 
          306.64, 349.09, 289.11, 280.49, 237.11, 269.68, 307.47, 253.57, 
          226.71, 299.69, 266.62, 331.46, 270.67, 321.15, 258.2, 288.85, 
          255.76, 264.77, 271.76, 313.63, 252.94, 246.75, 215.95, 299.71, 
          203.4, 209.47, 185.63, 304.3, 320.05, 273.01, 295.62, 334.95, 
          350.18, 291.35, 319.57, 367.32, 332.04, 332.18, 323.82, 334.22, 
          345.33, 345.24, 383.13, 348.67, 282.54, 291.07, 245.42, 291.63, 
          288.5, 314.65, 331.85, 305.43, 285.05, 359.51, 356.82, 372.56, 
                   413.7, 412.44, 400.96, 199.37
        )
      ), class = "data.frame", row.names = c(NA, -143L)
    )
    
    parana_borders = structure(
      list(
        east = c(
          670.204875, 663.718688, 656.066688, 649.971438, 
          642.634563, 635.271688, 628.742125, 622.755875, 617.270813, 610.457, 
          604.42175, 600.262, 592.621, 585.444625, 581.92875, 574.871563, 
          567.99075, 565.6725, 560.5745, 553.86975, 546.261688, 542.435063, 
          537.837375, 534.376563, 529.409438, 528.1835, 520.268156, 513.789781, 
          509.833156, 505.105344, 499.977219, 491.988906, 486.094406, 478.869313, 
          474.045719, 470.925344, 473.2195, 476.876406, 476.248156, 468.888031, 
          462.077594, 457.88275, 453.517656, 448.93925, 440.925281, 433.288844, 
          425.385563, 417.613313, 409.689906, 402.012969, 395.090313, 388.905156, 
          381.620781, 373.674125, 365.810969, 358.028781, 350.718188, 343.347406, 
          336.159188, 329.237156, 321.329844, 313.663188, 305.80225, 298.281313, 
          290.861594, 284.227281, 277.077844, 271.504219, 263.543781, 256.520563, 
          248.8575, 241.656109, 235.520094, 231.700766, 226.547563, 225.8555, 
          219.657406, 216.403594, 215.340656, 216.788484, 213.318719, 212.552734, 
          206.664047, 201.807359, 199.6235, 192.151453, 187.422156, 188.983141, 
          184.399016, 178.437156, 174.949359, 170.373547, 163.837438, 157.839297, 
          155.134688, 150.051703, 144.086359, 138.815359, 138.297594, 137.987281, 
          144.653203, 149.781453, 148.382547, 153.388125, 159.686078, 155.62975, 
          153.212984, 154.687313, 157.737141, 163.658594, 160.675313, 164.211328, 
          172.130047, 165.728922, 158.935609, 157.750344, 159.271844, 158.399938, 
          155.783297, 157.487594, 158.247594, 162.589, 165.391719, 157.077922, 
          157.754734, 160.412781, 162.614203, 166.648797, 163.022797, 163.530688, 
          166.652172, 171.481313, 171.281031, 165.928656, 165.506375, 165.3565, 
          167.316813, 170.03325, 167.977563, 163.491438, 161.473719, 163.997516, 
          170.930609, 178.861531, 185.087641, 190.730766, 190.762938, 193.086672, 
          195.451828, 198.341609, 200.613078, 203.828609, 204.428203, 208.680922, 
          214.333047, 221.180953, 224.122406, 226.760719, 229.690422, 231.72975, 
          231.220078, 235.038641, 240.402063, 247.119406, 254.061875, 261.190891, 
          268.550156, 275.370188, 282.111844, 287.672, 293.985563, 301.211688, 
          307.937906, 315.517, 323.409656, 331.151406, 336.672156, 343.911, 
          351.417813, 356.621688, 362.441, 367.828219, 368.792531, 375.514781, 
          381.666813, 383.534469, 387.002438, 394.258938, 396.523313, 396.644688, 
          402.613531, 408.970906, 416.527875, 423.576406, 430.054938, 437.537875, 
          444.892563, 452.482813, 459.560219, 464.211406, 465.268031, 467.336875, 
          465.45875, 472.983781, 476.725063, 480.198531, 478.720594, 479.167094, 
          480.899469, 482.783188, 483.727938, 483.194875, 485.376531, 488.530688, 
          491.747375, 494.156156, 499.878813, 496.505469, 499.45075, 502.862656, 
          495.062781, 491.5965, 498.709813, 504.852094, 500.144813, 500.993125, 
          505.134438, 503.235969, 506.228938, 508.160219, 509.2235, 503.473406, 
          509.178344, 516.034031, 520.147219, 521.236875, 527.753063, 531.995563, 
          538.783625, 545.707125, 553.139188, 560.024625, 566.74675, 574.19725, 
          582.02375, 589.887375, 597.229313, 603.811188, 605.871, 612.286938, 
          613.857063, 621.287813, 628.639063, 631.817438, 637.492438, 634.20475, 
          629.226563, 630.906875, 638.968875, 632.025, 625.798625, 631.953125, 
          632.155188, 639.860125, 641.00775, 637.589125, 637.24325, 636.01825, 
          638.107625, 641.851813, 642.569438, 647.145438, 646.820625, 642.397875, 
          646.79425, 651.9535, 655.33225, 660.207125, 666.556125, 668.464313, 
          671.055375, 674.749375, 682.068125, 678.8675, 676.1265, 672.481563, 
          670.703063, 672.062563, 679.603063, 686.332625, 694.170375, 700.403375, 
          707.086875, 715.055063, 722.802563, 730.246063, 738.165688, 745.08375, 
          751.146, 748.617188, 746.678813, 746.024563, 742.908813, 745.792625, 
          750.472063, 754.7605, 756.962, 764.113563, 766.416875, 773.6025, 
          779.524438, 780.54775, 781.245688, 782.124438, 785.844, 786.494, 
          793.205188, 798.625563, 793.336563, 788.13475, 783.140375, 779.378563, 
          777.683813, 780.69875, 787.14325, 779.648813, 772.613438, 769.153125, 
          769.227688, 765.929875, 763.41925, 758.943313, 758.803438, 755.02475, 
          758.635313, 755.889125, 749.726063, 741.674063, 735.94675, 729.9425, 
          729.948, 732.53975, 724.347438, 732.07725, 739.425688, 747.238313, 
          749.815563, 757.045125, 765.36825, 761.700813, 756.485438, 752.37975, 
          748.731938, 744.853563, 738.498438, 733.378375, 731.44225, 739.654313, 
          743.952688, 740.586188, 734.3525, 726.756313, 718.759688, 710.763438, 
          702.864375, 695.90125, 688.046, 680.367938, 670.204875),
        north = c(111.761, 
          107.051, 105.242, 100.7915, 97.993, 101.1545, 105.5405, 110.7495, 
          116.397, 120.5795, 119.667, 121.898, 119.9675, 120.177, 115.782, 
          119.532, 115.8975, 110.499, 117.333, 120.929, 121.4415, 119.9445, 
          117.39, 110.527, 104.375, 97.7945, 98.896, 97.3895, 94.0785, 
          94.73, 98.2715, 98.26, 93.482, 90.0065, 83.768, 76.4215, 69.7315, 
          62.9205, 55.255, 52.0755, 49.4895, 46.7695, 53.727, 59.958, 58.8065, 
          60.247, 60.1965, 58.7055, 58.782, 61.107, 64.9245, 70.0245, 72.88, 
          73.6025, 74.997, 75.2305, 77.7445, 78.171, 80.7555, 84.688, 84.1965, 
          83.564, 83.2995, 82.2695, 80.292, 84.5905, 87.9925, 93.4435, 
          94.249, 90.7505, 88.96, 92.3015, 96.4505, 103.246, 109.2565, 
          116.906, 122.0885, 128.354, 136.198, 143.92, 151.001, 158.5445, 
          163.667, 166.2495, 167.25, 169.1685, 165.457, 173.248, 174.298, 
          169.808, 168.851, 169.669, 165.8305, 161.0635, 154.883, 161.614, 
          164.554, 167.945, 176.129, 183.5995, 179.9475, 181.639, 189.343, 
          190.8625, 188.6405, 192.2815, 196.7395, 201.929, 202.4355, 198.6235, 
          201.474, 207.0945, 206.12, 207.3115, 205.5975, 210.408, 213.2685, 
          216.1175, 220.7955, 222.779, 224.8275, 225.788, 228.3695, 228.715, 
          233.218, 242.7005, 248.682, 249.457, 253.9695, 258.6515, 265.281, 
          265.8665, 266.8735, 272.053, 279.341, 286.609, 293.7815, 301.3105, 
          309.0375, 315.479, 323.254, 330.385, 334.1935, 335.4215, 340.129, 
          345.8245, 353.308, 360.851, 368.452, 375.9125, 383.465, 390.732, 
          398.7125, 405.3755, 411.065, 415.045, 422.3715, 429.8395, 437.277, 
          444.9855, 453.0285, 459.9115, 465.8625, 470.151, 474.1165, 477.7425, 
          480.8905, 485.017, 489.3505, 495.0075, 499.934, 503.1085, 499.2055, 
          496.7625, 495.3895, 496.865, 500.318, 497.055, 497.705, 494.4745, 
          496.3685, 491.1985, 491.6935, 489.49, 493.9795, 501.523, 507.9295, 
          504.9965, 497.152, 503.3365, 502.907, 498.0905, 497.7135, 496.94, 
          493.1595, 492.287, 489.9165, 492.5375, 493.548, 490.967, 483.0055, 
          482.201, 490.2815, 491.8335, 484.8545, 482.781, 474.8165, 473.0705, 
          480.3425, 472.1715, 468.8685, 476.651, 481.32, 474.7985, 475.4645, 
          479.503, 474.766, 470.4505, 467.3145, 465.864, 463.654, 461.1125, 
          459.3925, 454.5375, 452.687, 443.8865, 444.3065, 451.4485, 457.7515, 
          463.096, 470.414, 475.6315, 476.1755, 473.357, 467.075, 459.4815, 
          459.3755, 464.782, 464.875, 465.694, 462.5555, 464.8, 463.1885, 
          462.725, 461.2715, 462.521, 465.8655, 464.5585, 460.5085, 456.086, 
          449.595, 446.604, 444.8285, 437.737, 432.025, 425.496, 422.555, 
          420.4055, 419.884, 416.7505, 413.4625, 414.2685, 411.1705, 411.021, 
          403.435, 401.2055, 400.3325, 397.1535, 394.517, 389.9, 382.0995, 
          375.437, 367.535, 361.227, 355.1195, 349.3295, 342.219, 335.8645, 
          330.8, 324.334, 317.356, 310.5265, 307.0365, 300.0215, 292.5305, 
          285.4165, 277.625, 269.8635, 267.0335, 269.963, 269.5365, 273.576, 
          269.09, 269.743, 269.0615, 267.9115, 267.6705, 267.2245, 261.5795, 
          255.2725, 247.9015, 240.0395, 232.673, 226.0275, 222.804, 230.096, 
          237.04, 239.545, 247.0055, 246.4635, 241.737, 235.974, 228.906, 
          221.1565, 214.5615, 208.1565, 204.8215, 205.266, 199.1955, 193.133, 
          186.8895, 180.5855, 187.108, 194.386, 199.101, 198.6915, 194.921, 
          197.2955, 205.304, 200.563, 199.8925, 205.232, 196.9885, 193.748, 
          188.6695, 181.1865, 182.4225, 182.355, 185.664, 190.334, 185.579, 
          179.157, 179.706, 177.326, 175.5195, 176.2825, 172.8805, 171.5365, 
          170.572, 165.084, 159.1015, 152.2355, 145.1195, 138.108, 141.5515, 
          139.683, 135.9955, 136.1905, 133.044, 125.3875, 126.208, 124.2705, 
          124.561, 124.8235, 124.122, 121.1025, 122.3335, 121.7645, 111.761
        )
      ), class = "data.frame", row.names = c(NA, -369L)
    )
    
    
    
    
    # ---- Variogram ----
    geodat_parana = as.geodata(parana, coords.col = 1:2, data.col = 3)
    
    dist_mat = dist(parana[1:2])
    min_dist = min(dist_mat)
    max_dist = 500
    breaks = seq(from = min_dist, to = max_dist, length.out = 50)
    
    emp_variog = variog(geodat_parana, breaks = breaks, option = "bin")
    
    
    # ---- Matern Variofit ----
    # initial values
    nugget_0 = 0
    sill_0 = 7000
    part_sill_0 = sill_0 - nugget_0
    range_0 = 400
    
    for(min_kappa in c(0.1, 0.2, 0.3, 0.4, 0.5)){
      kappa_list = seq(min_kappa, 50, length.out = 5)
      print(paste0("kappa_list = ", kappa_list))
      MSE_list = c()
      for(kappa_temp in kappa_list){
        set.seed(123)
        print(paste0("kappa_temp = ", format(kappa_temp, digits = 22, scientific = FALSE)))
        
        kappa_temp <- round(kappa_temp, digits = 1)
        
        variofit_temp = variofit(
          emp_variog,
          fix.nugget = FALSE, nugget = nugget_0,
          fix.kappa = TRUE, kappa = kappa_temp,
          ini.cov.pars = c(part_sill_0,range_0),
          cov.model = "matern",
          messages = F
        )
        
        MSE_list = append(variofit_temp$value, MSE_list)
      }
      
      print(paste0("MSE for kappa = ", kappa_list[length(kappa_list)],
                   " is ", MSE_list[length(MSE_list)]))
      
      plot(kappa_list, MSE_list, ylim = c(1.5e+09, 2e+10))
    }
    

    全输出:

    [1] "kappa_list = 0.1"    "kappa_list = 12.575" "kappa_list = 25.05"  "kappa_list = 37.525" "kappa_list = 50"    
    [1] "kappa_temp = 0.1000000000000000055511"
    [1] "kappa_temp = 12.57499999999999928946"
    [1] "kappa_temp = 25.05000000000000071054"
    [1] "kappa_temp = 37.52499999999999857891"
    [1] "kappa_temp = 50"
    [1] "MSE for kappa = 50 is 21781768624.2714"
    [1] "kappa_list = 0.2"   "kappa_list = 12.65" "kappa_list = 25.1"  "kappa_list = 37.55" "kappa_list = 50"   
    [1] "kappa_temp = 0.2000000000000000111022"
    [1] "kappa_temp = 12.64999999999999857891"
    [1] "kappa_temp = 25.09999999999999786837"
    [1] "kappa_temp = 37.54999999999999715783"
    [1] "kappa_temp = 50"
    [1] "MSE for kappa = 50 is 13067343235.6359"
    [1] "kappa_list = 0.3"    "kappa_list = 12.725" "kappa_list = 25.15"  "kappa_list = 37.575" "kappa_list = 50"    
    [1] "kappa_temp = 0.2999999999999999888978"
    [1] "kappa_temp = 12.72500000000000142109"
    [1] "kappa_temp = 25.15000000000000213163"
    [1] "kappa_temp = 37.57500000000000284217"
    [1] "kappa_temp = 50"
    [1] "MSE for kappa = 50 is 7316447596.3402"
    [1] "kappa_list = 0.4"  "kappa_list = 12.8" "kappa_list = 25.2" "kappa_list = 37.6" "kappa_list = 50"  
    [1] "kappa_temp = 0.4000000000000000222045"
    [1] "kappa_temp = 12.80000000000000071054"
    [1] "kappa_temp = 25.19999999999999928946"
    [1] "kappa_temp = 37.60000000000000142109"
    [1] "kappa_temp = 50"
    [1] "MSE for kappa = 50 is 4028582940.74542"
    [1] "kappa_list = 0.5"    "kappa_list = 12.875" "kappa_list = 25.25"  "kappa_list = 37.625" "kappa_list = 50"    
    [1] "kappa_temp = 0.5"
    [1] "kappa_temp = 12.875"
    [1] "kappa_temp = 25.25"
    [1] "kappa_temp = 37.625"
    [1] "kappa_temp = 50"
    [1] "MSE for kappa = 50 is 2728655320.43029"
    
    1 回复  |  直到 5 月前
        1
  •  2
  •   user2554330    5 月前

    问题在于你的报告。打印时 MSE for kappa = 50 is 21781768624.271 你实际上是在打印其他kappa值的MSE值,因为你在 开始 在这个表达式中,不是列表的末尾:

    MSE_list = append(variofit_temp$value, MSE_list)
    

    要解决问题,只需使用

    MSE_list = c(MSE_list, variofit_temp$value)
    

    (或使用 append() 代替 c() ,他们在这里做同样的事情。)

    推荐文章