【问题标题】:Why isn't the predict function predicting NA values?为什么预测函数不预测 NA 值?
【发布时间】:2018-04-09 17:55:39
【问题描述】:

我在这里遇到了一些应该很简单的问题,我不确定为什么它不起作用。我有一个数据框modis.raw2,它有一列day,其中包含我正在查看的时间序列中的所有日期。另一列sr.og 有值,其中一些是NA

我正在尝试使用 lowess 来平滑我的数据并填写 NA 值,但我不断收到错误消息:

Error in `$<-.data.frame`(`*tmp*`, sr.smooth, value = c(0.631508837997043,  : 
  replacement has 50 rows, data has 128

我真的不确定发生了什么。有任何想法吗? 这是一个示例数据集和我的代码。

modis.raw2 = structure(list(day = c(86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 
109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 
135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 
148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 
161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 
174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 
187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 
200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 
213), sr.og = c(0.636095833333333, NA, NA, NA, NA, 0.665508333333333, 
NA, 0.67995, NA, 0.616720833333333, 0.695445833333333, 0.70355, 
0.687008333333333, NA, NA, 0.6801125, 0.662941666666667, 0.688133333333333, 
NA, NA, NA, NA, 0.441654166666667, 0.708595833333333, 0.698195833333333, 
0.696716666666667, 0.668525, 0.622370833333333, 0.632875, 0.617458333333333, 
NA, NA, NA, NA, NA, 0.64325, NA, 0.5615375, 0.547720833333333, 
NA, 0.551554166666667, 0.544858333333333, 0.539941666666667, 
NA, NA, 0.469941666666667, NA, 0.478479166666667, NA, 0.336470833333333, 
0.3274375, 0.350295833333333, 0.288670833333333, 0.131925, 0.2291625, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.0913333333333333, 
NA, 0.1071125, 0.1076, 0.100704166666667, 0.1160625, NA, 0.101416666666667, 
0.152929166666667, 0.1267625, NA, NA, NA, NA, NA, NA, NA, 0.1174125, 
0.217633333333333, NA, NA, NA, NA, 0.225133333333333, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.149670833333333, 0.154854166666667, 
0.239479166666667, NA, NA, NA, NA, NA, NA, 0.153670833333333, 
NA, 0.079125, NA, NA, NA, 0.208341666666667, NA, 0.102675, NA, 
NA, NA, NA, NA, NA, NA)), .Names = c("day", "sr.og"), row.names = c(NA, 
-128L), class = c("tbl_df", "tbl", "data.frame"))

sr.loess = loess(sr.og ~ day, data=modis.raw2, span=0.3)
complete <- tibble(day=modis.raw2$day)
complete$sr.smooth = stats::predict(sr.loess, data=complete)

【问题讨论】:

    标签: r predict loess


    【解决方案1】:

    predict() 函数使用名为newdata= 的参数,而不是data=。您只是在此处提取拟合值。试试

    complete$sr.smooth = stats::predict(sr.loess, newdata=complete)
    

    【讨论】:

    • 完美!我一直在用头撞墙一段时间,我想是那些日子。这完全解决了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2023-03-19
    • 2019-08-07
    • 2017-01-04
    相关资源
    最近更新 更多