Hice mediciones de dos variables e . Ambos tienen incertidumbres conocidas y asociadas con ellos. Quiero encontrar la relación entre e . ¿Cómo puedo hacerlo?x y σ x σ y x y
EDITAR : cada tiene una asociada a ella, y lo mismo con la .σ x , i y i
Ejemplo R reproducible:
## 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)
El problema con este ejemplo es que creo que supone que no hay incertidumbres en . ¿Cómo puedo arreglar esto?
r
regression
deming-regression
romdodecaedro
fuente
fuente
lm
ajusta a un modelo de regresión lineal, es decir: un modelo de la expectativa de con respecto a , en el que claramente es tan aleatorio y se considera conocido. Para lidiar con la incertidumbre en , necesitará un modelo diferente. P ( Y | X ) Y X XDeming
función en el paquete R MethComp .Respuestas:
La línea verdadera se muestra en azul punteado. A lo largo, los puntos originales se trazan como círculos huecos. Las flechas grises los conectan a los puntos observados, trazados como discos negros sólidos. La solución se dibuja como una línea roja continua. A pesar de la presencia de grandes desviaciones entre los valores observados y los reales, la solución está notablemente cerca de la línea correcta dentro de esta región.
fuente
deming
función también puede manejar errores variables. Probablemente debería producir un ajuste muy similar al tuyo.York (2004) ha abordado la optimización de máxima probabilidad para el caso de incertidumbres en x e y. Aquí está el código R para su función.
"YorkFit", escrito por Rick Wehr, 2011, traducido a R por Rachel Chang
Rutina universal para encontrar el mejor ajuste en línea recta a los datos con errores correlacionados y variables, incluyendo errores y estimaciones de bondad de ajuste, siguiendo la ecuación (13) de York 2004, American Journal of Physics, que se basó a su vez en York 1969, Earth and Planetary Sciences Letters
YorkFit <- función (X, Y, Xstd, Ystd, Ri = 0, b0 = 0, printCoefs = 0, makeLine = 0, eps = 1e-7)
X, Y, Xstd, Ystd: ondas que contienen puntos X, puntos Y y sus desviaciones estándar
ADVERTENCIA: Xstd e Ystd no pueden ser cero ya que esto hará que Xw o Yw sean NaN. Use un valor muy pequeño en su lugar.
Ri: coeficientes de correlación para errores X e Y - longitud 1 o longitud de X e Y
b0: aproximación inicial aproximada para la pendiente (se puede obtener de un ajuste estándar de mínimos cuadrados sin errores)
printCoefs: establecido igual a 1 para mostrar resultados en la ventana de comandos
makeLine: establece igual a 1 para generar una onda Y para la línea de ajuste
Devuelve una matriz con la intersección y la pendiente más sus incertidumbres
Si no se proporciona una suposición inicial para b0, simplemente use OLS if (b0 == 0) {b0 = lm (Y ~ X) $ coeficientes [2]}
a, b: intersección final y pendiente a.err, b.err: incertidumbres estimadas en intersección y pendiente
fuente