我不会使用多项式来模拟方差。包 nlme 提供的方差函数包括 varConstPower。让我们试试这个:
n <- c(1, 2, 4, 8, 16, 32)
v <- c(5.85, 6.35, 6.55, 6.85, 7.02, 7.15)
plot(v ~ n)
fit_ConstPower <- nls(v ~ n^(2*theta) + c,
start = list(theta = 2, c = 4),
data = data.frame(n, v))
summary(fit_ConstPower)
lines(npred <- seq(1, 32, length.out = 100),
predict(fit_ConstPower, newdata = data.frame(n = npred)),
col = "blue")
但是,这似乎不太合适。对我来说,它看起来更像是饱和:
fit_hyper <- nls(v ~ k * n^(theta) + c,
start = list(k = -1, theta = -1, c = 7.2),
data = data.frame(n, v))
summary(fit_hyper)
lines(npred,
predict(fit_hyper, newdata = data.frame(n = npred)),
col = "green")
PS:我无法理解您的问题。字面上的答案是如此简单(只需使用lm),我一定会错过一些东西。此外,您没有告诉我们x 是协变量还是其他东西(例如,样本量?)。因此,我什至无法猜测您所观察到的背后是否存在某种基本关系。