Sunteți pe pagina 1din 15

x <- c(10,8,15,20,18,20,25,28,32,24)

y <- c(50,70,60,75,80,90,75,100,110,90)

summary(x)

sum(x)

mean(x)

sd(x) #Abatere standard

var(x) #Dispersie

cv <- sd(x)/mean(x) #Coeficient de variatie pentru x

summary(y)

sum(y)

mean(y)

sd(y) #Abatere standard

var(y) #Dispersie

cv <- sd(y)/mean(y)

cor(x,y) #Coeficient de corelatie

cov(x,y) #Covarianta

saci_de_dormit <- read.csv("saci de dormit.csv")


#Vizualizam baza de date

View(saci_de_dormit)

head(saci_de_dormit) #Doar primele 6 inregistrari, recomandat pentru seturi mari

#Cautam numele si tipul variabilelor

str(saci_de_dormit)

#1.MoDELUL DE REGRESIE SI ESTIMAREA MODELULUI DE REGRESIE

#Modelul de regresie

mymodel <- lm(saci_de_dormit$Pretul~saci_de_dormit$Temperatura)

#saci_de_dormit <- as.data.frame(saci_de_dormit)

mymodel <- lm(Pretul~Temperatura,data = saci_de_dormit)

mymodel

summary(mymodel)

#y=359.267-5.277x

#y=359.267+(-5.277x)

#2.COEFICIENTUL DE DETERMINARE

#PASUL 1: y ESTIMAT PRIN MODELUL DE REGRESIE

#PASUL 2: y ESTIMAT PRIN MEDIE

#PASUL 3: ERORILE TOTALE ALE ESTIMARII PRIN REGRESIE=SPE(VT)

#PASUL 4: ERORILE TOTALE ALE ESTIMARII PRIN MEDIE=SPT(VTM)


#PASUL 5: EROAREA "RECUPERATA" DE MODELUL DE REGRESIE SPR=SPE-SPT(VTR)

#PASUL 6:PUTEREA MODELULUI DE REGRESIE SAU INTENSITATEA RELATIEI DINTRE


VARIABILE=COEFICIENT DE DETERMINARE: R^2=SPR/SPT

#Pasul 5: Eroarea "recuperata" de modelul de regresie. Eroarea explicata prin utilizarea

SPR=SPT-SPE

SPR

#Pasul 6:Coeficientul de determinare

SPR/SPT

#CALCULUL AUTOMAT PENTRU COEFICIENTUL DE DETERMINARE, VALOAREA TESTULUI t(t VALUE,


trebuie sa fie sub 0,05, atunci modelul este bun)

summary(mymodel)

mymodel$coefficients

# '***'-probabilitate de 99,9% ca estimatorii sa fie semificativ diferiti de 0, '**'-probabilitate de 99% sa


fie diferiti de 0, cu cat am mai multe stelute cu atat mai bine

#3.SEMNIFICATIA STATISTICA

#PASUL 1: TESTUL F NE SPUNE DACA PREDICTIA PRIN GRUPUL DE PREDICTORI ESTE

#PASUL 2: TESTUL t SE UITA LA SEMNIFICATIA STATISTICA A FIECAREI VARIABILE IN PARTE

#INTR-O REGRESIE SIMPLA TESTUL F(p-value,trebuie sa fie sub 0.05, atunci modelul este bun) SI TESTUL
t AU ACELASI REZULTAT, ATUNCI MODELUL ESTE BUN.

#DACA TESTUL F si TESTUL t SUNT SUB 0,05 SI DACA VALOAREA LUI R^2 ESTE MICA, ATUNCI MODELUL
ESTE BUN DPDV ECONOMETRIC, DAR POATE EXPLICA DOAR O MICA PARTE DIN VARIATIE.

#CHIAR DACA MODELUL ESTE BUN DPDV ECONOMETRIC, NU POATE FI FOLOSIT PENTRU CA EXPLICA
FOARTE PUTIN DIN VARIATIE
# model1_E DE REGRESIE LINIARA MULTIPLA (CU MAI MULTE VARIABILE (INDEPENDENTE))

# EXEMPLUL 1:

# sursa datelor: http://college.cengage.com/mathematics/brase/understandable_statistics/7e/


students/datasets/slr/frames/frame.html

# Rata criminalitatii; valorile sunt date pentru mai multe orase

# Variabilele:

# X1 = numarul total de ilegalitati inregistrate la 1 milion de locuitori

# X2 = numarul ilegalitatilor violente la 100000 locuitori

# X3 = finantarea anuala a politiei, $ pe locuitor

