Нехай істинна лінія , задана кутом та значення , є множиноюθ γLθγ
(x,y):cos(θ)x+sin(θ)y=γ.
Підписана відстань між будь-якою точкою і цією лінією(x,y)
d(x,y;L)=cos(θ)x+sin(θ)y−γ.
дисперсія буде а буде , незалежність та означає, що дисперсія цієї відстані дорівнюєσ 2 i y i τ 2 i x i y ixiσ2iyiτ2ixiyi
Var(d(xi,yi;L))=cos2(θ)σ2i+sin2(θ)τ2i.
Отже, знайдемо і для яких обернена зважена на дисперсію сума квадратичних відстаней є якомога меншою: це буде рішенням максимальної ймовірності, якщо припустити, що помилки мають нормальний розподіл. Для цього потрібне числове рішення, але знайти його просто за допомогою декількох кроків Ньютона-Рафсона, що починаються зі значення, запропонованого звичайним найменшим квадратом.γθγ
Симулятори дозволяють припустити, що це рішення добре навіть при малій кількості даних та відносно великих значеннях та . Звичайно, ви можете отримати стандартні помилки для параметрів звичайними способами. Якщо вас зацікавила стандартна помилка положення лінії, а також нахил, то, можливо, спочатку слід зосередити обидві змінні на : це повинно усунути майже всю кореляцію між оцінками двох параметрів.τ i 0σiτi0
Метод настільки добре працює на прикладі запитання, що пристосована лінія майже відрізняється від справжньої лінії на ділянці: вони скрізь знаходяться в межах однієї одиниці або близько того. Натомість у цьому прикладі з експоненціального розподілу, а з експоненціального розподілу з подвоєною шкалою (так що більшість помилок, як правило, трапляється в координаті ). Є лише балів, невелика кількість. Справжні точки однаково розташовані вздовж лінії з одиничними проміжками. Це досить важкий тест, оскільки потенційні помилки помітні порівняно з діапазоном балів.σ i x n = 8τiσixn=8
Справжня лінія показана синім пунктиром. Уздовж нього початкові точки зображені як порожнисті кола. Сірі стрілки з'єднують їх із спостережуваними точками, побудованими у вигляді суцільних чорних дисків. Розчин малюється суцільною червоною лінією. Незважаючи на наявність великих відхилень між спостережуваними та фактичними значеннями, рішення надзвичайно близьке до правильної лінії у цій області.
#
# 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
підходить модель лінійної регресії, тобто: модель очікування щодо , в якій явно є випадковою, а вважається відомою. Для подолання невизначеності в вам знадобиться інша модель. P ( Y | X ) Y X X