Mam wykres rozproszenia. Jak mogę dodać nieliniową linię trendu?
r
data-visualization
nonlinear-regression
trend
Karina Khusainova
źródło
źródło
Odpowiedzi:
Stwórzmy trochę danych.
Poniżej pokazano, jak dopasować linię lessa lub dopasowanie regresji nieliniowej.
źródło
Jeśli użyjesz
ggplot2
(trzeci system kreślenia, w R, po podstawie R i sieci), staje się to:Możesz wybrać sposób wygładzania danych: zobacz
?stat_smooth
szczegóły i przykłady.źródło
stat_smooth
pisząc,?stat_smooth
jak stwierdził Vincent. :-)Nie wiedząc dokładnie, czego szukasz, korzystając z
lattice
pakietu możesz łatwo dodać krzywą lessatype="smooth"
; na przykład,Zobacz
help("panel.loess")
argumenty, które można przekazać do procedury dopasowania lessowego, aby na przykład zmienić stopień wielomianu, który ma zostać użyty.Aktualizacja
Aby zmienić kolor krzywej lessa, możesz napisać małą funkcję i przekazać ją jako
panel
parametr doxyplot
:źródło
Twoje pytanie jest trochę niejasne, więc przyjmuję pewne założenia dotyczące twojego problemu. Bardzo pomogłoby, gdybyś mógł umieścić wykres rozrzutu i trochę opisać dane. Proszę, jeśli przyjmuję złe założenia, zignoruj moją odpowiedź.
Po pierwsze, możliwe jest, że twoje dane opisują proces, który Twoim zdaniem jest nieliniowy. Na przykład, jeśli próbujesz wykonać regresję odległości, aby samochód zatrzymał się z nagłym hamowaniem w stosunku do prędkości samochodu, fizyka mówi nam, że energia pojazdu jest proporcjonalna do kwadratu prędkości - nie prędkości samo. Więc możesz spróbować w tym przypadku regresji wielomianowej i (w R) możesz zrobić coś takiego
model <- lm(d ~ poly(v,2),data=dataset)
. Istnieje wiele dokumentacji na temat tego, jak wprowadzić różne nieliniowości do modelu regresji.Z drugiej strony, jeśli masz linię, która jest „chwiejna” i nie wiesz, dlaczego jest chwiejna, dobrym punktem początkowym byłaby prawdopodobnie regresja lokalnie ważona, lub
loess
w R. Wykonuje to regresję liniową na małej region, w przeciwieństwie do całego zestawu danych. Najłatwiej jest wyobrazić sobie wersję „k najbliższego sąsiada”, w której w celu obliczenia wartości krzywej w dowolnym punkcie można znaleźć k punktów najbliższych ciekawemu punktowi i uśrednić je. Loess jest taki, ale używa regresji zamiast prostej średniej. W tym celu użyjmodel <- loess(y ~ x, data=dataset, span=...)
, gdyspan
zmienna kontroluje stopień wygładzenia.Z drugiej strony (zabraknie rąk) - mówisz o trendach? Czy to tymczasowy problem? Jeśli tak, zachowaj ostrożność przy interpretacji linii trendu i znaczenia statystycznego. Trendy w szeregach czasowych mogą pojawiać się w procesach „autoregresyjnych”, a dla tych procesów losowość procesu może czasami konstruować trendy z przypadkowego hałasu, a zły test istotności statystycznej może stwierdzić, że jest znaczący, gdy nie jest!
źródło
Umieszczanie punktów próbkowania wykresu punktowego i gładkiej krzywej na tym samym wykresie:
źródło