我正在尝试使用 spline 函数(stats R 包)来插值数据。
具体来说,我有一个如下所示的数据集:
DATE Y
01/01/2020
02/01/2020 0.705547512
04/01/2020 0.760723591
06/01/2020 0.014017642
07/01/2020
09/01/2020 0.579518616
10/01/2020
12/01/2020 0.7747401
15/01/2020 0.289562464
19/01/2020
我想学习如何根据其他值(例如 1 月 1 日、1 月 7 日等的 Y 变量值)插入缺失数据。 目的是填充这些缺失的数据;为了做到这一点,在互联网上浏览,我找到了应该执行此任务的splineR函数。
有人可以帮我计算插值数据吗? 预先感谢。
因此,我尝试实现以下 R 代码来插入缺失的数据。
SPLINE<- spline(x=df[2],
y=df[1],
method = "natural")$y
结果是一个有3条记录的数值向量;它们都等于 10。 我不明白这种插值背后的比率,因为我期望一个具有 10 个记录的向量,并且所有观察值都等于原始 Y 变量,除了对应于 2020-01-07、2020-01-10 和 2020-01 的记录之外-19 丢失,样条函数用所选方法填充。
很难判断您的问题是什么,因为您的数据不可重现。您的数据框中的那些“真的”是空单元格吗?数字列不能有空单元格 - 它们必须是 NA 值。如果打印数据框时它们看起来为空,则它是字符列,必须转换为数字,否则 spline
将不起作用。另外,这些是
real日期对象,还是只是代表日期的字符串?同样,如果它们是字符串,
spline
将不起作用。让我们以给定的示例数据为例:
df <- read.table(text = "
DATE Y
01/01/2020 ''
02/01/2020 0.705547512
04/01/2020 0.760723591
06/01/2020 0.014017642
07/01/2020 ''
09/01/2020 0.579518616
10/01/2020 ''
12/01/2020 0.7747401
15/01/2020 0.289562464
19/01/2020 ''
", header = TRUE)
现在我们转换为正确的格式:
df$DATE <- as.Date(df$DATE, format = '%d/%m/%Y')
df$Y <- as.numeric(df$Y)
接下来,
spline
就可以正常工作了。让我们用它来生成一条由 100 个点组成的平滑线:
SPLINE <- spline(x = df$DATE, y = df$Y, n = 100, method = 'natural')
plot(df$DATE, df$Y, ylim = c(-0.1, 1))
lines(SPLINE$x, SPLINE$y)
创建于 2023-09-01,使用