Różnice między wybraną wersją a wersją aktualną.
Nowa wersja | Poprzednia wersja | ||
narzedzia:php_global_warming [2025/05/17 22:47] – utworzono administrator | narzedzia:php_global_warming [2025/05/17 23:07] (aktualna) – [Matematyka: regresja liniowa] administrator | ||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | ====== PHP: Wykres temperatury Polski z linią trendu | + | ====== PHP: Wykres temperatury Polski z regresją liniową ====== |
Wykres można obejrzeć tutaj: https:// | Wykres można obejrzeć tutaj: https:// | ||
Linia 88: | Linia 88: | ||
Dzięki temu rozwiązaniu możemy łatwo tworzyć dynamiczne, interaktywne wykresy statystyczne w aplikacjach webowych. | Dzięki temu rozwiązaniu możemy łatwo tworzyć dynamiczne, interaktywne wykresy statystyczne w aplikacjach webowych. | ||
+ | |||
+ | ===== Matematyka: regresja liniowa ===== | ||
+ | |||
+ | <WRAP right 25%> | ||
+ | {{: | ||
+ | Źródło: [[https:// | ||
+ | </ | ||
+ | |||
+ | Poniższy fragment opisuje metodę najmniejszych kwadratów (ang. *least squares*) stosowaną do wyznaczenia parametrów prostej regresji liniowej, czyli współczynników nachylenia i wyrazu wolnego. | ||
+ | |||
+ | Metoda polega na minimalizacji sumy kwadratów odchyleń (residuals) pomiędzy rzeczywistymi wartościami \(y_i\) a wartościami przewidywanymi \(\hat{y}_i\) przez model liniowy $$y = \beta_0 + \beta_1 x$$, co wyraża funkcja kryterium: | ||
+ | $$ | ||
+ | S(\beta_0, \beta_1) \; | ||
+ | $$ | ||
+ | |||
+ | Aby znaleźć optymalne \(\beta_0\) i \(\beta_1\), | ||
+ | $$ | ||
+ | \begin{cases} | ||
+ | \displaystyle \frac{\partial S}{\partial \beta_1} \;=\; -2 \sum_{i=1}^n x_i\,(y_i - \beta_0 - \beta_1 x_i)\; | ||
+ | \displaystyle \frac{\partial S}{\partial \beta_0} \;=\; -2 \sum_{i=1}^n (y_i - \beta_0 - \beta_1 x_i)\;=\;0. | ||
+ | \end{cases} | ||
+ | $$ | ||
+ | |||
+ | Rozwiązując ten układ, otrzymujemy wzory na estymatory: | ||
+ | * $$\hat{\beta}_1 = \frac{\sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^n (x_i - \bar{x})^2}, | ||
+ | * $$\hat{\beta}_0 = \bar{y} - \hat{\beta}_1\, | ||
+ | gdzie \(\bar{x} = \frac{1}{n}\sum x_i\) i \(\bar{y} = \frac{1}{n}\sum y_i\). | ||
+ | |||
+ | Inna, równoważna postać wzoru na nachylenie prostej korzysta z sum iloczynów i sum kwadratów: | ||
+ | multiline $$ | ||
+ | \hat{\beta}_1 | ||
+ | = \frac{n\sum_{i=1}^n x_i y_i \;-\; \sum_{i=1}^n x_i \sum_{i=1}^n y_i} | ||
+ | | ||
+ | $$ | ||
+ | a wyraz wolny: | ||
+ | multiline $$ | ||
+ | \hat{\beta}_0 | ||
+ | = \frac{\sum_{i=1}^n y_i - \hat{\beta}_1\sum_{i=1}^n x_i}{n} | ||
+ | =\bar{y}-\hat{\beta}_1\bar{x}\, | ||
+ | $$ | ||
+ | |||
+ | W praktycznej implementacji, | ||
+ | $$x_i = i,\quad y_i = \text{Temp}[i], | ||
+ | pozwalając łatwo wygenerować tablicę wartości trendu:\\ | ||
+ | $$\hat{y}_i = \hat{\beta}_0 + \hat{\beta}_1\, | ||
+ | |||
+ | Interpretacja parametrów: | ||
+ | * \(\hat{\beta}_1\) – średnia zmiana \(y\) przy wzroście \(x\) o jednostkę, czyli nachylenie trendu liniowego | ||
+ | * \(\hat{\beta}_0\) – przewidywana wartość \(y\) dla \(x=0\), czyli punkt przecięcia z osią OY | ||
+ | |||
+ | Dzięki tym wzorom możemy obliczyć linię trendu, która najlepiej przybliża dane w sensie najmniejszych kwadratów, ułatwiając analizę długoterminowych tendencji. | ||
+ | |||
===== Kod ===== | ===== Kod ===== |