不確実なデータがあるとしましょう。例えば:
X Y
1 10±4
2 50±3
3 80±7
4 105±1
5 120±9
不確かさの性質としては、繰り返し測定や実験、測定器の不確かさなどがあります。
Rを使用してカーブをフィットさせたいのですが、通常はで行いlm
ます。ただし、これは、フィット係数の不確実性、したがって予測区間の不確実性を私に与える場合、データの不確実性を考慮に入れていません。ドキュメントを見ると、lm
ページにはこれがあります:
...重みは、異なる観測値に異なる分散があることを示すために使用できます...
だから、多分これは何か関係があるのではないかと思います。私はそれを手動で行う理論を知っていますが、lm
関数でそれを行うことが可能かどうか疑問に思っていました。そうでない場合、これを実行できる他の関数(またはパッケージ)はありますか?
編集
コメントのいくつかを見て、ここにいくつかの明確化があります。この例を見てみましょう:
x <- 1:10
y <- c(131.4,227.1,245,331.2,386.9,464.9,476.3,512.2,510.8,532.9)
mod <- lm(y ~ x + I(x^2))
summary(mod)
くれます:
Residuals:
Min 1Q Median 3Q Max
-32.536 -8.022 0.087 7.666 26.358
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 39.8050 22.3210 1.783 0.11773
x 92.0311 9.3222 9.872 2.33e-05 ***
I(x^2) -4.2625 0.8259 -5.161 0.00131 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 18.98 on 7 degrees of freedom
Multiple R-squared: 0.986, Adjusted R-squared: 0.982
F-statistic: 246.7 on 2 and 7 DF, p-value: 3.237e-07
基本的に、私の係数はa = 39.8±22.3、b = 92.0±9.3、c = -4.3±0.8です。今度は、各データポイントのエラーが20だとしましょう。呼び出しで使用するweights = rep(20,10)
と、lm
代わりに次のようになります。
Residual standard error: 84.87 on 7 degrees of freedom
ただし、係数のstdエラーは変化しません。
手動で、行列代数を使用して共分散行列を計算し、そこに重み/エラーを入れ、それを使用して信頼区間を導出する方法を知っています。それで、lm関数自体、または他の関数でそれを行う方法はありますか?
lm
正規化された分散を重みとして使用し、モデルが統計的に有効であると仮定してパラメーターの不確実性を推定します。これが当てはまらない(エラーバーが小さすぎる、または大きすぎる)と思われる場合は、不確実性の見積もりを信頼すべきではありません。
boot
、R のパッケージを使用してブートストラップできます。その後、ブートストラップされたデータセットに対して線形回帰を実行できます。