DANE

Model LOESS (Locally Estimated Scatterplot Smoothing)

Model LOESS (lub LOWESS) jest nieliniową metodą regresji używaną do dopasowywania krzywych do danych, szczególnie w sytuacjach, gdy zależność między zmiennymi nie jest liniowa. LOESS wykorzystuje lokalne dopasowania wielomianowe do opisu trendów w danych, co pozwala na elastyczne modelowanie zmiennych.

Główne cechy modelu:

  1. Lokalne dopasowanie:

    • LOESS stosuje dopasowanie funkcji (zwykle wielomianów) w małych fragmentach danych, określanych jako “okna”.

    • Każde okno uwzględnia pewien procent danych, określony przez parametr span.

  2. Elastyczność:

    • Model nie wymaga wcześniejszych założeń dotyczących kształtu zależności między zmiennymi.

    • Pozwala na modelowanie nieliniowych relacji.

  3. Parametry modelu:

    • span: Kontroluje szerokość okna, czyli zakres danych używanych do lokalnego dopasowania. Większa wartość span prowadzi do bardziej wygładzonego dopasowania, podczas gdy mniejsza pozwala uchwycić drobne szczegóły.

    • degree: Określa stopień wielomianu stosowanego w lokalnym dopasowaniu (np. 1 dla liniowego, 2 dla kwadratowego).

    • family: Wybiera funkcję ważenia dla punktów (np. gaussian dla uśredniania metodą Gaussa). Zastosowanie: Analiza danych eksploracyjnych: LOESS jest często wykorzystywany do eksploracji danych, gdy nie mamy pewności co do kształtu relacji między zmiennymi.

Wygładzanie danych: Pomaga w wizualizacji trendów w danych, eliminując wpływ szumu.

Dopasowanie nieliniowe: Idealny do danych o skomplikowanych zależnościach, gdzie regresja liniowa nie jest wystarczająca.

Wady: Duże wymagania obliczeniowe: LOESS jest kosztowny obliczeniowo, szczególnie dla dużych zbiorów danych.

Brak parametryzacji globalnej: Model działa dobrze lokalnie, ale nie daje ogólnej formuły opisującej całe dane.

W kontekście kodu: Model LOESS w powyższym kodzie został użyty do dopasowania relacji między dochodami (income) a prestiżem zawodowym (prestige). Parametr span=0.75 wskazuje, że model analizuje 75% sąsiednich punktów dla każdego dopasowania lokalnego, a stopień wielomianu (degree=2) pozwala na uchwycenie kwadratowych zależności. Wygenerowany model jest wizualizowany na wykresie, aby porównać predykcje z rzeczywistymi danymi.

fit <- loess(prestige ~ income, data=Prestige, span=0.75, degree=2, family="gaussian")

# Generowanie predykcji
Prestige$predicted <- predict(fit)

# Wykres
ggplot(Prestige) + 
  geom_point(aes(x=income, y=prestige)) +
  geom_line(aes(x=income, y=predicted), col='blue')

smr <- loess(prestige ~ income, data=Prestige)
ggplot(Prestige) +
    geom_point(aes(x=income,y=prestige)) +
    ggtitle("Prestige (Loess, span=0.75)") +
    geom_line(aes(x=income, y=fitted(smr)),
      col='blue')

W kontekście kodu:

Model LOESS w powyższym kodzie został użyty do dopasowania relacji między dochodami (income) a prestiżem zawodowym (prestige). Parametr span=0.75 wskazuje, że model analizuje 75% sąsiednich punktów dla każdego dopasowania lokalnego, a stopień wielomianu (degree=2) pozwala na uchwycenie kwadratowych zależności. Wygenerowany model jest wizualizowany na wykresie, aby porównać predykcje z rzeczywistymi danymi. Jądro Tri-Cube, zmienna szerokość pasma kontrolowana przez span, oraz rzędowość wielomianu — stanowią podstawowe elementy konstrukcyjne modelu LOESS. Dzięki nim model LOESS jest elastyczny, lokalny i potrafi dobrze uchwycić nieliniowe zależności w danych.

Loess oraz geom_smooth()

ggplot(Prestige) +
    geom_point(aes(x=income,y=prestige)) +
    geom_smooth(aes(x=income,y=prestige), method='loess',
      span=0.75)
## `geom_smooth()` using formula = 'y ~ x'

Ponieważ lokalne wielomiany wykorzystują lokalne modele liniowe, możemy łatwo znaleźć błędy standardowe dla dopasowanych wartości. Połączone razem, tworzą one punktowy przedział ufności. Automatycznie tworzone przy użyciu geom_smooth.

Sploty interpolujące

