Digamos que eu tenha dados que tenham alguma incerteza. Por exemplo:
X Y
1 10±4
2 50±3
3 80±7
4 105±1
5 120±9
A natureza da incerteza pode ser repetir medições ou experimentos, ou medir a incerteza do instrumento, por exemplo.
Eu gostaria de ajustar uma curva usando R, algo com o qual normalmente faria lm
. No entanto, isso não leva em consideração a incerteza nos dados quando me fornece a incerteza nos coeficientes de ajuste e, consequentemente, nos intervalos de previsão. Observando a documentação, a lm
página possui:
... pesos podem ser usados para indicar que observações diferentes têm variações diferentes ...
Então, isso me faz pensar que talvez isso tenha algo a ver com isso. Conheço a teoria de fazê-lo manualmente, mas estava pensando se é possível fazer isso com a lm
função. Caso contrário, existe alguma outra função (ou pacote) capaz de fazer isso?
EDITAR
Vendo alguns dos comentários, aqui estão alguns esclarecimentos. Veja este exemplo:
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)
Dá-me:
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
Então, basicamente, meus coeficientes são a = 39,8 ± 22,3, b = 92,0 ± 9,3, c = -4,3 ± 0,8. Agora vamos dizer que, para cada ponto de dados, o erro é 20. Usarei weights = rep(20,10)
a lm
chamada e recebo isso:
Residual standard error: 84.87 on 7 degrees of freedom
mas os erros padrão nos coeficientes não são alterados.
Manualmente, eu sei como fazer isso com o cálculo da matriz de covariância usando álgebra de matriz e colocando os pesos / erros lá, e derivando os intervalos de confiança usando isso. Então, existe uma maneira de fazê-lo na própria função lm ou em qualquer outra função?
fonte
boot
pacote em R. Depois, você pode permitir uma regressão linear sobre o conjunto de dados inicializados.lm
usará as variações normalizadas como pesos e assumirá que seu modelo é estatisticamente válido para estimar a incerteza dos parâmetros. Se você acha que esse não é o caso (barras de erro muito pequenas ou muito grandes), não confie em nenhuma estimativa de incerteza.Respostas:
Esse tipo de modelo é realmente muito mais comum em certos ramos da ciência (por exemplo, física) e engenharia do que a regressão linear "normal". Assim, em ferramentas de física como
ROOT
, esse tipo de ajuste é trivial, enquanto a regressão linear não é implementada nativamente! Os físicos tendem a chamar isso de apenas um "ajuste" ou um ajuste minimizador de qui-quadrado.lm
lm
lm pesos e o erro padrão
Existem algumas soluções possíveis dadas nas respostas. Em particular, uma resposta anônima sugere o uso de
vcov(mod)/summary(mod)$sigma^2
lm
EDITAR
Se você está fazendo esse tipo de coisa, pode considerar usar
ROOT
(o que parece fazer isso nativamente enquantolm
eglm
não). Aqui está um breve exemplo de como fazer issoROOT
. Primeiro,ROOT
pode ser usado via C ++ ou Python, e é um enorme download e instalação. Você pode experimentá-lo no navegador usando um notebook Jupiter, seguindo o link aqui , escolhendo "Binder" à direita e "Python" à esquerda.Eu coloquei raízes quadradas como as incertezas noy
e um belo enredo é produzido:
lm
SEGUNDA EDIÇÃO
A outra resposta da mesma pergunta anterior de @Wolfgang fornece uma solução ainda melhor: o
rma
ferramenta dometafor
pacote (eu originalmente interpretei o texto nessa resposta para dizer que não calculou a interceptação, mas esse não é o caso). Tomando as variações nas medidas y como simplesmente y:Esta é definitivamente a melhor ferramenta R pura para esse tipo de regressão que eu encontrei.
fonte
lm
. Se você fizer isso, as estatísticas de validação, como o qui-quadrado, serão desativadas. Se a dispersão dos seus resíduos não corresponder às suas barras de erro, algo está errado no modelo estatístico (na escolha do modelo ou nas barras de erro ou na hipótese normal ...). Em ambos os casos, as incertezas dos parâmetros não serão confiáveis !!!lm
para obter a saída correta. (Se alguém estiver curioso, mostrarei como fazer issoROOT
).