多项式回归的置信区间
Confidence interval of polynomial regression
我对 R 和统计有一点疑问。
我用最大似然法拟合了一个模型,它给了我以下系数及其各自的标准误差(以及其他参数估计值):
ParamIndex Estimate SE
1 a0 0.2135187 0.02990105
2 a1 1.1343072 0.26123775
3 a2 -1.0000000 0.25552696
根据我可以画出的曲线:
y= 0.2135187 + 1.1343072 * x - 1 * I(x^2)
但是据此,我现在必须计算这条曲线周围的置信区间,但我不清楚如何计算。
显然,我应该使用传播或 error/uncertainty,但我发现的方法需要原始数据,或者不仅仅是多项式公式。
当使用 R 知道估计的 SE 时,是否有任何方法可以计算我的曲线的 CI?
感谢您的帮助。
编辑:
所以,现在,我有协方差 table (v) 通过函数 vcov
:
获得
a0 a1 a2
a0 0.000894073 -0.003622614 0.002874075
a1 -0.003622614 0.068245163 -0.065114661
a2 0.002874075 -0.065114661 0.065294027
和n = 279
.
您现在没有足够的信息。要计算拟合曲线的置信区间,一个完整的variance-covariance矩阵 你的三个系数是必需的,但现在你只有该矩阵的对角线条目。
如果您拟合了正交多项式,则 variance-covariance 矩阵是对角矩阵,具有相同的对角线元素。这当然不是你的情况,因为:
- 您显示的标准错误彼此不同;
- 您已明确使用原始多项式表示法:
x + I(x ^ 2)
but the methods I found require the raw data
它不是"raw data"用于拟合模型的。它是 "new data" 你想要产生置信带的地方。但是,您确实需要知道用于拟合模型的数据数量,例如 n
,因为这是推导剩余自由度所必需的。在你有 3 个系数的情况下,这个自由度是 n - 3
.
一旦你有:
- 完整的 variance-covariance 矩阵,比方说
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
完整的理论在
更新
根据您提供的协方差矩阵,现在可以生成一些结果和数字。
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")))
假设我们要在 x = seq(-5, 5, by = 0.2)
:
处生成 CI
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))
我对 R 和统计有一点疑问。
我用最大似然法拟合了一个模型,它给了我以下系数及其各自的标准误差(以及其他参数估计值):
ParamIndex Estimate SE
1 a0 0.2135187 0.02990105
2 a1 1.1343072 0.26123775
3 a2 -1.0000000 0.25552696
根据我可以画出的曲线:
y= 0.2135187 + 1.1343072 * x - 1 * I(x^2)
但是据此,我现在必须计算这条曲线周围的置信区间,但我不清楚如何计算。
显然,我应该使用传播或 error/uncertainty,但我发现的方法需要原始数据,或者不仅仅是多项式公式。
当使用 R 知道估计的 SE 时,是否有任何方法可以计算我的曲线的 CI?
感谢您的帮助。
编辑:
所以,现在,我有协方差 table (v) 通过函数 vcov
:
a0 a1 a2
a0 0.000894073 -0.003622614 0.002874075
a1 -0.003622614 0.068245163 -0.065114661
a2 0.002874075 -0.065114661 0.065294027
和n = 279
.
您现在没有足够的信息。要计算拟合曲线的置信区间,一个完整的variance-covariance矩阵 你的三个系数是必需的,但现在你只有该矩阵的对角线条目。
如果您拟合了正交多项式,则 variance-covariance 矩阵是对角矩阵,具有相同的对角线元素。这当然不是你的情况,因为:
- 您显示的标准错误彼此不同;
- 您已明确使用原始多项式表示法:
x + I(x ^ 2)
but the methods I found require the raw data
它不是"raw data"用于拟合模型的。它是 "new data" 你想要产生置信带的地方。但是,您确实需要知道用于拟合模型的数据数量,例如 n
,因为这是推导剩余自由度所必需的。在你有 3 个系数的情况下,这个自由度是 n - 3
.
一旦你有:
- 完整的 variance-covariance 矩阵,比方说
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
完整的理论在
更新
根据您提供的协方差矩阵,现在可以生成一些结果和数字。
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")))
假设我们要在 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))