Ich habe Messungen mit zwei Variablen und . Sie haben beide bekannte Unsicherheiten und die mit ihnen verbunden sind. Ich möchte die Beziehung zwischen x und y finden . Wie kann ich es tun?y σ x
BEARBEITEN : Mit jedem ist ein anderes und mit dem dasselbe . y i
Reproduzierbares R-Beispiel:
## pick some real x and y values
true_x <- 1:100
true_y <- 2*true_x+1
## pick the uncertainty on them
sigma_x <- runif(length(true_x), 1, 10) # 10
sigma_y <- runif(length(true_y), 1, 15) # 15
## perturb both x and y with noise
noisy_x <- rnorm(length(true_x), true_x, sigma_x)
noisy_y <- rnorm(length(true_y), true_y, sigma_y)
## make a plot
plot(NA, xlab="x", ylab="y",
xlim=range(noisy_x-sigma_x, noisy_x+sigma_x),
ylim=range(noisy_y-sigma_y, noisy_y+sigma_y))
arrows(noisy_x, noisy_y-sigma_y,
noisy_x, noisy_y+sigma_y,
length=0, angle=90, code=3, col="darkgray")
arrows(noisy_x-sigma_x, noisy_y,
noisy_x+sigma_x, noisy_y,
length=0, angle=90, code=3, col="darkgray")
points(noisy_y ~ noisy_x)
## fit a line
mdl <- lm(noisy_y ~ noisy_x)
abline(mdl)
## show confidence interval around line
newXs <- seq(-100, 200, 1)
prd <- predict(mdl, newdata=data.frame(noisy_x=newXs),
interval=c('confidence'), level=0.99, type='response')
lines(newXs, prd[,2], col='black', lty=3)
lines(newXs, prd[,3], col='black', lty=3)
Das Problem bei diesem Beispiel ist, dass ich davon ausgehe, dass es in keine Unsicherheiten gibt . Wie kann ich das beheben?
r
regression
deming-regression
rhombidodecahedron
quelle
quelle
lm
passt ein lineares Regressionsmodell, das heißt: ein Modell der Erwartung vonDeming
Funktion im R-Paket MethComp .Antworten:
Lassen Sie die wahre Linie , die durch einen Winkel θ und einen Wert γ gegeben ist, die MengeL θ γ
Die Varianz von sei σ 2 i und die von y i sei τ 2 i , Unabhängigkeit von xxich σ2ich yich τ2ich xich yich
Die wahre Linie ist blau gepunktet dargestellt. Entlang sind die ursprünglichen Punkte als hohle Kreise eingezeichnet. Graue Pfeile verbinden sie mit den beobachteten Punkten, die als durchgezogene schwarze Scheiben dargestellt sind. Die Lösung wird als durchgezogene rote Linie gezeichnet. Trotz der großen Abweichungen zwischen den beobachteten und den tatsächlichen Werten ist die Lösung in diesem Bereich bemerkenswert nahe an der korrekten Linie.
quelle
deming
Funktion auch mit variablen Fehlern umgehen kann. Es sollte wahrscheinlich eine sehr ähnliche Passform ergeben.Die Optimierung der maximalen Wahrscheinlichkeit für den Fall von Unsicherheiten in x und y wurde von York (2004) angesprochen. Hier ist R-Code für seine Funktion.
"YorkFit", geschrieben von Rick Wehr, 2011, übersetzt in R von Rachel Chang
Universelle Routine zum Ermitteln der besten geraden Anpassung an Daten mit variablen, korrelierten Fehlern, einschließlich Fehler- und Anpassungsgüte-Schätzungen, nach Gl. (13) von York 2004, American Journal of Physics, das sich wiederum auf York 1969, Earth and Planetary Sciences Letters, stützte
YorkFit <- Funktion (X, Y, Xstd, Ystd, Ri = 0, b0 = 0, printCoefs = 0, makeLine = 0, eps = 1e-7)
X, Y, Xstd, Ystd: Wellen mit X-Punkten, Y-Punkten und deren Standardabweichungen
WARNUNG: Xstd und Ystd dürfen nicht Null sein, da dies dazu führt, dass Xw oder Yw NaN sind. Verwenden Sie stattdessen einen sehr kleinen Wert.
Ri: Korrelationskoeffizienten für X- und Y-Fehler - Länge 1 oder Länge von X und Y
b0: grobe anfängliche Schätzung für die Steigung (kann aus einer fehlerfreien Standardanpassung der kleinsten Quadrate erhalten werden)
printCoefs: Setzen Sie den Wert auf 1, um die Ergebnisse im Befehlsfenster anzuzeigen
makeLine: Gleich 1 setzen, um eine Y-Welle für die Anpassungslinie zu erzeugen
Gibt eine Matrix mit dem Achsenabschnitt und der Steigung sowie deren Unsicherheiten zurück
Wenn keine anfängliche Schätzung für b0 gegeben ist, dann verwende einfach OLS, wenn (b0 == 0) {b0 = 1m (Y ~ X) $ Koeffizienten [2]}
a, b: Endschnitt und Steigung a.err, b.err: geschätzte Unsicherheiten in Schnitt und Steigung
quelle