Regresja liniowa – wprowadzenie
a) Model regresji liniowej ma postać:
gdzie
jest zmienną objaśnianą (zależną);
są zmiennymi
objaśniającymi (niezależnymi); natomiast
są parametrami modelu.
jest
składnikiem losowym modelu. Zakłada się, że
ma rozkład normalny oraz i
.
Parametry modelu podlegają szacowaniu (estymacji) na przykład przy pomocy
metody najmniejszych kwadratów, czyli
gdzie macierz
jest utworzona z kolumny złożonej z samych jedynek oraz kolumn
Często zakłada się również, że liczba obserwacji
powinna być większa od ilości
estymowanych parametrów
.
b) Współczynnik determinacji
informuje nas jaka część zmienności zmiennej zależnej
została wyjaśniona przez model. Współczynnik determinacji przyjmuje wartości z
przedziału
. Dopasowanie modelu jest tym lepsze, im wartość
jest bliższa
jedności. Współczynnik
można wyliczyć ze wzoru:
c) Test istotności poszczególnych współczynników regresji.
naprzeciw
Statystyka testowa ma postać:
, gdzie
oznacza
-ty element na przekątnej macierzy.
Obszar krytyczny ma postać:
Zadanie 1. Zaproponować model regresji liniowej dla zmiennej zależnej „ciśnienie
skurczowe”.
Przykładowy model regresji liniowej:
gdzie:
– zmienna zależna oznaczająca ciśnienie skurczowe;
– parametr związany z płcią;
– parametr związany z nadużywaniem papierosów;
– parametr związany z nadużywaniem alkoholu;
– parametr związany z wiekiem;
– błąd losowy.
Komendy, które należy wpisać w pakiecie R (pierwsza komenda wczytuje zbiór danych do
pakietu R; druga komenda powoduje utworzenie odpowiedniego modelu liniowego; trzecia
komenda wypisuje niezbędne wyniki):
data=read.table("C:/Users/student/Desktop/cisnienie1.txt",header=F,sep="\t")
lm1=lm(data[,1]~data[,3]+data[,4]+data[,5]+data[,6])
summary(lm1)
Należy pamiętać, że ścieżka do pliku z danymi dla każdego użytkownika może być różna!
Wyniki z program R:
Call:
lm(formula = data[, 1] ~ data[, 3] + data[, 4] + data[, 5] + data[, 6])
Residuals:
Min 1Q Median 3Q Max
-83.534 -14.638 5.919 21.832 70.376
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 113.4688 8.1110 13.990 < 2e-16 ***
data[, 3] -2.5019 4.8261 -0.518 0.604761
data[, 4] 18.7965 4.8110 3.907 0.000129 ***
data[, 5] 29.4754 4.6495 6.339 1.57e-09 ***
data[, 6] 0.1148 0.1453 0.790 0.430685
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 31.39 on 195 degrees of freedom
Multiple R-squared: 0.2822, Adjusted R-squared: 0.2675
F-statistic: 19.17 on 4 and 195 DF, p-value: 2.594e-13
Interpretacja wyników:
Estymator dla parametru związanego z płcią (zmienna binarna) wynosi -2.5019. Skoro
w naszych danych mężczyzna zakodowany jest jako „1” natomiast kobieta jako „0”
oznacza to, że pacjent będący mężczyzną ma ciśnienie skurczowe o 2.5019 mmHg
mniejsze niż kobieta.
Estymator dla parametru związanego z nadużywaniem papierosów (zmienna binarna)
wynosi 18.7965 i oznacza to, że osoba paląca papierosy ma ciśnienie skurczowe
większe o 18.7965 mmHg.
Estymator dla parametru związanego z nadużywaniem alkoholu (zmienna binarna)
wynosi 29.4754 i oznacza to, że osoba pijąca alkohol ma ciśnienie skurczowe większe
o 24.4754 mmHg.
Estymator dla parametru związanego z wiekiem pacjenta (zmienna ciągła) wynosi
0.1148 i oznacza to, że wraz ze wzrostem wieku pacjenta o jeden rok jego ciśnienie
skurczowe wzrośnie o 0.1148 mmHg.
Wyraz wolny (Intercept) wynosi 113.4688 oznacza to, że jeśli wszystkie pozostałe
zmienne będą równe 0 (czyli pacjent będzie kobietą, nie palącą i nie pijącą zaraz po
urodzeniu) to wartość ciśnienia skurczowego pacjenta będzie wynosić 113.4688
mmHg.
Można teraz wyliczyć ciśnienie skurczowe dla pacjenta będącego mężczyzną, który nie pije
alkoholu, ale jest w wieku 40 lat i pali papierosy.
Zadanie 2. Jakie ciśnienie skurczowe ma mężczyzna nadużywający papierosów?
Aby wyliczyć jakie ciśnienie skurczowe ma mężczyzna nadużywający papierosów należy
rozważyć model liniowy:
– ciśnienie skurczowe
– parametr związany z płcią;
– parametr związany z nadużywaniem papierosów;
– składnik losowy modelu;
Komendy, które należy wpisać do pakietu R:
lm2=lm(data[,1]~data[,3]+data[,4])
summary(lm2)
Wyniki z program R:
Call:
lm(formula = data[, 1] ~ data[, 3] + data[, 4])
Residuals:
Min 1Q Median 3Q Max
-82.708 -22.062 6.115 27.980 63.465
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 129.062 4.752 27.159 < 2e-16 ***
data[, 3] -2.527 5.270 -0.479 0.632
data[, 4] 27.646 5.025 5.501 1.16e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 34.31 on 197 degrees of freedom
Multiple R-squared: 0.1338, Adjusted R-squared: 0.125
F-statistic: 15.22 on 2 and 197 DF, p-value: 7.166e-07
Czyli ciśnienie skurczowe dla mężczyzny nadużywającego papierosów wynosi:
Zadanie 3. Wybrać model z największą wartością współczynnika
.
Model z największą wartością współczynnika
to model w którym użyjemy jako
zmiennych niezależnych: ciśnienie rozkurczowe, płeć, nadużywanie papierosów i alkoholu
oraz wiek. Wartość tego współczynnika dla powyższego modelu wynosi 0.8159.
Zadanie 4 i 5. Co to jest kryterium
? Zaproponować model z „najlepszą” wartością
kryterium
. (Jakie wartości dla tego kryterium są najlepsze?).
Kryterium Informacyjne Akaike (
) - kryterium wyboru pomiędzy modelami
statystycznymi o różnej liczbie zmiennych objaśniających. Wzór na kryterium
ma
postać:
gdzie
jest funkcją wiarygodności dla danego modelu, a liczbą parametrów w tym modelu.
Im mniejsze wartości kryterium
tym model jest lepiej dopasowany.
Aby sprawdzić w pakiecie R wartość kryterium
dla danego modelu liniowego należy
najpierw zaproponować model, np.:
lm4=lm(data[,1]~data[,3]+data[,4]+data[,5]+data[,6])
a następnie wywołać komendę:
AIC(lm4)
Wynik z pakietu R:
1953.136
Według kryterium
najlepszy model to taki w którym jedną zmienną niezależną jest
ciśnienie rozkurczowe.
Model wprowadzony do pakietu R:
AIC(lm(data[,1]~data[,2]))
Wartość kryterium
dla powyższego modelu:
1675.95
Zadanie 6. Czy współczynników regresji dla „najlepszego” modelu są statystycznie istotne?
Istotność współczynników regresji przeanalizujemy na podstawie modelu z zadania 1.
Wystarczy w tabeli zaznaczonej na czerwono umieć interpretować ostatnią kolumnę, w której
zawarte są p -wartości. Wybieramy poziom istotności
na którym będziemy testować
istotność współczynników regresji. Jeśli p - wartość jest mniejsza od założonego poziomu
istotności
to współczynnik regresji jest statystycznie istotny. W naszym przypadku
zakładamy, że
i dlatego istotne są: wyraz wolny oraz nadużywanie papierosów i
alkoholu. Dodatkowo przy współczynnikach istotnych pojawiają się pewne oznaczenia:
*** oznaczają współczynnik istotny od poziomu istotności 0.001
** oznaczają współczynnik istotny od poziomu istotności 0.01
* oznacza współczynnik istotny od poziomu istotności 0.05
oznacza współczynnik istotny od poziomu istotności 0.1
Zadanie 7. Sprawdzić, czy reszty mają rozkład normalny – funkcja w R: shapiro.test()?
Aby wyznaczyć reszty (czyli czynnik losowy
) należy skorzystać ze wzoru:
Aby „wydobyć” reszty z danego modelu należy wywołać komendę (w tym przypadku np. dla
modelu z zadania 2):
res=lm2$residuals
Następnie należy użyć testu Shapiro-Wilka przy pomocy komendy:
shapiro.test(res)
Shapiro-Wilk normality test
data: res
W = 0.9688, p-value = 0.0002027
Ponownie patrzymy na p – wartość. Zakładamy, że
i skoro p – wartość jest mniejsza
od
. To odrzucamy hipotezę zerową o normalności reszt.
Zadanie 8. Utworzyć nową kolumnę danych o nazwie „nadciśnienie” w taki sposób że,
człowiek mający problemy z ciśnieniem skurczowym lub rozkurczowym będzie przyjmował
wartości 1, a człowiek nie mający nadciśnienia wartości 0.
Łatwo dorobić nową kolumnę w Excelu. Aby zrobić to samo w R należy wpisać komendę
(pierwsza komenda tworzy zmienną „nadciśnienie” złożoną z samych zer o długości równej
ilości pacjentów w zbiorze data; następnie wykonuje się pętla for dla każdego z pacjentów i w
przypadku nadciśnienia przypisuje danemu pacjentowi jedynkę):
nadcisnienie=rep(0,dim(data)[1])
for (i in 1:dim(data)[1])
{
if (data[i,1]>140 && data[i,2]>100)
nadcisnienie[i]=1
}
Albo w prostszy sposób (pierwsza komenda dodaje nową siódmą kolumnę do zbioru danych
„data” złożoną z samych 0; druga komenda w przypadku nadciśnienia zamienia „0” na „1”):
data=cbind(data,rep(0,200))
data[data[,1]>140 & data[,2]>100,7]=1
Regresja logistyczna – wprowadzenie
a) Często do czynienia mamy z obserwacjami, które można podzielić na dwie kategorie
(np. chory lub zdrowy). Zmienne zależne
mogą być wtedy
interpretowane jako sukces lub porażka. Wówczas Zmienne
nazywane są
zmiennymi binarnymi i przyjmuje się, że mają one rozkład Bernoulliego B(1,p
i
), gdzie
p
i
można interpretować jako prawdopodobieństwo sukcesu.
b) Model regresji logistycznej:
gdzie
są zmiennymi objaśniającymi, natomiast
są
parametrami modelu.
Zachodzi również związek:
Zadanie 9. Utworzyć model regresji logistycznej dla zmiennej „nadciśnienie” i sprawdzić czy
bardziej prawdopodobne jest że nadciśnienie ma kobieta nadużywająca alkoholu i papierosów
czy mężczyzna nadużywający obydwu używek.
Model regresji logistycznej w R wywołuje się przy pomocy komendy
glm(nadcisnienie~data[,3]+data[,4]+data[,5])
lub jeżeli utworzyliśmy siódmą kolumnę w zadaniu 8 to używamy komendy
glm(data[,7]~data[,3]+data[,4]+data[,5])
Uzyskane wyniki:
Call: glm(formula = nadcisnienie ~ data[, 3] + data[, 4] + data[, 5])
Coefficients:
(Intercept) data[, 3] data[, 4] data[, 5]
0.12764 -0.07858 0.27527 0.50563
Degrees of Freedom: 199 Total (i.e. Null); 196 Residual
Null Deviance: 48.38
Residual Deviance: 28.14 AIC: 185.3
Korzystamy ze wzoru:
Dla mężczyzn mamy:
Dla kobiet mamy:
Czyli większe szanse na nadciśnienie mają kobiety.