У вас пока недостаточно информации. Чтобы вычислить доверительный интервал вашей установленной кривой , требуется полная матрица дисперсии-ковариации для ваших трех коэффициентов, но сейчас у вас есть только диагональные элементы этой матрицы.
Если вы установили ортогональный многочлен, то матрица дисперсии-ковариации является диагональной с одинаковыми диагональными элементами. Это, конечно, не ваш случай, так как:
- стандартные ошибки, которые вы показываете, отличаются друг от друга;
- вы явно использовали сырой Полином обозначение:
x + I(x^2)
, но методы, которые я нашел требую исходных данных
Это не это «сырые данные», используемые для подгонки модели. Это «новые данные», где вы хотите создать доверительный диапазон. Тем не менее, вам нужно знать количество данных, используемых для установки модели, например n
, поскольку это необходимо для получения остаточной степени свободы. В вашем случае с 3 коэффициентами эта степень свободы равна n - 3
.
После того, как у вас есть:
- полная матрица ковариационная, скажем
V
;
n
, количество данных, используемых для подгонки модели;
- вектор точек
x
давая где производить доверительный интервал,
вы можете сначала получить стандартную ошибку предсказания из:
X <- cbind(1, x, x^2) ## prediction matrix
e <- sqrt(rowSums(X * (X %*% V))) ## prediction standard error
Вы знаете, как получить прогнозируемые средние, от вашей подогнанной полиномиальной формулы , правильно? Предположим, что среднее значение mu
, теперь 95% -ci, используйте
## residual degree of freedom: n - 3
mu + e * qt(0.025, n - 3) ## lower bound
mu - e * qt(0.025, n - 3) ## upper bound
Полная теория находится в How does predict.lm() compute confidence interval and prediction interval?
Update
на основе вашей предоставленной ковариационной матрицы, то теперь можно получить некоторые результаты и цифры.
V <- structure(c(0.000894073, -0.003622614, 0.002874075, -0.003622614,
0.068245163, -0.065114661, 0.002874075, -0.065114661, 0.065294027
), .Dim = c(3L, 3L), .Dimnames = list(c("a0", "a1", "a2"), c("a0",
"a1", "a2")))
Предположим, что мы хотим производить CI в x = seq(-5, 5, by = 0.2)
:
beta <- c(0.2135187, 1.1343072, -1.0000000)
x <- seq(-5, 5, by = 0.2)
X <- cbind(1, x, x^2)
mu <- X %*% beta
e <- sqrt(rowSums(X * (X %*% V)))
n <- 279
lo <- mu + e * qt(0.025, n - 3)
up <- mu - e * qt(0.025, n - 3)
matplot(x, cbind(mu, lo, up), type = "l", col = 1, lty = c(1,2,2))

Я не знаю, как благодарить вас более, ваша помощь была очень ценится – trantsyx