HaoranWu_ZJU 2021-03-16 16:40 采纳率: 25%
浏览 90

R语言 克里金插值报warning,计算出了NA

按照如下代码,我对数据进行克里金插值,结果计算出了NA

############################
###### Geostatistics #######
# Parameter
model_type = "Sph" # Models include "Exp", "Sph", "Gau", "Mat". Use vgm() to check avaliable models

# Semivariogram
library(gstat)
shp <- data.frame(gvi=dat$gvi, long=XY[,1], la=XY[,2])
coordinates(shp) <- c("long","la")
v <- variogram(shp$gvi ~ 1, shp) # `width` parameter defaulted

# Model
the_model <- vgm(model = model_type)
fit_model <- fit.variogram(v, the_model) # plot(v,model = fit_model)

# Krigging
long.range <- as.integer(range(shp@coords[,1]))
la.range <- as.integer(range(shp@coords[,2]))
shp.new <- expand.grid(long=seq(from=long.range[1], to=long.range[2], by=35), 
                       la=seq(from=la.range[1], to=la.range[2], by=35) )
shp.new <- SpatialPoints(shp.new)
gridded(shp.new) <- FALSE
shp <- data.frame(gvi=dat$gvi, long=XY[,1], la=XY[,2])
kr <- krige(shp$gvi ~ 1, loc = ~ long+la, 
        data = shp, 
        newdata = shp.new,
        model = fit_model)
######/Geostatistics #######
############################

其中shp数据如下:

            gvi      long          la
1   0.066213844 374.17027 256.9691233
2   0.029999790 438.22414 117.5496285
3   0.046417086 437.46821 175.3405840
4   0.061617959 436.71762 233.0422417
5   0.070899719 435.98306 290.8270477
6   0.039386278 437.12096 317.6824339
7   0.048524841 494.88698 319.6470867
8   0.037847980 497.57415 318.0519611
9   0.055948400 498.37816 260.3995668
10  0.049960880 499.09669 202.7471772
11  0.041115306 499.91940 145.0054898
12  0.029848717 374.87277 199.1997170
13  0.026547722 500.60054  87.2422512
14  0.030020119 501.27367  29.4451439
15  0.034214367 503.46667   1.3857263
16  0.029985013 561.16324   1.9430962
17  0.038572150 563.68747   3.6459998
18  0.032161949 563.13454  60.9935138
19  0.035163544 562.36793 119.2340560
20  0.050189496 561.70548 176.4553241
21  0.059946015 560.89346 234.2154904
22  0.047815192 560.17225 292.4622053
23  0.028897401 375.68480 139.1330887
24  0.017764005 154.72564 963.0403590
25  0.017089060 250.65420 952.9830524
26  0.012913881 346.72967 942.9965721
27  0.008408395 442.87459 932.7852960
28  0.011442775 538.95541 922.8018954
29  0.023615182 634.62754 912.7938597
30  0.025345217 732.62089 902.4871228
31  0.026953201 815.88024 892.9687113
32  0.011176781 802.14525 798.2773063
33  0.015697740 799.58897 792.1462307
34  0.010723932 376.39265  83.7594588
35  0.028630907 703.93821 802.1296295
36  0.028935553 607.91616 812.1191873
37  0.019427585 511.81398 822.0348397
38  0.012584059 415.77323 832.1352560
39  0.017061268 319.56153 842.1833227
40  0.018648585 223.68639 852.2005956
41  0.015560117 127.71242 862.2886947
42  0.020184288  43.06942 869.5406708
43  0.017083827  29.18752 774.4889796
44  0.018933668  30.28269 768.9491481
45  0.015056770 377.08715  26.0424160
46  0.010909088 126.31542 758.8518121
47  0.010902597 222.32678 748.8068260
48  0.015208712 317.74516 738.7094902
49  0.018954611 414.30945 728.5936783
50  0.022051767 510.35554 718.5302162
51  0.028187983 606.63936 708.5560567
52  0.023391095 702.58395 698.5264682
53  0.016038009 785.89939 688.3305926
54  0.008071190 772.09496 593.2850840
55  0.007735832 769.85120 588.0624314
56  0.036336627 381.04844   0.0000000
57  0.016769690 673.53800 598.1074153
58  0.018590524 577.41979 607.9522388
59  0.017644628 481.87053 618.0280169
60  0.017852584 385.78971 628.2146534
61  0.016634483 289.73294 638.1703354
62  0.013496747 193.25145 648.1106206
63  0.010838267  96.97030 658.2941781
64  0.018222098  13.79910 664.9980199
65  0.004788601   0.00000 570.5868696
66  0.011064940   1.05777 564.9238639
67  0.047021172 436.85118   0.3941621
68  0.004392134  96.75928 554.6848786
69  0.001731896 192.85613 544.6984038
70  0.004760480 288.99838 534.7242466
71  0.005529551 384.98303 524.6453903
72  0.005859280 481.01309 514.4833904
73  0.008860407 577.17404 504.4876780
74  0.006634733 673.08390 494.4550129
75  0.006882283 755.76896 484.0004711
76  0.002046880 741.99658 388.9334335
77  0.005797229 739.43496 383.9848485
78  0.050755133 439.58642   2.3557346
79  0.006480559 643.72810 394.0144326
80  0.002576921 547.71674 404.0532550
81 -0.003218306 451.63058 414.0428073
82 -0.010615601 355.61120 424.1493767
83 -0.013218851 259.55443 434.1881995
84 -0.018021683 163.54039 444.1869904
85 -0.015109592  67.51300 454.1888608
86  0.045819618 438.91597  59.8141066
87  0.045819618 438.91597  59.8141066