Model splotów interpolujących (ang. spline interpolation) jest potężnym narzędziem stosowanym do analizy danych i modelowania nieliniowych zależności między zmiennymi. Sploty wykorzystują kawałkowe funkcje wielomianowe, które są łączone w sposób zapewniający gładkość i ciągłość w punktach przejścia (węzłach).

smr <- smooth.spline(
  Prestige$income,
  Prestige$prestige,
  cv=TRUE)
## Warning in smooth.spline(Prestige$income, Prestige$prestige, cv = TRUE):
## krzyżowa walidacja z nieunikalnymi wartościami 'x' wydaje się wątpliwa
smr <- data.frame(x=smr$x,y=smr$y)
ggplot(Prestige) +
  geom_point(aes(x=income,y=prestige)) +
  ggtitle("Old Faithful (Sploty interpolujące, lambda wybrana przez CV)") +
  geom_line(data=smr, aes(x=x, y=y), col='blue')

Zastosowanie w kontekście wykresu

W przedstawionym przykładzie model splotów interpolujących został wykorzystany do:

  • Modelowania zależności między dochodem (income) a prestiżem zawodowym (prestige) w danych.

  • Wygładzenia danych za pomocą linii opisującej główny trend, przy jednoczesnym uniknięciu nadmiernego dopasowania dzięki zastosowaniu optymalnego parametru lambda, dobranego za pomocą walidacji krzyżowej.

Linia wygładzająca pozwala na wizualizację głównej zależności, dzięki czemu możemy łatwiej interpretować dane i przewidywać potencjalne wartości zmiennych.

Naturalne Sploty (Natural Splines)

Naturalne sploty to technika dopasowania nieliniowych zależności między zmiennymi przy użyciu funkcji sklejanych. Są szczególnym przypadkiem funkcji spline, gdzie na końcach przedziału dopasowanie jest wymuszone na liniowe.

fit <- lm(prestige ~ ns(income, df=6), Prestige)
ggplot(Prestige) +
    geom_point(aes(x=income,y=prestige)) +
    ggtitle("Old Faithful (Naturalne sploty, 6 df)") +
    geom_line(aes(x=income, y=fitted(fit)), col='blue')

W kontekście kodu

Gładkie Funkcje (Smooth Functions)

Gładkie funkcje to bardziej elastyczna metoda modelowania nieliniowych zależności, często używana w uogólnionych modelach addytywnych (GAM). Funkcja dopasowuje się do danych bez z góry ustalonego wzoru.

ggplot(Prestige) +
    geom_point(aes(x=income,y=prestige)) +
    geom_smooth(aes(x=income,y=prestige), method='gam',
      formula = y ~ s(x,k=12))

W kontekście kodu

Predyktory wieloczynnikowe

Większość metod w naturalny sposób rozszerza się na więcej wymiarów.

Metody jądra wielowymiarowego Wielowymiarowe lokalne powierzchnie kwadratowe Cienkie splajny (2-d wersja splajnów wygładzających)

library(mgcv)
## Ładowanie wymaganego pakietu: nlme
## 
## Dołączanie pakietu: 'nlme'
## Następujący obiekt został zakryty z 'package:dplyr':
## 
##     collapse
## This is mgcv 1.8-42. For overview type 'help("mgcv-package")'.
lomod <- loess(prestige ~ income + education, data=Prestige)

smod <- gam(prestige ~ s(income, education), data=Prestige)

Cwiczenia na mcycle

library(MASS)
## 
## Dołączanie pakietu: 'MASS'
## Następujący obiekt został zakryty z 'package:dplyr':
## 
##     select
data("mcycle")
ggplot(mcycle) + 
  geom_point(aes(x=times, y=accel))

mcycle <- as.data.frame(mcycle)

smr <- loess(accel ~ times, data=mcycle)

ggplot(mcycle) +
    geom_point(aes(x=times, y=accel)) +
    ggtitle("Mcycle (Loess, span=0.75)") +
    geom_line(aes(x=times, y=fitted(smr)), col='blue')

ggplot(mcycle) +
    geom_point(aes(x=times,y=accel)) +
    geom_smooth(aes(x=times,y=accel), method='loess',
      span=0.7)
## `geom_smooth()` using formula = 'y ~ x'

fit <- lm(accel ~ ns(times, df=6), mcycle)
ggplot(mcycle) +
    geom_point(aes(x=times,y=accel)) +
    ggtitle("Old Faithful (Naturalne sploty, 6 df)") +
    geom_line(aes(x=times, y=fitted(fit)), col='blue')

ggplot(mcycle) +
    geom_point(aes(x=times,y=accel)) +
    geom_smooth(aes(x=times,y=accel), method='gam',
      formula = y ~ s(x,k=6))

Kluczowe pytania i wnioski

