forked from krisun17/Projekt2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
regresje.Rmd
106 lines (82 loc) · 4.78 KB
/
regresje.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
title: ""
author: "Patrzycja Matys, Jan Rosa, Krzysztof Rutkowski, Magda Sobiczewska"
date: "17 czerwca 2016"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(glmnet)
```
#Regresja liniowa
Z modeli linowych na początku oszacowano zwykły model regresji. W zbiorze zmeinnych objaśnianych znalazły się wszytskie rozważane przez nas zmienne, czyli: wiek, płeć, stężenie szkodliwych pyłów, wysokie spożycie alkoholu alkoholu zaróWno wśród kobiet jak i meżczyzn, otyłość, urbanizację, gęstość zaludnienia oraz liczbę osób zarejestrowanych w poradniach psychologicznych, oraz liczbę osób z zabrzeniami psychicznymi i w końcu liczbę osób chorych w poprzednim okresie. Dodano takz interakcje miedzy zmiennymi wiek a urbanizacja. Otrzymano następujące modele.
```{r cars}
load(file="regresja_dane.Rdata")
fit1_normal1<-lm(zm_dec.x~ GAZY +GESTOSC+ZIELONE+ URBANIZACJA+
ZAGROZENIA+PYLY+GENDER*Fotytly*URBANIZACJA+
GENDER*Falkohol*URBANIZACJA+GENDER*Motytly+GENDER*Malkohol+
URBANIZACJA+as.factor(AGE_GROUP)*URBANIZACJA+nsrednia.y+zsrednia.y+nsrednia.y*URBANIZACJA+opoznienie,
data=y11)
summary(fit1_normal1)
fit1_aic<-step(fit1_normal1,data=grupa_m3, direction="backward",criterion = "BIC")
summary(fit1_aic)
```
Zdolonosć predykcyjną modeli zbadano estymując model na podstawie danych z 2011 roku, a następnie porónujac predykcję modelu na 2012 z rzeczywistymi wartosciami.Za kryterium obrano błąd średniokwadratowy.
Model wybrany na podstawie kryterium BIC radzi sobie nieco lepiej od modelu wykorzystujacego wszytskie zmienne.
```{r pressure, echo=FALSE}
mean((predict(fit1_normal1,y12)-y12$zm_dec.x)^2,na.rm=TRUE)
mean((predict(fit1_aic,y12)-y12$zm_dec.x)^2,na.rm=TRUE)
```
Następnie na oszacowano uogólnione modele regresji wykorzystujące wszytskie zmienne.
Z współczynnik alfa przyjęto:1,0, 1/2 oraz 1/4
```{r}
f <- as.formula(zm_dec.x~ GAZY +GESTOSC+ZIELONE+ URBANIZACJA+
ZAGROZENIA+PYLY+Fotytly*URBANIZACJA+
Falkohol+Motytly+GENDER*Malkohol+
URBANIZACJA+as.factor(AGE_GROUP)+nsrednia.y+zsrednia.y
+nsrednia.y*URBANIZACJA+opoznienie)
options(na.action='na.omit')
x1 <- model.matrix(f, y11,na.action=NULL)
x2<-as.data.frame(x1)
y1 <- na.omit(y11)
library(glmnet)
wynik_cv_lasso<-cv.glmnet(x=x1,y=as.matrix(y1[,17]), alpha=1)
wynik_cv_ridge<-cv.glmnet(x=x1,y=as.matrix(y1[,17]),alpha=0)
wynik_cv_pol<-cv.glmnet(x=x1,y=as.matrix(y1[,17]),alpha=1/2)
wynik_cv_pol1<-cv.glmnet(x=x1,y=as.matrix(y1[,17]),alpha=1/4)
y12<-subset(y12, TERYT4!=1461)
y2 <- na.omit(y12)
y21 <- y12[complete.cases(y12),]
wynik_cv_lasso_pred<-predict.cv.glmnet(object =wynik_cv_lasso,newx=model.matrix(f, y12,na.action=NULL),)
wynik_cv_ridge_pred<-predict.cv.glmnet(object =wynik_cv_ridge,newx=model.matrix(f, y12,na.action=NULL),)
wynik_cv_pol_pred<-predict.cv.glmnet(object =wynik_cv_pol,newx=model.matrix(f, y12,na.action=NULL),)
wynik_cv_pol1_pred<-predict.cv.glmnet(object =wynik_cv_pol1,newx=model.matrix(f, y12,na.action=NULL),)
```
Predykcyjną moc modeli sprawdzono również na podstawie MSE
```{r}
mean((y2[,17]-wynik_cv_lasso_pred)^2)
mean((y2[,17]-wynik_cv_ridge_pred)^2)
mean((y2[,17]-wynik_cv_pol_pred)^2)
mean((y2[,17]-wynik_cv_pol1_pred)^2)
```
Następnie przeanalizowano modele glm dla tego samego zestawu zmienneych jak w modelu linowym wybranym na podtswie krytrium BIC. Analogicznie przetestowano ich moc produkcyjną.
```{r}
f1<-formula(fit1_aic)
x1 <- model.matrix(f1, y11,na.action=NULL)
y1 <- na.omit(y11)
wynik_cv_lasso<-cv.glmnet(x=x1,y=as.matrix(y1[,17]), alpha=1)
wynik_cv_ridge<-cv.glmnet(x=x1,y=as.matrix(y1[,17]),alpha=0)
wynik_cv_pol<-cv.glmnet(x=x1,y=as.matrix(y1[,17]),alpha=1/2)
wynik_cv_pol1<-cv.glmnet(x=x1,y=as.matrix(y1[,17]),alpha=1/4)
y2 <- na.omit(y12)
wynik_cv_lasso_pred<-predict.cv.glmnet(object =wynik_cv_lasso,newx=model.matrix(f1, y12,na.action=NULL),)
wynik_cv_ridge_pred<-predict.cv.glmnet(object =wynik_cv_ridge,newx=model.matrix(f1, y12,na.action=NULL),)
wynik_cv_pol_pred<-predict.cv.glmnet(object =wynik_cv_pol,newx=model.matrix(f1, y12,na.action=NULL),)
wynik_cv_pol1_pred<-predict.cv.glmnet(object =wynik_cv_pol1,newx=model.matrix(f1, y12,na.action=NULL),)
mean((y2[,17]-wynik_cv_lasso_pred)^2)
mean((y2[,17]-wynik_cv_ridge_pred)^2)
mean((y2[,17]-wynik_cv_pol_pred)^2)
mean((y2[,17]-wynik_cv_pol1_pred)^2)
```
Ostaecznie więc przetestowanie mocy predykcyjnej modeli na danych z 2012 roku wskazało iz najlepiej radzi sobie model linowy, z zestawiem zmiennych wybranych na podtsawie kryterium BIC.
Przeprowadzono takz analizy dla modeli estymowyanych osobno dla obu płci, jednak ich moc predykcyjna okazała sie zdecydowanie gorsza.