# X4 = % populatiei avand peste 25 ani, cu 4 ani de liceu

# X5 = % populatiei cu varsta cuprinsa intre 16 si 19 care nu sunt inscrisi la liceu si nici nu l-au finalizat

# X6 = % populatiei cu varsta cuprinsa intre 18 si 24, inscrisa la facultate

# X7 = % populatiei avand peste 25 ani, cu cel putin 4 ani de facultate

library(readxl)

mlr06 <- read_excel("mlr06.xlsx")

# structura setului de date

str(mlr06)

# numele variabilelor

names(mlr06)

# redenumim variabilele

colnames(mlr06)[1] = "Infractionalitate"
colnames(mlr06)[2] = "Infractionalitate_cu_violenta"

colnames(mlr06)[3] = "Finantare_politie"

colnames(mlr06)[4] = "Populatie_peste_25ani"

colnames(mlr06)[5] = "Populatie_16_19ani"

colnames(mlr06)[6] = "Populatie_18_24ani"

colnames(mlr06)[7] = "Populatie_peste_24ani"

# model1_ul de regresie liniara multipla

model1_1 <- lm(Infractionalitate ~ Infractionalitate_cu_violenta + Finantare_politie +


Populatie_peste_25ani +

Populatie_16_19ani + Populatie_18_24ani +

Populatie_peste_24ani, data = mlr06)

#model1_1 <- lm(Infractionalitate ~ .,data=mlr06)

summary(model1_1) #p-value(tstul f) e sub 0,05, modelul e statistic semnificativ, aprox 61.32% din
variatie poate fi explciata de model

#3.99 la o crestere cu o unitate a infractionalitaii, dar estimatorul nu este semnifictiv, pentru ca nu e


semnificativ diferit de 0, se elimina cele problematice

# eliminam variabile din model1_

model1_2 <- lm(Infractionalitate ~ Infractionalitate_cu_violenta + Finantare_politie +

Populatie_16_19ani + Populatie_18_24ani, data = mlr06)

summary(model1_2)

#r patrat ajustat, atunci cand am modele cu nr diferit de variabile explicative, nu mai compar r patrat,
compar r patrat ajustat, modelul 1 are 6 variabile,multe care nu sunt semnificative, modelul 2 are 4
variabile
# eliminam variabile din model1_

model1_3 <- lm(Infractionalitate ~ Infractionalitate_cu_violenta + Finantare_politie, data = mlr06)

summary(model1_3)

#cONFORM R PATRAT AJUSTAT, MODELUL 3 ESTE CEL MAI POTRIVIT

# eliminam variabile din model1_

model1_4 <- lm(Infractionalitate ~ Infractionalitate_cu_violenta, data = mlr06)

summary(model1_4)

#Conform r patrat ajustat, modelul este mai slab explicativ decat modelul 3

#TESTE DE SPECIFICARE

#AIC SI BIC

AIC(model1_1)

AIC(model1_2)

AIC(model1_1,model1_2,model1_3,model1_4)

#Modelul cu indice AIC mai mic este mai bun!!!!!!!

step(model1_1) #FACE AUTOMAT O SELECTIE MERGAND DIN APROAPE IN APROAPE, PORNESTE DE LA


MODELUL CU TOATE VARIABILELE SI LE ELIMINA PE RAND

#DIAGNOSTICUL model1_ului

##DIAGNOSTICE

#Ce este necesar sa fie indeplinit pentru ca regresia liniara sa fie bine aplicata?
#* IPOTEZA 1: Variabila dependenta este in relatie liniara cu variabila independenta si modelul este
corect specificat.

#* IPOTEZA 2: Termenul eroare are dispersie constanta (erori homocedastice). Nu exista


heterocedasticitate.

#* IPOTEZA 3: Termenii eroare nu sunt corelati unii cu altii. Altfel spus, nu exista autocorelare seriala.

#* IPOTEZA 4: Termenul eroare este normal distribuit.

par(mfrow=c(2,2)) #Modificam parametrii grafici.

plot(model1_4)

#mfrow= c(nr_randuri ecran plot, nr coloane ecran plot)

par(mfrow=c(1,1))

#plot(model1_4)- afisat pe ipoteze individual

plot(model1_4,1) #Cu cat linia cu rosu este mai apropriata de o dreapta, cu atat am incredere ca
modelul este linear

plot(model1_4,3)

plot(model1_4,2)

plot(model1_4,5)

BIC(model1_1)

BIC(model1_2)

BIC(model1_3)

BIC(model1_4)

#DIAGNOSTICE
#DEPENDENTA-INDEPENDENTA suunt in relatie liniara

