Oblicz niepewność nachylenia regresji liniowej na podstawie niepewności danych

12

Jak obliczyć niepewność nachylenia regresji liniowej na podstawie niepewności danych (być może w programie Excel / Mathematica)?

Przykład: Przykładowa fabuła miejmy punkty danych (0,0), (1,2), (2,4), (3,6), (4,8), ... (8, 16), ale każda wartość y ma niepewność wynosząca 4. Większość funkcji, które znalazłem, obliczałoby niepewność jako 0, ponieważ punkty idealnie pasują do funkcji y = 2x. Ale, jak pokazano na rysunku, y = x / 2 również pasuje do punktów. To przesadzony przykład, ale mam nadzieję, że pokazuje, czego potrzebuję.

EDYCJA: Jeśli spróbuję wyjaśnić nieco więcej, podczas gdy każdy punkt w przykładzie ma pewną wartość y, udajemy, że nie wiemy, czy to prawda. Na przykład pierwszy punkt (0,0) może faktycznie być (0,6) lub (0, -6) lub cokolwiek pomiędzy. Pytam, czy istnieje jakiś algorytm w jednym z popularnych problemów, który bierze to pod uwagę. W tym przykładzie punkty (0,6), (1,6,5), (2,7), (3,7,5), (4,8), ... (8, 10) nadal mieszczą się w przedziale niepewności, więc mogą to być właściwe punkty, a linia łącząca te punkty ma równanie: y = x / 2 + 6, podczas gdy równanie, które otrzymujemy z braku uwzględnienia niepewności ma równanie: y = 2x + 0. Tak więc niepewność k wynosi 1,5, a n oznacza 6.

TL; DR: Na zdjęciu jest linia y = 2x, która jest obliczana przy użyciu dopasowania najmniejszych kwadratów i idealnie pasuje do danych. Próbuję ustalić, ile k i n w y = kx + n może się zmienić, ale nadal pasuje do danych, jeśli znamy niepewność w wartościach y. W moim przykładzie niepewność k wynosi 1,5, a n to 6. Na zdjęciu jest „najlepsza” linia dopasowania i linia, która ledwo pasuje do punktów.

bedanec
źródło
1
Jeśli masz niepewność w swoich , na ogół nie powinieneś używać zwykłej regresji liniowej, ponieważ jest ona tendencyjna (chociaż małe niepewności spowodują małe odchylenie; być może nie przejmujesz się tak bardzo). Czy niepewności w twoim y są zawsze stałe, czy się różnią? Jak dopasowujesz swoją linię? x
Glen_b
Pytam głównie o niepewność. Byłbym jednak szczęśliwy, gdyby rozwiązanie uwzględniało również niepewność w x. Zasadniczo nie są one stałe, ale rozwiązanie, które wymaga, aby były stałe, również byłoby w porządku, próbowałem dopasować z linearfit, fit, findfit w matematyce i linest (oraz niestandardową funkcją, która według mnie waży wartości niepewności) w przewyższać.
bedanec
Czy możesz wyjaśnić tak jasno, jak to możliwe, w jaki sposób wartości „niepewności” byłyby powiązane z tym, co stałoby się pod powiedzmy powtórzeniem eksperymentu? co dokładnie reprezentują te niepewności?
Glen_b
Błąd na przykład, jeśli y jest wagą, ale waga cyfrowa jest dokładna tylko z + -6. (Nie jest to najlepszy przykład z tymi wartościami, ale na przykład, gdy skala pokazuje 255g, może to być 255,0 lub 255,9)
bedanec 21.09.2013
Czy mógłbyś wyjaśnić, jak odnosi się to do pierwszego zdania mojego pytania?
Glen_b

Odpowiedzi:

8

Odpowiadając na „Próbuję ustalić, ile i w może się zmienić, ale nadal pasuje do danych, jeśli znamy niepewność w wartościach ”.kny=kx+ny

Jeśli prawdziwa zależność jest liniowa, a błędy są niezależnymi normalnymi zmiennymi losowymi o średnich wartościach zerowych i znanych odchyleniach standardowych, to obszar ufności % dla jest elipsą, dla której , gdzie jest standardowym odchyleniem błędu w , jest liczbą par , a jest górnym łamliwym rozkładem chi-kwadrat o stopniach swobody.y100(1α)(k,n)(kxi+nyi)2/σi2<χd,α2σiyid(x,y)χd,α2αd

EDYCJA - Przyjmując błąd standardowy każdego na 3 - tj. Przyjmując słupki błędów na wykresie do reprezentowania w przybliżeniu 95% przedziałów ufności dla każdego osobno - równanie dla granicy 95% obszaru ufności dla wynosi .yiyi(k,n)204(k2)2+72n(k2)+9n2=152.271

wprowadź opis zdjęcia tutaj

Ray Koopman
źródło
4

Zrobiłem naiwne bezpośrednie próbkowanie z tym prostym kodem w Pythonie:

import random
import numpy as np
import pylab
def uncreg(x, y, xu, yu, N=100000):
    out = np.zeros((N, 2))
    for n in xrange(N):
        tx = [s+random.uniform(-xu, xu) for s in x]
        ty = [s+random.uniform(-yu, yu) for s in y]
        a, b = np.linalg.lstsq(np.vstack([tx, np.ones(len(x))]).T, ty)[0]
        out[n, 0:2] = [a, b]
    return out
if __name__ == "__main__":
    P = uncreg(np.arange(0, 8.01), np.arange(0, 16.01, 2), 0.1, 6.)
    H, xedges, yedges = np.histogram2d(P[:, 0], P[:, 1], bins=(50, 50))
    pylab.imshow(H, interpolation='nearest', origin='low', aspect='auto',
                 extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])

i dostałem to: Histogram wyników bezpośredniego pobierania próbek

Oczywiście możesz wydobywać żądane Pdane lub zmieniać rozkłady niepewności.

E.Mroz
źródło
0

Byłem już na tym samym polowaniu i myślę, że może to być przydatne miejsce na początek. Funkcja makra programu Excel zapewnia warunki dopasowania liniowego i ich niepewności oparte na punktach tabelarycznych i niepewności dla każdego punktu w obu rzędnych. Może zajrzyj do dokumentu, na którym się opiera, aby zdecydować, czy chcesz go wdrożyć w innym środowisku, zmodyfikować itp. (Mathematica ma trochę pracy nóg.) Wygląda na to, że ma dobrą dokumentację na temat chodzenia po powierzchni, ale nie otworzyłem makro, aby zobaczyć, jak dobrze jest opatrzone adnotacjami.

współczujący gość
źródło