Documente Academic
Documente Profesional
Documente Cultură
PROIECT
ANALIZA DATELOR
Setul de date pentru acest proiect a fost construit pe baza datelor prezentate pe site-ul Banca
Mondiala(World Bank). Am ales sa realizez o analiza economica a tarilor din lume pe baza unor
indicatori economici. Datele prelucrate sunt din anul 2020, iar, pe baza a 121 de tari, am ales
urmatoarii indicatori(variabile):
produs intern brut(pe cap de locuitor): PIB-ul pe cap de locuitor reprezinta produsul
intern brut împărțit la populația de la jumătatea anului. PIB-ul este suma valorii adăugate
brute a tuturor producătorilor rezidenți din economie plus orice taxe pe produs și minus
orice subvenții care nu sunt incluse în valoarea produselor. Se calculează fără a face
deduceri pentru deprecierea activelor fabricate sau pentru epuizarea și degradarea
resurselor naturale. Datele sunt în dolari SUA actuali. Este masurat in $.
Import de bunuri: cumparare din strainatate a unor bunuri materiale contra unei cantitati
de moneda convenita, implicand trecerea de catre acestea a frontierei vamale a
importatorului. Datele sunt in dolari SUA actuali. Este masurat in $
Investiitile straine directe: relaţii investiţionale de durată între entităţi rezidente şi entităţi
nerezidente ce implică, de regulă, exercitarea de către investitori a unor influenţe
manageriale semnificative în întreprinderile în care au investit. Datele sunt in dolari SUA
actuali. Este masurat in $
Importuri de bunuri si servicii: este un bun sau un serviciu cumpărat într-o țară care a fost
produs în alta. Importurile și exporturile sunt componentele comerțului internațional.
Dacă valoarea importurilor unei țări depășește valoarea exporturilor sale, țara are o
balanță comercială negativă, cunoscută și sub denumirea de deficit comercial. Datele sunt
în dolari americani actuali. Este masurat in $.
Produsul intern brut(PIB): reflectă suma valorii de piață a tuturor mărfurilor și serviciilor
destinate consumului final, produse în toate ramurile economiei în interiorul unei țări în
decurs de un an. Datele sunt în dolari americani actuali. Este masurat in $.
Rezervele totale, fara aur: suma depozitelor pe care instituțiile depozitare le pot
contabiliza în vederea rezervelor legale obligatorii. În calcul sunt incluse soldurile
contului de rezervă depozitate la o bancă de rezervă în ultima săptămână, monedă în
seiful unei bănci, inclusiv numerar în tranzit către sau de la băncile de rezervă. Datele
sunt în dolari americani actuali. Este masurat in $.
Dupa ce datele aferente au fost introduse in Excel, am eliminat valorile de tip outlier pentru o
analiza corecta. Algoritmul folosit este cel pentru determinarea valorilor extreme, si astfel au fost
eliminate 10 tari care au avut valori mult prea mari sau mult prea mici pentru cel putin unul
dintre indicatorii prezenti.
Tabelul de date este adaugat in Anexa.
2. Analiza datelor
Pentru a incepe analiza in mediul R, se va alege directorul de lucru cu ajutorul functiei SETWD,
director unde se vor gasi datele ce urmeaza a fi analizate. Cu functiei read.csv vom importa
datele in aplicatie. Pentru a verifica daca datele au fost importate cu succes, vom folosi functia
View, sau, pentru a verifica in consola, se scrie inca o data numele tabelei in script.
A. Statistici descriptive
Vom folosi functia summary si se va interpreta output-ul.
Folosind functia summary se obtine imaginea de ansamblu a setului de date utilizat pentru
analiza noastra. Ea va afisa urmatoarele informatii: min (valoarea minima inregistrata a
variabilei), max (valoarea maxima inregistrata a variabilei), mean (media inregistrata a
variabilei), 1st Qu. (prima cuartila, 25% din valorile extrase sunt mai mici decat valoarea acestei
cuartile), 3rd Qu. (a treia cuartila, 25% din valorile extrase sunt mai mari decat valoarea acestei
cuartile) si Median (mediana, jumatate din observatii au valorile mai mici decat valoarea
medianei).
Se vor obtine urmatoarele interpetari:
Pentru variabila PIB pe cap de locuitor, observam ca minimul este de 556.8 milioane $,
iar maximul este de 86601.6 $. Acest fapt indica faptul ca nivelul de trai si dezvoltarea tarilor
variaza extrem de mult. Se remarca faptul ca jumatate din tarile analizate au un PIB pe cap de
locuitor mai mic de 22350.2 $. Media este de 21949.1 $, iar 25% din tarile analizate au un PIB
pe cap de locuitor mai mic 724.8 dolari, iar 25% din tarile analizate au un PIB pe cap de locuitor
mare mare de 25540.7 $.
Pentru importul de bunuri si servicii, observam o medie de aproximativ 400058272,727
dolari. 25 % din tarile analizate au importat bunuri cu o valoare totala mai mica de
342.283milioane $, iar 75% au importat bunuri co o valoare totala mai mare de 446.427milioane
de dolari. Valoarea medianei este de 403.966 milioane de dolari, ceea ce inseamnna ca jumatate
din tarile analizate au un import de bunuri mai mic de aceasta valoare.
B. Boxplot
Graficul Boxplot ne arata faptul ca nu sunt prezente valori extreme, numite outlier.
Aceste valori au fost eliminate in Excel, inaintea efectuarii importului in R.
Pentru boxplot-ul aferent variabilei importuri de bunuri si servicii vom spune ca nu exista valori
de tip outlier. Valoarea medianei se afla in apropierea valorii de 400 de miliarde , in timp ce
prima cuartila este mai apropiata de valoarea 350 de miliarde respectiv a treia cuartila se
indreapta spre valoarea 450 de miliarde . Vom observa ca aceste interpretari sunt adevarate,
conform rezultatelor aparute dupa executarea functiei summary (median= 403,966 miliarde , 1st
Qu.= 342,283 miliarde si 3rd Qu 446,427 miliarde ). Valorile de minim si de maxim aferente
indicatorului, asa cum reiesc si din comenzile anterioare, sunt foarte apropiate de 300
miliarde(295,941), si respectiv 500 de miliarde (502.295). Mediana avand o valoare putin mai
mare decat cea a mediei (400.005) va reprezenta o distributie negativ asimetrica.
In acest boxplot avem reprezentarea indicatorului rezerve totale fara aur, unde, de asemenea, nu
observam valori extreme. Observam ca avem o valoare a medianei inregistrata intre 400 de
miliarde de dolari, iar valorile cuartilelor sunt inregistrate in jurul valorilor de 200 de miliarde,
respectiv 600 de miliarde. Constatam faptul ca aceste interpretari sunt adevarate, avand
rezultatele din functia summary (Median= 419.175, 1st Qu.= 217.315, 3rd Qu.= 609.887). De
asemenea, valorile acestui indicator pentru tarile analizate sunt cuprinse intre valoarea maxima
de 787.05 si valoarea minima de 41.690. Media inregistrata este mai mica decat mediana, avand
valorile 410.121 si respectiv 419.175, distributia va fi una negativ asimetrica.
C. Histograme
Histograma este un grafic cu aplicatii largi in statistica si ofera o interpretare vizuala a
datelor numerice prin indicarea numarului de puncte de date care se afla intr-un interval de
valori. Frecventa datelor este descrisa prin utilizarea unei bare, iar cu cat bara este mai mare, cu
atat frecventa valorilor datelor este mai mare.
In histograma de mai sus este reprezentata variabila PIB pe cap de locuitor.Observam ca
frecventele cele mai mari ale datelor se afla in partea stanga, cu cele mai multe valori fiind
inregistrate in intervalul(0,2000). Prezinta asimetrie spre stanga, deoarece exista multe tari
inregistrate pentru care PIB ul pe cap de locuitor este mai mic comparativ cu majoritatea tarilor.
Acest grafic reprezinta histograma aferenta valorilor rezervelor totale, fara aur. Se
observa faptul ca frecventele cele mai mare sunt concentrate in partea dreapta. Cele mai mari
frecvente se concentreaza in jurul valorii de 600 miliarde. Asimetria este negativa, sau la dreapta,
ceea ce va semnala existenta unor tari pentru care rezervele totale sunt mai mari in comparatie cu
majoritatea tarilor inregistrate si analizate.
D. Ggplot
Folosind pachetul de grafica gglot, vom efectua o reprezentare a celor 121 de tari
inregistrate prin coordonatele date de valorile indicatorilor PIB pe cap de locuitor pe axa
OX si Rezerve Totale fara Aur pe axa OY
Analizand graficul obtinut prin executarea functiei ggplot, putem realiza mai multe
observatii legate de tarile alese in cazul indicatorilor alesi. De exemplu, putem observa faptul ca
India are multe rezerve, insa are un PIB pe cap de locuitor foarte redus comparativ cu celelalte
tari. O tara care are valori mai mari fata de celelalte tari atat din punct de vedere al rezervelor
totale cat si al PIB-ului pe cap de locuitor este SUA, iar tara care prezinta cel mai mare PIB pe
cap de locuitor il reprezinta Elvetia . In mare parte, multe dintra tarile analizate prezinta un nivel
mediu rezerevelor totale si un nivel redus spre mediu al PIB-ului pe cap de locuitor.
E. Reprezentari prin functia plot si abline
Acest grafic este creat prin executarea functiilor with si plot si reprezinta cele 121 de tari prin
coordonatele date de valorile indicatorilor PIB pe cap de locuitor(Ox) si formarea bruta de
capital fix(Oy). Se observa o usoara legatura pozitiva intre cei doi indicatori, astfel: Cand PIB ul
este scazut, si formarea bruta de capital FIX este scazuta.
Cel de al doilea grafic a fost creat cu ajutorul functiilor plot si abline si reprezinta
dependenta intre formarea bruta de capital fix si PIB-ul pe cap de locuitor. Din grafic se poate
observa ca exista o legatura pozitiva intre cei doi indicatori.
F. Matricea de corelatie
Output-ul de mai sus reprezinta matricea de corelatie cu ajutorul aplicarii functiei cor. Un
coeficient de corelație apropiat de 1 arată o corelație pozitivă, iar un coeficient de corelație
apropiat de -1 arată o corelație negativă. Un coeficient de corelație apropiat de valoarea 0 arată
că nu există corelație (asociere aleatoare). Se poate observa o corelatie pozitiva puternica intre
produsul intern brut si importuri de bunuri de valoare 0.918 (legatura dintre cei doi indicatori
este directa) Un exemplu de corelatie slaba este regasit in cadrul indicatorilor formarea bruta de
capital si consumul final al administratiei publice , valoarea aceste legaturi fiind foarte apropiata
de 0 ( -0.009). Toate aceste valori se pot reprezenta si printr-un grafic al matricei de corelatie
folosind functia corrplot din pachetul cu accelasi nume.
Legaturile stabilite pe baza matricei de corelatie se confirma si prin graficul din figura de
mai sus, unde acestea sunt exprimate in functie de intensitatea culorii. Pe diagonala principala se
regasesc corelatiile variabilelor cu ele insasi reprezentate de culoarea albastru inchis, corelatie
puternic pozitiva, legaturi directe.
Din pachetul Hmisc putem folosi functia rcorr ce va expune in output valorile
coeficientilor de corelatie calculati pentru cei 13 de indicatori corespunzatori tarilor alese. In
plus, aceasta functie indica si semnificatia statistica a corelatiilor dintre variabile.
Legaturi semnificative se regasesc intre indicatori precum Formarea Bruta de Capital si
Consumul Final al Administratiei Publice.
De asemenea, putem folosi functia chart.Correlation din pachetul PerformanceAnalytics
pentru a prezenta simultan coeficientii de corelatie dintre indicatorii inclusi, histogramele
asociate variabilelor si corelatiile semnificative.
Pentru figura de mai sus, distribuția fiecărei variabile este ilustrată pe diagonala
principală, in mare parte fiind prezente histograme ce prezinta distributii cu asimetrie la dreapta.
Sub diagonala principală sunt scatterplot-urile care arată dacă există corelație între variabile.
Deasupra diagonalei principale sunt coeficienții de corelație plus nivelul de semnificație ca
steluțe. Fiecărui nivel de semnificație îi este atașat câte un simbol (p-values(0, 0.001, 0.01, 0.05,
0.1, 1) <=> symbols(“***”, “**”, “*”, “.”, " “).
G. Matricea de covarianta
In figura alaturata este prezentata matricea de covarianta rezultata cu ajutorul functiei
cov. Semnul covariantei arata directia relatiei liniare existente intre cele doua variabile. Cu cat
covarianta este mai mare, cu atat suprapunerea informationala e mai mare si redundanta
informationala este mai mare. Aceasta redundanta afecteaza, deci va trebui eliminata. Se poate
observa astfel covarianta dintre PIB si Rezerve Totale este mai mare decat intre PIB si PIB pe
cap de locuitor, deci suprapunerea informationala este mult mai mare intre PIB si rezerve totale.
3. Analiza factoriala
Analiza factoriala vizeaza in principal extragerea unui numar cat mai mic de factori latenti ce
sunt responsabili de corelarea variabilelor originale. Datele fiind deja exprimate in aceeasi
unitate de masura, nu mai este necesara standardizarea lor.
Ideea centrala a analizei factoriale este aceea de a concluziona unele constructii ipotetice, a
identifica unii factori fundamentali, prin intermediul carora sa poata fi explicate
interdependentele existente intre elementele unei multimi de variabile indicator.
Pentru inceput, inainte de a incepe testarea relevantei analizei factoriale, vom aplica functia
describe pentru a verifica daca numarul de observatii din cadrul fiecarei variabile este acelasi. In
caz contrar, cu ajutorul functiei na.omit, vom elimina valorile lipsa existente in cadrul datelor
folosite.
Se obervsa faptul ca numarul de observatii, exprimat prin variabila n, este acelasi pentru
toate variabilele ce urmeaza a fi analizate, neffind astfel necesara utilizarea functiei na.omit.
INDICELE KMO
Indicele KMO poate fi determinat atat in mod implicit, cat si in mod explicit, in limbajul
R. In format implicit, se va folosi functia KMO din pachetul psych, in felul urmator:
Se observa faptul ca valoarea indicatorului KMO este 0.75 (folosind functia implicita,
valorile sunt rotunjite), afirmand o factoriabilitate medie. Cu ajutorul acestei valori, se poate
explica folosirea analizei factoriale asupra setului de date.
In format explicit, crearea functiei in R se realizeaza in felul urmator:
Ruland aceasta functie in cadrul setului nostru de date se obtine output-ul urmator:
Se observa faptul ca valorile exprimate prin acest output sunt apropiate de cele din
output-ul implicit(in acest caz valorile nu mai sunt rotunjite).
TESTUL BARTLETT
Folosind testul sfericitatii lui Bartlett vom testa daca matricea de corelatie este
aproximativ unitara (fiind ipoteza nula), ceea ce arata faptul ca exista o multicoliniaritate
accentuata, dar nu putem observa variabila care nu este corelata cu restul.
Acest test prezinta doua ipoteze:
- H0: Variabilele sunt ortogonale, construirea unui factori comuni este nejustificata.
- H1: Exista cel putin un factor comun intre variabile.
Acest test poate fi determinat atat in forma implicita cat si in forma explicita. In format
explicit, se vor folosi functiile bart_spher si cortest.bartlett, functii extrase din pachetul REdas.
Din acest output, se poate observa numarul gradelor de libertate, in numar de 78,
statistica X a testului este 1556.98, iar p=1.245902e-273, fiind foarte aproape de 0, reprezinta
2
probabilitatea.
De asemena, forma explicita se creeaza in R in felul urmator, folosind functia function().
Corpul functiei este urmatorul:
Valorile exportate sunt asemanatoare( fiind rotunjite) cu cele din output-ul functiei
implicite.
Valoarea lui X2 , fiind 1556.89, este mai mare decat valoarea lui Xtabelar, avand o
valoare de 146.57, va indica faptul ca respingem H0, si acceptam ipoteza potrivit careia exista
cel putin un factor comun (H1).
Mai mult decat atat, valorile indicatorului KMO si a testului sfericitatii lui Bartlett pot fi
interpretate cu ajutorul functiei paf din pachetul rela. Astfel, se obtin urmatoarele output-uri:
NUMARUL MINIMAL DE FACTORI COMUNI
INTERPRETAREA REZULTATELOR
Pentru a putea aplica analiza factoriala asupra setului de date, mai intai trebuie instalat
pachetul GPArotation, iar apoi folosita functia fa pentru a putea identifica corelarea factorilor cu
variabilele originale.
Metoda PA (Principal Axis Factor)
In output-ul de mai sus, se pot observa cei patru factori ce au denumirile PA1, PA2,
PA3si respectiv PA4, aceste denumuri provin de la metoda folosita. Se vor lua in considerare
valorile mai mari decat 0.4, respectiv mai mici decat -0.4.
Putem vedea ca pentru al patrulea factor, variabilele sunt slab corelate, cele mai puternice
corelatii regasindu-se la rezerve totale fara aur(RT_FA) si la importuri de bunuri si
servicii(ImBS). Din punctul de vedere al primului factor, sunt regasite corelatii puternice in
cadrul a 10 variabile.
Valoarea factorului 4 din „SS loadings” indica o contributie mai mica in cadrul analizei,
in timp ce valoarea factorului 1 indica cea mai mare contributie prezenta in cadrul analizei.
Pentru a realiza o mai buna analiza aplicam rotirea axelor prin intermediul „varimax”.
Primul factor, PA1 are in alcatuirea sa 5 variabile, PIB, ImB, ISD, ExB, VNP si FBC. Toate aceste
variabile au corelatii peste 0.8. In cazul acestui factor, se observa prezenta numai a relatiilor pozitive
puternic corelate.
Al doilea factor, PA2, contine 4 variabile FBCF, ExBS, CFAP, avand corelatii de peste 0.8, iar CFG,
are o corelatie de 0.6.
La nivelul factorului 3, PA3, sunt regasite 2 variabile, PIB_LOC si ImBS, prima avand corelatie
pozitiva, iar a doua corelatie negativa.
Ultimul factor, PA4, contine o singura variabila, si anume RT_FA, avand o corelatie de 0.5
#statistici descriptive
#fct summary
summary(date)
#fct describe
install.packages("psych")
library(psych)
describe(date[-1])
sd(date$PIB)
apply(date[-1],2,sd)
mean(date$CFAP)
apply(date[-1],2,mean)
var(date)
apply(date[-1],2,var)
cv(date)
apply(date[-1],2,cv)
#Boxplot
boxplot(date[-1],main="Boxploturi")
boxplot(date$RM, main="BoxplotImporturi Bunuri si Servicii")
boxplot(date$RT_FA, main="Rezerve totale fara aur")
#Reprezentari grafice
#plot si abline
with(date,plot(PIB_LOC,FBCF))
plot(date$PIB_LOC,date$FBCF,col="red",main="Reprezentare dependenta")
abline(lm(date$FBCF~date$PIB_LOC))
#ggplot
install.packages("ggplot2")
library(ggplot2)
View(date)
windows()
ggplot(date, aes(x=PIB_LOC, y=RT_FA)) +
geom_point() + # Show dots
geom_text(
label=date$X,
nudge_x = 0.25, nudge_y = 0.25,
check_overlap = T
)
#Histograme
a<-date$PIB_LOC
View(a)
a[1:121]
hist(a[1:121],freq=F, xlab="PIB pe Cap De Locuitor", main="PIB pe Cap De Locuitor",
col="green")
lines(density(a[1:121]),col="red",lwd=3)
b <- date$RT_FA
hist(b[1:121],freq=F, xlab="Rezerve Totale Fara Aur", main="Histograma Rezerve Totale Fara
Aur", col="orange")
lines(density(b[1:121]),col="blue",lwd=3)
#functia rcorr
install.packages("Hmisc")
library(Hmisc)
functia_corr<-rcorr(as.matrix(na.omit(date[-1])))
functia_corr
functie_noua<-rcorr(as.matrix(date_standardizate))
functie_noua
#functia corrplot
install.packages("corrplot")
library(corrplot)
windows()
corrplot(matrice_corelatie)
windows()
corrplot(matrice_corelatie,method="number",type="upper")
#functia chart.correlation
install.packages("PerformanceAnalytics")
library("PerformanceAnalytics")
windows()
chart.Correlation(as.matrix(na.omit(date[-1])))
#matrice covarianta
cov(na.omit(date[-1]))
KMO(date_proj[-1])
#format explicit
kmo<- function(x)
{
# Omit missing values
x <- subset(x, complete.cases(x))
# Correlation matrix
r <- cor(x)
# Squared correlation coefficients
r2 <- r^2
# Inverse matrix of correlation matrix
i <- solve(r)
# Diagonal elements of inverse matrix
d <- diag(i)
# Squared partial correlation coefficients
p2 <- (-i/sqrt(outer(d, d)))^2
# Delete diagonal elements
diag(r2) <- diag(p2) <- 0
#Equation for KMO test
KMO <- sum(r2)/(sum(r2)+sum(p2))
#Equation for individual MSA
MSA <- colSums(r2)/(colSums(r2)+colSums(p2))
return(list(KMO=KMO, MSA=MSA))
}
kmo(date_proj[-1])
install.packages("REdaS")
library(REdaS)
bart_spher(date_proj[-1])
cortest.bartlett(date_proj[-1])
#format explicit
bartlett_explicit<-function(date_proj){
R<-cor(date_proj[-1])
p<-ncol(date_proj[-1])
n<-nrow(date_proj[-1])
chi2<- -((n-1)-((2*p)+5)/6 ) * log(det(R))
df<-(p*(p-1)/2)
crit<-qchisq(.95,df)
p<-pchisq(chi2,df,lower.tail=F)
cat("Bartlett's test of sphericity: X2(",df,")=",chi2,", p=",
round(p,6),sep="" )
}
bartlett_explicit(date_proj)
qchisq(0.05,120,lower.tail=FALSE)
#pachet rela
install.packages("rela")
library(rela)
rez<-paf(as.matrix(date_proj[-1]))
rez$KMO
rez$Bartlett
R=cor(date_proj[-1])
factcom<- princomp(R, cor=TRUE)
sdev<-factcom$sdev
valp<-factcom$sdev^2
round(sdev,3)
round(valp,3)
#interpretare rezultate
#1.3. Aplicam analiza factoriala. Metoda PA
install.packages("GPArotation")
library(GPArotation)
factoriala_1<-fa(date_proj[-1],nfactors = 4,rotate="none",fm="pa")
print(factoriala_1$loadings)
factoriala_2<-fa(date_proj[-1],nfactors = 4,rotate="Varimax",fm="pa")
print(factoriala_2$loadings)
#Diagrama
windows()
fa.diagram(factoriala_1)
windows()
corrplot(factoriala_1$loadings,method="circle")
factoriala_1
windows()
fa.diagram(factoriala_2)
windows()
corrplot(factoriala_2$loadings,method="circle")
factoriala_2
# Analiza vactoriala. Metoda ML.
factoriala_3<-fa(date_proj[-1],nfactors = 4,rotate="none",fm="ml")
print(factoriala_3$loadings)
factoriala_4<-fa(date_proj[-1],nfactors = 4,rotate="varimax",fm="ml")
print(factoriala_4$loadings)
#Diagrama
windows()
fa.diagram(factoriala_3)
corrplot(factoriala_3$loadings,method="circle")
factoriala_3
windows()
fa.diagram(factoriala_4)
windows()
corrplot(factoriala_4$loadings,method="circle")
factoriala_4