#Nu ne dorim sa observa un trend intre erori si valorile estimate

#Ne dorim sa observam o linie aproximativ orizontala in dreptul lui 0

plot(model2_1, 1)

#Termenul eroare are dispersie constanta (erori homocedastice)

#Ne dorim sa observam o linie aproximativ orizontala

plot(model2_1, 3)

#Termenul eroare este normal distribuit

#Ne dorim ca punctele din grafic sa urmareasca o linie dreapta

plot(model2_1,2)

#Outliers- punctele aberante

plot(model2_1,5)

#Punctele cu levier mare(leverage points)

#Formula pentru prag sub care trebuie sa gasim punctele 2*(p+1)/n, unde p =nr variabilelor in setul de
date, n=nr de observatii din setul de date

2*(6+1/27)
#DIAGNOSTICE IMPREUNA

par(mfrow=c(2,2))

plot(model2_1)

par(mfrow=c(1,1))

#Eliminam outlierii si reconstruim modelul

mlr05<- mlr05[-c(5),]

step(model2_1)

dwtest(model2_1)

bptest(model2_1)

# model1_E DE REGRESIE LINIARA MULTIPLA (CU MAI MULTE VARIABILE (INDEPENDENTE))

# EXEMPLUL 1:

# sursa datelor: http://college.cengage.com/mathematics/brase/understandable_statistics/7e/


students/datasets/slr/frames/frame.html

# Rata criminalitatii; valorile sunt date pentru mai multe orase

# Variabilele:

# X1 = numarul total de ilegalitati inregistrate la 1 milion de locuitori

# X2 = numarul ilegalitatilor violente la 100000 locuitori

# X3 = finantarea anuala a politiei, $ pe locuitor

# X4 = % populatiei avand peste 25 ani, cu 4 ani de liceu

# X5 = % populatiei cu varsta cuprinsa intre 16 si 19 care nu sunt inscrisi la liceu si nici nu l-au finalizat

# X6 = % populatiei cu varsta cuprinsa intre 18 si 24, inscrisa la facultate


# X7 = % populatiei avand peste 25 ani, cu cel putin 4 ani de facultate

library(readxl)

mlr06 <- read_excel("mlr06.xlsx")

# structura setului de date

str(mlr06)

# numele variabilelor

names(mlr06)

# redenumim variabilele

colnames(mlr06)[1] = "Infractionalitate"

colnames(mlr06)[2] = "Infractionalitate_cu_violenta"

colnames(mlr06)[3] = "Finantare_politie"

colnames(mlr06)[4] = "Populatie_peste_25ani"

colnames(mlr06)[5] = "Populatie_16_19ani"

colnames(mlr06)[6] = "Populatie_18_24ani"

colnames(mlr06)[7] = "Populatie_peste_24ani"

# model1_ul de regresie liniara multipla

model1_1 <- lm(Infractionalitate ~ Infractionalitate_cu_violenta + Finantare_politie +


Populatie_peste_25ani +

Populatie_16_19ani + Populatie_18_24ani +

Populatie_peste_24ani, data = mlr06)

#model1_1 <- lm(Infractionalitate ~ .,data=mlr06)


summary(model1_1) #p-value(tstul f) e sub 0,05, modelul e statistic semnificativ, aprox 61.32% din
variatie poate fi explciata de model

#3.99 la o crestere cu o unitate a infractionalitaii, dar estimatorul nu este semnifictiv, pentru ca nu e


semnificativ diferit de 0, se elimina cele problematice

# eliminam variabile din model1_

model1_2 <- lm(Infractionalitate ~ Infractionalitate_cu_violenta + Finantare_politie +

Populatie_16_19ani + Populatie_18_24ani, data = mlr06)

summary(model1_2)

#r patrat ajustat, atunci cand am modele cu nr diferit de variabile explicative, nu mai compar r patrat,
compar r patrat ajustat, modelul 1 are 6 variabile,multe care nu sunt semnificative, modelul 2 are 4
variabile

# eliminam variabile din model1_

model1_3 <- lm(Infractionalitate ~ Infractionalitate_cu_violenta + Finantare_politie, data = mlr06)

summary(model1_3)

#cONFORM R PATRAT AJUSTAT, MODELUL 3 ESTE CEL MAI POTRIVIT

# eliminam variabile din model1_

model1_4 <- lm(Infractionalitate ~ Infractionalitate_cu_violenta, data = mlr06)

summary(model1_4)

#Conform r patrat ajustat, modelul este mai slab explicativ decat modelul 3

