Lascia che la vera linea , data da un angolo e un valore , sia l'insiemeθ γLθγ
(x,y):cos(θ)x+sin(θ)y=γ.
La distanza segnata tra qualsiasi punto e questa linea è(x,y)
d(x,y;L)=cos(θ)x+sin(θ)y−γ.
Lasciando che la varianza di sia e quella di sia , l'indipendenza di e implica che la varianza di questa distanza èσ 2 i y i τ 2 i x i y ixiσ2iyiτ2ixiyi
Var(d(xi,yi;L))=cos2(θ)σ2i+sin2(θ)τ2i.
Troviamo quindi e per i quali la somma ponderata della varianza inversa delle distanze al quadrato è il più piccola possibile: sarà la soluzione di massima verosimiglianza se assumiamo che gli errori abbiano distribuzioni normali bivariate. Ciò richiede una soluzione numerica, ma è semplice trovare un con alcuni passaggi di Newton-Raphson che iniziano con un valore suggerito da un normale adattamento dei minimi quadrati.γθγ
Le simulazioni suggeriscono che questa soluzione è buona anche con piccole quantità di dati e valori relativamente grandi di e . Naturalmente, è possibile ottenere errori standard per i parametri nei modi consueti. Se sei interessato all'errore standard della posizione della linea, così come alla pendenza, potresti voler prima centrare entrambe le variabili su : ciò dovrebbe eliminare quasi tutta la correlazione tra le stime dei due parametri.τ i 0σiτi0
Il metodo funziona così bene con l'esempio della domanda che la linea adattata è quasi distinguibile dalla linea reale nella trama: si trovano all'interno di una unità o più l'una dall'altra ovunque. Invece, in questo esempio viene disegnato da una distribuzione esponenziale e sono disegnati da una distribuzione esponenziale con il doppio della scala (in modo che la maggior parte dell'errore tende a verificarsi nella coordinata ). Ci sono solo punti, un numero piccolo. I punti reali sono equamente distanziati lungo la linea con spaziatura unità. Questo è un test abbastanza severo, perché i potenziali errori sono evidenti rispetto alla gamma dei punti.σ i x n = 8τiσixn=8
La linea vera è mostrata in blu punteggiato. Lungo di essa i punti originali sono tracciati come cerchi vuoti. Le frecce grigie le collegano ai punti osservati, tracciati come dischi neri solidi. La soluzione viene disegnata come una linea rossa continua. Nonostante la presenza di grandi deviazioni tra i valori osservati e quelli effettivi, la soluzione è notevolmente vicina alla linea corretta all'interno di questa regione.
#
# Generate data.
#
theta <- c(1, -2, 3) # The line is theta %*% c(x,y,-1) == 0
theta[-3] <- theta[-3]/sqrt(crossprod(theta[-3]))
n <- 8
set.seed(17)
sigma <- rexp(n, 1/2)
tau <- rexp(n, 1)
u <- 1:n
xy.0 <- t(outer(c(-theta[2], theta[1]), 0:(n-1)) + c(theta[3]/theta[1], 0))
xy <- xy.0 + cbind(rnorm(n, sd=sigma), rnorm(n, sd=tau))
#
# Fit a line.
#
x <- xy[, 1]
y <- xy[, 2]
f <- function(phi) { # Negative log likelihood, up to an additive constant
a <- phi[1]
gamma <- phi[2]
sum((x*cos(a) + y*sin(a) - gamma)^2 / ((sigma*cos(a))^2 + (tau*sin(a))^2))/2
}
fit <- lm(y ~ x) # Yields starting estimates
slope <- coef(fit)[2]
theta.0 <- atan2(1, -slope)
gamma.0 <- coef(fit)[1] / sqrt(1 + slope^2)
sol <- nlm(f,c(theta.0, gamma.0))
#
# Plot the data and the fit.
#
theta.hat <- sol$estimate[1] %% (2*pi)
gamma.hat <- sol$estimate[2]
plot(rbind(xy.0, xy), type="n", xlab="x", ylab="y")
invisible(sapply(1:n, function(i)
arrows(xy.0[i,1], xy.0[i,2], xy[i,1], xy[i,2],
length=0.15, angle=20, col="Gray")))
points(xy.0)
points(xy, pch=16)
abline(c(theta[3] / theta[2], -theta[1]/theta[2]), col="Blue", lwd=2, lty=3)
abline(c(gamma.hat / sin(theta.hat), -1/tan(theta.hat)), col="Red", lwd=2)
lm
adatta a un modello di regressione lineare, cioè: un modello dell'attesa di rispetto a , in cui chiaramente è casuale e è considerato noto. Per affrontare l'incertezza in avrai bisogno di un modello diverso. P ( Y | X ) Y X X