结果使用krige函数后,计算结果中全部是NA,这是为什么

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-07-24 08:31
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    根据给出的代码,你使用了克里金插值对数据进行插值,但是在结果中得到了NA。这可能是由于多种原因导致的,下面提供几点可能出现问题的地方,以及解决方案:
    1. 数据问题:检查输入的数据dat是否包含NA值或者存在异常值。如果数据中包含缺失值或异常值,可能会导致插值结果出现NA。在数据处理之前应该对数据进行清洗和预处理。
    2. 模型拟合问题:在进行变差函数模型(variogram model)的拟合时,如果选择的模型不适合数据的空间变异性,也可能导致插值结果为NA。建议使用vgm()函数来检查可用的模型,然后选择适合数据的模型进行拟合。
    3. 空间采样点问题:确定用于插值的新空间采样点时,可能出现问题。在代码中,你使用了expand.grid()函数生成新的采样点,但如果这些采样点和原始数据的分布不匹配,也会导致插值结果异常。建议增加基于数据分布的更智能的采样点选择方法。
    4. 模型参数问题:确保在进行克里金插值时,模型参数设置正确。比如插值模型、半变异函数、岭参数等。在代码中,确保krige()函数中的model参数是经过正确拟合的模型。
    5. 结果解释问题:最后,可能需要仔细检查插值结果的解释。有时,插值结果为NA可能不代表错误,而是由于数据的特性导致的。建议对插值结果进行更详细的分析和解释。 针对你的代码和数据,以下是一个简单的示例,展示如何执行数据清洗、模型拟合和插值:
    # Load required libraries
    library(gstat)
    # Load and prepare data
    shp <- read.csv("your_data.csv")  # Assuming the data is in a CSV file
    coordinates(shp) <- c("long", "la")
    # Variogram model fitting
    v <- variogram(gvi ~ 1, shp)
    the_model <- vgm(model = "Sph")  # Assuming Spherical model
    fit_model <- fit.variogram(v, the_model)
    # Prediction using Kriging
    new_points <- data.frame(long = seq(min(shp$long), max(shp$long), by = 35),
                              la = seq(min(shp$la), max(shp$la), by = 35))
    coordinates(new_points) <- c("long", "la")
    kr <- krige(gvi ~ 1, loc = ~ long + la, data = shp, newdata = new_points, model = fit_model)
    # Visualize or analyze the prediction results
    plot(kr)
    

    请根据你的实际数据和需求进行相应的修改和调整。希望这些提示和示例可以帮助你找到问题并改进你的克里金插值分析。

    评论

报告相同问题?