#TESTE DE SPECIFICARE
#AIC SI BIC

AIC(model1_1)

AIC(model1_2)

AIC(model1_1,model1_2,model1_3,model1_4)

#Modelul cu indice AIC mai mic este mai bun!!!!!!!

step(model1_1) #FACE AUTOMAT O SELECTIE MERGAND DIN APROAPE IN APROAPE, PORNESTE DE LA


MODELUL CU TOATE VARIABILELE SI LE ELIMINA PE RAND

model <- lm(formula = Infractionalitate ~ Infractionalitate_cu_violenta +

Finantare_politie, data = mlr06)

summary(model)

dwtest(model) #p-value mai mare de 0.05, erorile nu au autocorelare, eroarea din momentul t nu
depinde de eroarea din momentul anterior.

bptest(model) #Ipoteza nula este ca dispersia erorilor este egala.Imprastierea erorilor este oarecum
constanta cu o probabilitate de 44.4%, nu se poate respinge ipoteza nula.

#DIAGNOSTICUL model1_ului

##DIAGNOSTICE

#Ce este necesar sa fie indeplinit pentru ca regresia liniara sa fie bine aplicata?

#* IPOTEZA 1: Variabila dependenta este in relatie liniara cu variabila independenta si modelul este
corect specificat.

#* IPOTEZA 2: Termenul eroare are dispersie constanta (erori homocedastice). Nu exista


heterocedasticitate. #Testul Breusch-Pagan

#* IPOTEZA 3: Termenii eroare nu sunt corelati unii cu altii. Altfel spus, nu exista autocorelare seriala.
#Testul Durbin-Watson
#* IPOTEZA 4: Termenul eroare este normal distribuit.

par(mfrow=c(2,2)) #Modificam parametrii grafici.

plot(model1_4)

#mfrow= c(nr_randuri ecran plot, nr coloane ecran plot)

par(mfrow=c(1,1))

#plot(model1_4)- afisat pe ipoteze individual

plot(model1_4,1) #Cu cat linia cu rosu este mai apropriata de o dreapta, cu atat am incredere ca
modelul este linear

plot(model1_4,3) #Pentru testarea heteroscedasticitatii. Daca linia este perfect dreapta, nu am


heteroscedasticitate.

plot(model1_4,2) #Pentru a testa daca termenul eroare este normal distribuit.

plot(model1_4,5)

BIC(model1_1)

BIC(model1_2)

BIC(model1_3)

BIC(model1_4)

library(tseries)

summary(model1_1)

#Identific reziduurile(diferenta dintre valori inregistrate si cele calculate prin model) din ecuatia de
regresie
names(summary(model1_1))

rez <- summary(model1_1)$residuals

rez

#Testez normalitatea distributiei erorilor

jarque.bera.test(rez)

#Interpretarea testului jb: Ipoteza nula: erorile sunt distribuite normal. p value< 0.05 deci erorile nu sunt
distribuite normal, adica nu acceptam ipoteza nula si acceptam ipoteza alternativa.

#Valoarea chi patrat pentru 2 grade de libertate si 0.05 prag de semnificatie este qchisq(0.95,2)

#Valoare mult peste, respingem H0.

rez1 <- summary(model1_2)$residuals

rez1

#Testez normalitatea distributiei erorilor pentru modelul 2

jarque.bera.test(rez1)

rez2 <- summary(model1_3)$residuals

rez2

#Testez normalitatea distributiei erorilor

jarque.bera.test(rez2)

rez3 <- summary(model1_4)$residuals

rez3
#Testez normalitatea distributiei erorilor

jarque.bera.test(rez3)

jarque.bera.test(summary(model1_1)$residuals) #p-value<0.05, deci acceptam ipoteza


alternativa,pentru toate cele 4 modele.

jarque.bera.test(summary(model1_2)$residuals)

jarque.bera.test(summary(model1_3)$residuals)

jarque.bera.test(summary(model1_4)$residuals)

#Pachetul mctest

#Testul Farrar-Glauber pentru multicolinearitate

omcdiag(model1_1) #Modelul prezinta multicolinearitate, dar nu este perfecta pentru ca det este diferit
de 0.

cor(mlr06) #Matricea de corelatie si pot sa vad care variabile sunt in relatie liniara cu celalalte.

#Ma uit care variabile au valori peste 0.7(pot indica o corelatie), exemplu Populatie_peste_25ani cu
Populatie_peste_24ani 0.68107226.

#Cu cat este mai mare, cu atat corelarea este mai mare.

#Cu - este corelatie negativa.

omcdiag(model1_3)

S-ar putea să vă placă și