1. Czy szerokość pasma ma znaczenie?

  • LOESS

    Szerokość pasma (parametr span) ma kluczowe znaczenie.Mniejsze span powoduje bardziej szczegółowe dopasowanie, uwzględniając tylko najbliższe sąsiedztwo punktów. To może prowadzić do nadmiernego dopasowania (overfitting). Większe span prowadzi do gładszego dopasowania, ale może nie oddawać złożonych wzorców w danych (underfitting).

  • Naturalne Sploty

    Elastyczność jest kontrolowana przez liczbę węzłów (ang. knots) lub stopnie swobody (df). Więcej węzłów zwiększa elastyczność modelu.

  • GAM

    Szerokość pasma w GAM odpowiada liczbie węzłów (k). Więcej węzłów pozwala uchwycić bardziej złożone zależności, ale zbyt wiele może prowadzić do nadmiernego dopasowania.

  • Sploty Interpolujące

    W splotach interpolujących funkcja jest wymuszona, by przechodzić dokładnie przez każdy punkt danych. Nie ma możliwości regulacji szerokości pasma.

2. Czy ilość lokalnych regresji ma znaczenie?

  • LOESS

    Ilość lokalnych regresji jest pośrednio kontrolowana przez span. Mniejszy span oznacza więcej lokalnych dopasowań, co zwiększa szczegółowość, ale może uwypuklać szumy. Większy span zmniejsza liczbę lokalnych dopasowań, dając bardziej ogólną linię.

  • Naturalne Sploty

    Więcej węzłów (lub wyższe df) pozwala na bardziej szczegółowe dopasowanie, podobnie jak mniejszy span w LOESS. Mniejsza liczba węzłów powoduje gładsze dopasowanie

  • GAM

    W GAM liczba lokalnych dopasowań zależy od liczby węzłów i stopnia gładkości regulowanego automatycznie przez algorytm. Dobrze dobrana liczba węzłów zapewnia równowagę między szczegółowością a gładkością.

  • Sploty Interpolujące

    Nie występuje pojęcie lokalnych regresji. Sploty interpolujące to metoda globalna, która dopasowuje się idealnie do danych, co może prowadzić do nadmiernego dopasowania.

3. Czy metody dają różne czy podobne rezultaty?

  • LOESS

    Zazwyczaj daje bardziej szczegółowe i lokalne dopasowanie w porównaniu do innych metod, szczególnie przy małym span. W przypadku dużego span wyniki mogą być bardziej podobne do tych z innych metod.

  • Naturalne Sploty

    Naturalne sploty dają bardziej globalne dopasowanie niż LOESS, szczególnie na krańcach przedziału, gdzie wymuszają liniowość. Względem GAM wyniki mogą być podobne, choć GAM oferuje większą elastyczność.

  • GAM

    GAM jest bardziej elastyczny niż naturalne sploty, szczególnie w przypadku bardzo złożonych danych. W porównaniu z LOESS, wyniki są bardziej globalne i mniej podatne na szumy.

  • Sploty Interpolujące

    Wyniki splotów interpolujących różnią się znacząco. Funkcja przechodzi przez wszystkie punkty danych, co może prowadzić do nienaturalnych oscylacji, szczególnie w przypadku szumów.

4. Która metoda jest dokładniejsza?

  • LOESS

    Jest dokładniejsza w uchwyceniu lokalnych wzorców, ale jej dokładność zależy od odpowiedniego doboru span. Przy złym ustawieniu pasma może prowadzić do nadmiernego dopasowania lub niedopasowania.

  • Naturalne Sploty

    Naturalne sploty są dokładne przy umiarkowanie złożonych danych. Są mniej podatne na szumy niż LOESS i dobrze nadają się do modelowania umiarkowanie nieliniowych zależności.

  • GAM

    Jest najdokładniejszy przy modelowaniu złożonych, nieliniowych zależności. Automatyczna regulacja gładkości sprawia, że jest bardziej uniwersalny niż LOESS i naturalne sploty.

  • Sploty Interpolujące

    Sploty interpolujące są dokładne w dopasowaniu do idealnych danych. W praktyce, ich wrażliwość na szumy czyni je mniej użytecznymi niż LOESS, naturalne sploty czy GAM.

Podsumowanie Odpowiedzi
Pytanie LOESS Naturalne Sploty GAM Sploty Interpolujące
Czy szerokość pasma ma znaczenie? Tak Tak (df lub węzły) Tak (k lub gładkość) Nie
Czy ilość lokalnych regresji ma znaczenie? Tak Tak (więcej węzłów) Tak (więcej węzłów) Nie
Czy metody dają różne czy podobne rezultaty? Lokalnie szczegółowe Globalnie stabilne Gładkie i elastyczne Dokładne, ale wrażliwe na szum
Która regresja jest dokładniejsza? Lokalna dokładność Dobra stabilność Uniwersalna dokładność Dokładna tylko dla idealnych danych