您尝试用于插值的 approx 函数有一个默认的“规则”参数,该参数不会对向量中观察范围之外的值进行插值,该向量会用 NA 截断结果中的值。您可以将其更改为“rule = 2”,以允许插值超出预期范围:
output_x_values <- seq(0.0, 100, 1.0)
# Toy data
set.seed(1)
df <- data.frame(a = seq(50, 150, 10), b = seq(0, 100, 10) + rnorm(11, 20, 10))
df
# a b
# 1 50 13.73546
# 2 60 31.83643
# 3 70 31.64371
# 4 80 65.95281
# 5 90 63.29508
# 6 100 61.79532
# 7 110 84.87429
# 8 120 97.38325
# 9 130 105.75781
# 10 140 106.94612
# 11 150 135.11781
approx(x = df$a, y = df$b, xout = output_x_values, rule = 2)
但是,这对数据有一点奇怪的影响:
plot(df)
plot(approx(x = df$a, y = df$b, xout = output_x_values, rule = 2))
你不妨试试:
# Toy data scaled with centiles but without interpolation
plot(percent_rank(df$a), percent_rank(df$b))
# Toy data scaled with centiles with interpolation
plot(approx(x = percent_rank(df$a), y = percent_rank(df$b), n = 100))