Wykonałem pomiarów dwóch zmiennych x i y . Obaj znają niepewności σ x i σ y z nimi związane. Chcę znaleźć zależność między X i Y . Jak mogę to zrobić?
Edycja : każdy z ma inny Ď X , i wiąże się z nim, a tym samym z y ı .
Przykład odtwarzalnego 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)
Problem z tym przykładem polega na tym, że zakładam, że nie ma żadnych niepewności . Jak mogę to naprawić?
r
regression
deming-regression
rombidodekeded
źródło
źródło
lm
Deming
Funkcja w pakiecie R MethComp .Odpowiedzi:
Znajdźmy zatem i dla których suma kwadratów odległości ważonych wariancją odwrotną jest tak mała, jak to możliwe: będzie to rozwiązanie największego prawdopodobieństwa, jeśli założymy, że błędy mają dwuwymiarowe rozkłady normalne. Wymaga to rozwiązania numerycznego, ale łatwo jest znaleźć kilka kroków Newtona-Raphsona zaczynających się od wartości sugerowanej przez zwykłe dopasowanie najmniejszych kwadratów.γθ γ
Symulacje sugerują, że to rozwiązanie jest dobre nawet przy niewielkich ilościach danych i stosunkowo dużych wartościach i . Oczywiście można uzyskać standardowe błędy parametrów w zwykły sposób. Jeśli interesuje Cię standardowy błąd położenia linii, a także nachylenie, możesz najpierw wyśrodkować obie zmienne na : to powinno wyeliminować prawie całą korelację między oszacowaniami dwóch parametrów.τ i 0σi τi 0
σ iτi σi x n=8
Prawdziwa linia jest zaznaczona niebieską kropką. Wzdłuż niego oryginalne punkty są wykreślone jako puste koła. Szare strzałki łączą je z obserwowanymi punktami, wykreślonymi jako jednolite czarne dyski. Rozwiązanie jest narysowane jako ciągła czerwona linia. Pomimo obecności dużych odchyleń między wartościami obserwowanymi a rzeczywistymi, rozwiązanie jest niezwykle zbliżone do prawidłowej linii w tym obszarze.
źródło
deming
funkcja może również obsługiwać błędy zmiennych. Prawdopodobnie powinno dać dopasowanie bardzo podobne do twojego.Maksymalna optymalizacja prawdopodobieństwa w przypadku niepewności w x i y została omówiona przez York (2004). Oto kod R jego funkcji.
„YorkFit”, napisany przez Ricka Wehra, 2011, przetłumaczony na R. przez Rachel Chang
Uniwersalna procedura znajdowania najlepszego dopasowania linii prostej do danych ze zmiennymi, skorelowanymi błędami, w tym błędami i oszacowaniami poprawności dopasowania, po równaniu (13) z York 2004, American Journal of Physics, który z kolei był oparty na York 1969, Earth and Planetary Sciences Letters
YorkFit <- funkcja (X, Y, Xstd, Ystd, Ri = 0, b0 = 0, printCoefs = 0, makeLine = 0, eps = 1e-7)
X, Y, Xstd, Ystd: fale zawierające punkty X, punkty Y i ich odchylenia standardowe
OSTRZEŻENIE: Xstd i Ystd nie mogą być zerowe, ponieważ spowoduje to, że Xw lub Yw będą NaN. Zamiast tego użyj bardzo małej wartości.
Ri: współczynniki korelacji dla błędów X i Y - długość 1 lub długość X i Y
b0: wstępne oszacowanie nachylenia (można uzyskać ze standardowego dopasowania najmniejszych kwadratów bez błędów)
printCoefs: ustaw wartość równą 1, aby wyświetlić wyniki w oknie poleceń
makeLine: zestaw równy 1, aby wygenerować falę Y dla linii dopasowania
Zwraca macierz ze znakiem przecięcia i nachylenia oraz ich niepewności
Jeśli nie podano wstępnego przypuszczenia dla b0, po prostu użyj OLS, jeśli (b0 == 0) {b0 = lm (Y ~ X) $ współczynniki [2]}
a, b: końcowy punkt przecięcia i nachylenie a.err, b.err: oszacowane niepewności dotyczące punktu przecięcia i nachylenia
źródło