0

我陷入了一个非常具体的问题,我必须找到一个描述植物(标准化)叶子形状的函数。问题不仅在于找到最能描述数据的多项式,还在于它从 (0,0) 开始,到 (1,0) 结束,并通过最大宽度 (x_ymax, 1) 的点而不会变宽.

我尝试的另一个选项是 Hermite 插值,使用这 3 个特定点作为控制点,但它提供的功能与叶子的实际形状相差甚远,除非我提供更多控制点。

是否有特定的功能或者我需要进行一些手动转换?还是有更好的或替代的选择来解决这个问题?

提前致谢!

4

1 回答 1

1

我不确定这是否总是有效,但这里有一个使用循环样条的“广义加法模型”示例。当您指定模型不应该有截距(即包含-1在公式中,那么它应该通过 y=0。您必须将预测变量缩放到 0 和 1 之间,以便末端通过点您提到的(有关更多信息,请参见此处。)。

例子

# required model
library(mgcv)

# make data
n <- 200
tmp <- seq(0,20*pi,,n)
x <- tmp / (2*pi)
mon <- x%%1
err <- rnorm(n, sd=0.5)
y <- sin(tmp) + err + 1
plot(x, y, t="l")
df <- data.frame(x, y, mon)

# GAM with intercept
fit1 <- gam(y ~ s(mon, bs = "cc", k = 12), data=df)
summary(fit1)
plot(fit1)

# GAM without intercept
fit2 <- gam(y ~ s(mon, bs = "cc", k = 12) - 1, data=df) # note "-1" for no intercept
summary(fit2)
plot(fit2)

在此处输入图像描述

于 2015-01-26T12:20:26.027 回答