Допустим, у меня есть данные, которые имеют некоторую неопределенность. Например:
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 или любой другой функции?
источник
boot
пакета из R. После этого вы можете позволить линейной регрессии проходить по загруженному набору данных.lm
будет использовать нормализованные отклонения в качестве весов, а затем предположим, что ваша модель является статистически достоверной для оценки неопределенности параметров. Если вы считаете, что это не так (ошибки слишком малы или слишком велики), вам не следует доверять никаким оценкам неопределенности.Ответы:
Этот тип модели на самом деле гораздо чаще встречается в определенных отраслях науки (например, в физике) и технике, чем "нормальная" линейная регрессия. Таким образом, в таких физических инструментах, как подобный
ROOT
подход, тривиально, а линейная регрессия изначально не реализована! Физики имеют тенденцию называть это просто «соответствием» или уменьшением соответствия хи-квадрат.lm
lm
лм весов и стандартная ошибка
В ответах есть несколько возможных решений. В частности, анонимный ответ предлагает использовать
vcov(mod)/summary(mod)$sigma^2
lm
РЕДАКТИРОВАТЬ
Если вы много делаете такого рода вещи, вы можете подумать об использовании
ROOT
(который, кажется, делает это изначально,lm
аglm
не делает). Вот краткий пример того, как это сделатьROOT
. Во-первых,ROOT
его можно использовать через C ++ или Python, и его можно скачать и установить. Вы можете попробовать его в браузере, используя блокнот Jupiter, перейдя по ссылке здесь , выбрав «Binder» справа и «Python» слева.и получается хороший сюжет:
lm
ВТОРОЕ РЕДАКТИРОВАНИЕ
Другой ответ от того же предыдущего вопроса от @Wolfgang дает еще лучшее решение:
rma
инструмент изmetafor
пакета (я первоначально интерпретировал текст в этом ответе как означающий, что он не вычислял перехват, но это не так). Принимая дисперсии в измерениях у просто:Это определенно лучший инструмент для чистого R для этого типа регрессии, который я нашел.
источник
lm
. Если вы сделаете это, статистика проверки, такая как хи-квадрат, будет отключена. Если разброс ваших остатков не соответствует вашим барам ошибок, в статистической модели что-то не так (либо выбор модели, либо ошибки, либо нормальная гипотеза ...). В любом случае неопределенности параметров будут ненадежными !!!lm
чтобы получить правильный вывод. (Если кому-то интересно, я покажу, как это сделатьROOT
).