Допустим, у меня есть данные, которые имеют некоторую неопределенность. Например:
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
В общем, мои коэффициенты а = 39,8 ± 22,3, b = 92,0 ± 9,3, с = -4,3 ± 0,8. Теперь допустим, что для каждой точки данных ошибка равна 20. Я буду использовать weights = rep(20,10)
в lm
вызове, и вместо этого получу следующее:
Residual standard error: 84.87 on 7 degrees of freedom
но стандартные ошибки на коэффициенты не меняются.
Вручную, я знаю, как сделать это с помощью вычисления ковариационной матрицы с использованием матричной алгебры и размещения в ней весов / ошибок, а также получения доверительных интервалов, используя это. Так есть ли способ сделать это в самой функции lm или любой другой функции?
lm
будет использовать нормализованные отклонения в качестве весов, а затем предположим, что ваша модель является статистически достоверной для оценки неопределенности параметров. Если вы считаете, что это не так (ошибки слишком малы или слишком велики), вам не следует доверять никаким оценкам неопределенности.
boot
пакета из R. После этого вы можете позволить линейной регрессии проходить по загруженному набору данных.