Angenommen, ich habe Daten mit Unsicherheiten. Beispielsweise:
X Y
1 10±4
2 50±3
3 80±7
4 105±1
5 120±9
Die Art der Unsicherheit kann beispielsweise Wiederholungsmessungen oder -experimente oder Messinstrumentenunsicherheit sein.
Ich möchte mit R eine Kurve daran anpassen, was ich normalerweise tun würde lm
. Dies berücksichtigt jedoch nicht die Unsicherheit in den Daten, wenn es mir die Unsicherheit in den Anpassungskoeffizienten und folglich die Vorhersageintervalle gibt. In der Dokumentation finden Sie auf der lm
Seite Folgendes:
... Gewichte können verwendet werden, um anzuzeigen, dass unterschiedliche Beobachtungen unterschiedliche Varianzen aufweisen ...
Ich denke also, dass das vielleicht etwas damit zu tun hat. Ich kenne die Theorie, es manuell zu machen, aber ich habe mich gefragt, ob es möglich ist, dies mit der lm
Funktion zu tun . Wenn nicht, gibt es eine andere Funktion (oder ein anderes Paket), die dazu in der Lage ist?
BEARBEITEN
Nach einigen Kommentaren finden Sie hier einige Erläuterungen. Nehmen Sie dieses Beispiel:
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)
Gibt mir:
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
Grundsätzlich sind meine Koeffizienten a = 39,8 ± 22,3, b = 92,0 ± 9,3, c = -4,3 ± 0,8. Nehmen wir nun an, dass für jeden Datenpunkt der Fehler 20 ist. Ich werde ihn weights = rep(20,10)
im lm
Aufruf verwenden und erhalte stattdessen Folgendes:
Residual standard error: 84.87 on 7 degrees of freedom
Die Standardfehler der Koeffizienten ändern sich jedoch nicht.
Manuell weiß ich, wie man das macht, indem man die Kovarianzmatrix unter Verwendung der Matrixalgebra berechnet und die Gewichte / Fehler dort einfügt und die Konfidenzintervalle daraus ableitet. Gibt es eine Möglichkeit, dies in der lm-Funktion selbst oder in einer anderen Funktion zu tun?
lm
verwendet die normalisierten Varianzen als Gewichte und geht dann davon aus, dass Ihr Modell statistisch gültig ist, um die Unsicherheit der Parameter abzuschätzen. Wenn Sie der Meinung sind, dass dies nicht der Fall ist (Fehlerbalken zu klein oder zu groß), sollten Sie keiner Unsicherheitsschätzung vertrauen.
boot
Paket in R booten. Anschließend können Sie eine lineare Regression über den Bootstrap-Datensatz laufen lassen.