Diciamo che ho dei dati con qualche incertezza. Per esempio:
X Y
1 10±4
2 50±3
3 80±7
4 105±1
5 120±9
La natura dell'incertezza potrebbe essere la ripetizione di misurazioni o esperimenti, o l'incertezza dello strumento di misurazione, ad esempio.
Vorrei adattarci ad una curva usando R, qualcosa che normalmente farei lm
. Tuttavia, ciò non tiene conto dell'incertezza nei dati quando mi dà l'incertezza nei coefficienti di adattamento e, di conseguenza, negli intervalli di previsione. Guardando la documentazione, la lm
pagina ha questo:
... i pesi possono essere usati per indicare che osservazioni diverse hanno varianze diverse ...
Quindi mi fa pensare che forse questo ha qualcosa a che fare con esso. Conosco la teoria di farlo manualmente, ma mi chiedevo se fosse possibile farlo con la lm
funzione. In caso contrario, c'è qualche altra funzione (o pacchetto) in grado di farlo?
MODIFICARE
Vedendo alcuni dei commenti, ecco alcuni chiarimenti. Prendi questo esempio:
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)
Mi da:
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
Quindi sostanzialmente i miei coefficienti sono a = 39,8 ± 22,3, b = 92,0 ± 9,3, c = -4,3 ± 0,8. Ora diciamo che per ogni punto dati, l'errore è 20. Userò weights = rep(20,10)
nella lm
chiamata e ottengo questo invece:
Residual standard error: 84.87 on 7 degrees of freedom
ma gli errori std sui coefficienti non cambiano.
Manualmente, so come farlo calcolando la matrice di covarianza usando l'algebra di matrice e inserendo i pesi / errori e ricavando gli intervalli di confidenza usando quello. Quindi esiste un modo per farlo nella funzione lm stessa o in qualsiasi altra funzione?
lm
utilizzerà le varianze normalizzate come pesi e quindi presupporrà che il modello sia statisticamente valido per stimare l'incertezza dei parametri. Se ritieni che non sia così (barre di errore troppo piccole o troppo grandi), non dovresti fidarti di alcuna stima dell'incertezza.
boot
pacchetto in R. Successivamente è possibile eseguire una regressione lineare sul set di dati con bootstrap.