Fiz medições de duas variáveis e . Ambos têm incertezas conhecidas e associadas a elas. Eu quero encontrar a relação entre e . Como eu posso fazer isso?
EDIT : cada tem um diferente , i associado a ele e o mesmo com .
Exemplo reproduzível de R:
## 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)
O problema com este exemplo é que acho que assume que não há incertezas em . Como posso consertar isso?
r
regression
deming-regression
rhombidodecahedron
fonte
fonte
lm
se encaixa em um modelo de regressão linear, ou seja: um modelo da expectativa de em relação a P ( Y | X ) , no qual Y é claramente aleatório e X é considerado conhecido. Para lidar com a incerteza em X, você precisará de um modelo diferente.Deming
função no pacote R MethComp .Respostas:
Seja a reta verdadeira , dada por um ângulo θ e um valor γL θ γ , o conjunto
A distância assinada entre qualquer ponto e esta linha é(x,y)
O método funciona tão bem com o exemplo da pergunta que a linha ajustada é quase distinguível da linha verdadeira na plotagem: elas estão dentro de uma unidade ou mais uma da outra em todos os lugares. Em vez disso, neste exemplo, oτi σi x n=8
A linha verdadeira é mostrada em azul pontilhado. Ao longo, os pontos originais são plotados como círculos ocos. Setas cinza as conectam aos pontos observados, plotados como discos pretos sólidos. A solução é desenhada como uma linha vermelha sólida. Apesar da presença de grandes desvios entre os valores observados e os reais, a solução está notavelmente próxima da linha correta nessa região.
fonte
deming
função também pode lidar com erros de variáveis. Provavelmente deve produzir um ajuste muito semelhante ao seu.A otimização de probabilidade máxima para o caso de incertezas em xey foi abordada por York (2004). Aqui está o código R para sua função.
"YorkFit", escrito por Rick Wehr, 2011, traduzido para R por Rachel Chang
Rotina universal para encontrar o melhor ajuste de linha reta para dados com erros variáveis e correlatos, incluindo estimativas de erro e qualidade do ajuste, seguindo a Eq. (13) de York 2004, American Journal of Physics, que foi baseado em York 1969, Earth and Planetary Sciences Letters
YorkFit <- função (X, Y, Xstd, Ystd, Ri = 0, b0 = 0, printCoefs = 0, makeLine = 0, eps = 1e-7)
X, Y, Xstd, Ystd: ondas contendo pontos X, pontos Y e seus desvios padrão
AVISO: Xstd e Ystd não podem ser zero, pois isso fará com que Xw ou Yw seja NaN. Use um valor muito pequeno.
Ri: coeficientes de correlação para erros X e Y - comprimento 1 ou comprimento de X e Y
b0: estimativa inicial aproximada da inclinação (pode ser obtida de um ajuste de mínimos quadrados padrão sem erros)
printCoefs: defina igual a 1 para exibir os resultados na janela de comando
makeLine: defina igual a 1 para gerar uma onda Y para a linha de ajuste
Retorna uma matriz com a interceptação e a inclinação mais suas incertezas
Se nenhuma estimativa inicial para b0 for fornecida, use OLS se (b0 == 0) {b0 = lm (Y ~ X) $ coeficientes [2]}
a, b: interceptação final e inclinação a.err, b.err: incertezas estimadas em interceptação e inclinação
fonte