Ανάλυση Δεδομένων

1. Διερεύνηση διαφόρων γνωστών κατανομών

Η R επιτρέπει τη χρήση “βιβλιοθηκών”. Οι βιβλιοθήκες περιέχουν διάφορες εντολές/συναρτήσεις καθώς και δεδομένα. Για να γίνουν διαθέσιμες οι εντολές και τα δεδομένα στον χρήστη, η βιβλιοθήκη πρέπει να εγκατασταθεί στον υπολογιστή (αυτό γίνεται μόνο την πρώτη φορά) και ακολούθως να φορτωθεί στη μνήμη (αυτό γίνεται κάθε φορά που θα χρησιμοποιήσουμε το περιεχόμενο της βιβλιοθήκης). Πιο κάτω εγκαθιστούμε τη βιβλιοθήκη rmutil, η οποία περιέχει εντολές για παραγωγή δειγμάτων από την κατανομή Laplace, με συνάρτηση πυκνότητας πιθανότητας \(f(x)=\frac1{2s}e^{-\frac{|x-m|}s}, \;x\in\mathbb{R}.\) Επίσης εγκαθιστούμε τη βιβλιοθήκη moments, η οποία περιέχει εντολές για τον υπολογισμό των συντελεστών λοξότητας και κυρτότητας.

install.packages('rmutil')
install.packages('moments')
install.packages('nortest')

Ακολούθως φορτώνουμε τις βιβλιοθήκες για να γίνουν διαθέσιμα τα περιεχόμενά τους.

library(rmutil)  
## 
## Attaching package: 'rmutil'
## The following object is masked from 'package:stats':
## 
##     nobs
## The following objects are masked from 'package:base':
## 
##     as.data.frame, units
library(moments)
library(nortest)

Παράγουμε 5 διαφορετικά δείγματα αποτελούμενα από 200 ανεξάρτητες και ισόνομες πραγματώσεις από τις κατανομές: τυπική κανονική, κατανομή Student με 10 βαθμούς ελευθερίας, τυπική κατανομή Laplace, \(\chi^2_2\) και \(Gamma(3,2)\).

set.seed(2)
normal<-rnorm(200)
student<-rt(200,10)
laplace<-rlaplace(200)
chisq2<-rgamma(200,shape=1, rate=1/2)
gamma<-rgamma(200,shape=3, rate=2)

Εμφανίζουμε τα ιστογράμματα κάθε δείγματος. Βλέπουμε ότι τα πρώτα 3 είναι περίπου συμμετρικά γύρω από το μηδέν, ενώ τα άλλα 2 έχουν θετικές τιμές και είναι δεξιά λοξά. Το δείγμα από την τυπική Laplace έχει μεγαλύτερο εύρος τιμών από το δείγμα από την τυπική κανονική. Το δείγμα από την \(Gamma(3,2)\) έχει μόνο λίγες παρατηρήσεις κοντά στο μηδέν ενώ το δείγμα από την \(\chi_2^2\) έχει αρκετές, το δείγμα από την \(\chi^2_2\) έχει ακραίες τιμές κλπ.

par(mfrow=c(3,2))
hist(normal)
hist(student)
hist(laplace)
hist(chisq2)
hist(gamma)

Εμφανίζουμε τα κυτιογραφήματα των 5 δειγμάτων. Παρατηρούμε πχ ότι το δείγμα της \(\chi_2^2\) είναι δεξιά λοξό με μεγάλο μήκος δεξιάς ουράς και ακραίες τιμές, της Laplace είναι συμμετρικό με ακραίες τιμές, της Κανονικής συμμετρικό χωρίς ακραίες τιμές κλπ.

par(mfrow=c(1,1))

boxplot(normal, student, laplace, chisq2, gamma, names=c("normal", "student", "laplace", "chisq2", "gamma"))

Μπορούμε να μελετήσουμε τους δείκτες λοξότητας, πχ το δείγμα από την \(Gamma(3,2)\) είναι δεξιά λοξό ενώ από την \(N(0,1)\) είναι περίπου συμμετρικό.

skewness(normal)
## [1] 0.04766609
skewness(gamma)
## [1] 1.275407

Μπορούμε να χρησιμοποιήσουμε τον έλεγχο Kolmogorov-Smirov, για να ελέγξουμε κάτα πόσο δύο δείγματα φαίνονται να προέρχονται από την ίδια κατανομή, με στατιστική σημαντικότητα \(\alpha\). Αυτό γίνεται με την εντολή ks.test, η οποία παίρνει ως όρισμα δύο δείγματα ή ένα δείγμα και μια κατανομή. Η δεύτερη περίπτωση χρησιμεύει για τη σύγκριση ενός δείγματος με μια θεωρητική κατανομή.

ks.test(normal, student) 
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  normal and student
## D = 0.05, p-value = 0.9639
## alternative hypothesis: two-sided
ks.test(student, 'pnorm')
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  student
## D = 0.057964, p-value = 0.5124
## alternative hypothesis: two-sided
ks.test(normal, gamma)
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  normal and gamma
## D = 0.59, p-value < 2.2e-16
## alternative hypothesis: two-sided

Βλέπουμε ότι για τα δείγματα από την τυπική κανονική κατανομή και από την Student με 10 βαθμούς ελευθερίας, δεν μπορούμε να απορρίψουμε την υπόθεση ότι προέρχονται από την ίδια κατανομή! Αυτό είναι αναμενόμενο αφού όσο πληθαίνουν οι βαθμοί ελευθερίας η κατανομή Student προσεγγίζει την τυπική κανονική κατανομή.

Ακολούθως κάνουμε μια μελέτη της κυρτότητας των δειγμάτων από την τυπική κανονική και την κατανομή Laplace. Μεγάλη κυρτότητα δείχνει ότι η διακύμανση οφείλεται σε λίγες ακραίες τιμές ενώ οι υπόλοιπες τιμές είναι συγκεντρωμένες κοντά στον μέσο, παρά σε πολλές διάσπαρτες τιμές γύρω από το μέσο. Προσέξτε ότι οι τυχαίες μεταβλητές \(X\) και \(Y=cX\) για οποιοδήποτε \(c\in\mathbb{R}\) έχουν τον ίδιο συντελεστή κυρτότητας, συνεπώς δεν υπάρχει λόγος να κανονικοποιήσουμε την Laplace για να έχει διασπορά 1, όπως έχει και η τυπική κανονική.

par(mfrow=c(1,1))
boxplot(normal, laplace, names=c("normal", "laplace")) 

Από το κυτιογράφημα βλέπουμε ότι η τυπική Laplace έχει τις περισσότερες τιμές πολύ κοντά στο μηδέν και μερικές ακραίες τιμές, ενώ η κανονική έχει όλες τις τιμές κοντά στο μηδέν. Συνεπώς περιμένουμε ότι η τυπική Laplace θα έχει μεγαλύτερη κυρτότητα από την τυπική κανονική.

kurtosis(normal)
## [1] 2.295313
kurtosis(laplace)
## [1] 5.309794

Η εντολή ecdf δίνει την εμπειρική συνάρτηση κατανομής. Κοιτάζοντας τις εμπειρικές συναρτήσεις κατανομής για τα δείγματα laplace και normal, μπορούμε να συγκρίνουμε με ακόμα ένα τρόπο τα δύο δείγματα.

par(mfrow=c(1,2))
plot.ecdf(normal, verticals=T, col.p="white", col.v="black", main="Εμπειρική ΣK δείγματος normal")
plot.ecdf(laplace, verticals=T, col.p="white", col.v="black", main="Εμπειρική ΣK δείγματος laplace")

par(mfrow=c(1,1))
plot.ecdf(normal, verticals=T, col.p="white", col.v="black", main="Εμπειρικές Συναρτήσεις Κατανομής δειγμάτων normal και laplace")
plot(ecdf(laplace), add=T, verticals=T, col.p="white", col.v="blue")
legend(-2,0.8,legend=c("normal", "laplace"),
       col=c("black", "blue"), lty=1, cex=0.8)

Παρατηρούμε ότι η εμπειρική συνάρτηση κατανομής για το δείγμα laplace, είναι πιο κυρτή από αυτή του δείγματος normal (πιο απότομη μετάβαση από χαμηλές σε ψηλές τιμές) εξού και το όνομα “κυρτότητα”.

Μπορούμε επίσης να παρουσιάσουμε τη μη παραμετρική εκτιμήτρια της συνάρτησης πυκνότητας πιθανότητας από την οποία προέρχονται τα δείγματα. Αυτό γίνεται με την εντολή density.

par(mfrow=c(1,2))
plot(density(normal), main="Εκτίμηση σππ δείγματος normal")
plot(density(laplace), main="Εκτίμηση σππ δείγματος laplace")

par(mfrow=c(1,1))

plot(density(normal), main="Εκτίμηση σ.π.π. δειγμάτων normal και laplace", ylim=c(0,0.42))
lines(density(laplace), col="blue")
legend(2,0.3,legend=c("normal", "laplace"),
       col=c("black", "blue"), lty=1, cex=0.8)

Τέλος, αντίστοιχη διερεύνηση μπορεί να γίνει και για διακριτές κατανομές, όπου όμως η εκτίμηση της συνάρτησης πυκνότητας πιθανότητας δεν έχει νόημα. Σε αυτή την περίπτωση αρκεί κάτι αντίστοιχο με το ιστόγραμμα, συγκεκριμένα το ραβδόγραμμα. Για ένα διάνυσμα με διακριτές τιμές (πχ τυχαίο δείγμα από διακριτή κατανομή), η εντολή table εμφανίζει πόσες φορές εμφανίζεται στο διάνυσμα κάθε τιμή. Το ραβδόγραμμα παρουσιάζει με γραφικό τρόπο το αποτέλεσμα. Αν το σύνολο τιμών έχει μεγάλη πληθυκότητα, τότε το ιστόγραμμα ίσως δίνει καλύτερη εικόνα (δέστε πιο κάτω στο παράδειγμα με τις εξετάσεις GRE και TOEFL).

p=rpois(100, lambda=3)
table(p)
## p
##  0  1  2  3  4  5  6  7  8  9 
##  1 14 19 26 17 12  7  2  1  1
barplot(table(p))

hist(p)

2. Διερεύνηση Πραγματικών Δεδομένων. Παράδειγμα 1, αποτελέσματα εξετάσεων GRE και TOEFL.

Λεπτομέρειες για τα δεδομένα https://www.kaggle.com/mohansacharya/graduate-admissions/home

Το data1 είναι πλαίσιο δεδομένων με 9 στήλες/μεταβλητές που αντιστοιχούν σε 400 φοιτητές. Εμείς θα μελετήσουμε τις στήλες που περιέχουν αποτελέσματα για τις εξετάσεις GRE και TOEFL, τις οποίς περνούμε στα διανύσματα gre και toefl για ευκολία.

data1<-read.csv("Admission_Predict.csv")
gre<-data1$GRE.Score
toefl<-data1$TOEFL.Score

Μπορούμε να κοιτάξουμε διάφορες στατιστικές συναρτήσεις θέσης.

mean(gre)
## [1] 316.8075
median(gre)
## [1] 317
min(gre)
## [1] 290
max(gre)
## [1] 340
quantile(gre)
##   0%  25%  50%  75% 100% 
##  290  308  317  325  340
quantile(gre,probs=0.33)
## 33% 
## 312

Η εντολή summary, όταν καλείται για ένα διάνυσμα παρατηρήσεων δίνει την περίληψη 6 αριθμών.

summary(gre)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   290.0   308.0   317.0   316.8   325.0   340.0

Μπορούμε να κοιτάξουμε και διάφορες στατιστικές συναρτήσεις εύρους.

var(gre)
## [1] 131.6446
sd(gre)
## [1] 11.47365
IQR(gre)
## [1] 17

Μπορούμε επίσης να κοιτάξουμε τους συντελεστές λοξότητας και κυρτότητας των δύο μεταβλητών. Οι παρατηρήσεις των δύο μεταβλητών φαίνονται να είναι συμμετρικές γύρω από τη μέση τους τιμή.

skewness(gre)
## [1] -0.06265736
skewness(toefl)
## [1] 0.05700113
kurtosis(gre)
## [1] 2.293273
kurtosis(toefl)
## [1] 2.413468

Ακολουθούν τα κυτιογραφήματα και τα ιστογράμματα των βαθμολογιών. Παρατηρούμε ότι οι παρατηρήσεις και στις δύο περιπτώσεις μοιάζουν να είναι περίπου συμμετρικές γύρω από τη διάμεσο. Προσέξετε ότι σε αντίθεση με πιο πάνω, χρησιμοποιούμε δυο φορές την εντολή boxplot. Ο λόγος είναι ότι δεν θέλουμε να έχουν την ίδια κλίμακα τα δύο κυτιογραφήματα.

par(mfrow=c(1,2))
boxplot(gre, main="Βαθμολογίες Εξετάσεων GRE")
boxplot(toefl, main="Βαθμολογίες Εξετάσεων TOEFL")

par(mfrow=c(2,1))
hist(gre, main="Βαθμολογίες Εξετάσεων GRE")
hist(toefl, main="Βαθμολογίες Εξετάσεων TOEFL")

par(mfrow=c(2,1))
barplot(table(gre), main="Βαθμολογίες Εξετάσεων GRE")
barplot(table(toefl), main="Βαθμολογίες Εξετάσεων TOEFL")

Οι τιμές των δύο μεταβλητών φαίνονται να είναι κανονικά κατανεμημένες. Αυτή η υπόθεση μπορεί να διερευνηθεί γραφικά με την εντολή qqnorm (κάνει σύγκριση με κανονική μόνο).

qqnorm(gre, main="Normal Q-Q Plot GRE")
qqline(gre)

qqnorm(toefl, main="Normal Q-Q Plot TOEFL")
qqline(toefl)

Το γεγονός ότι τα σημεία είναι κοντά στην ευθεία, δείχνει ότι όντως οι δύο μεταβλητές είναι προσεγγιστικά κανονικές. Η ευθεία δεν είναι η \(y=x\), το οποίο υποδηλώνει ότι δεν ακολουθούν τυπική κανονική (δηλαδή δεν έχουν μέση τιμή 0 και διασπορά 1). Αν κανονικοποιήσουμε τις παρατηρήσεις των δύο μεταβλητών τότε τα σημεία είναι κοντά στην \(y=x\).

std.gre=scale(gre, center=T, scale=T)
std.toefl=scale(toefl, center=T, scale=T)

qqnorm(std.gre, main="Normal Q-Q Plot stdGRE")
qqline(std.gre)

qqnorm(std.toefl, main="Normal Q-Q Plot stdTOEFL")
qqline(std.toefl)

Αν θέλαμε να συγκρίνουμε τις κατανομές των δύο μεταβλητών, αυτό μπορεί να γίνει με την εντολή qqplot (η οποία κάνει σύγκριση οποιωνδήποτε δύο δειγμάτων, ή ενός δείγματος και μιας θεωρητικής κατανομής).

qqplot(std.gre, std.toefl)
qqline(std.gre)

Μπορούμε επίσης να κοιτάξουμε τη μη παραμετρική εκτίμηση της συνάρτησης πυκνότητας πιθανότητας των τιμών των δύο μεταβλητών.

plot(density(gre), main="Εκτίμηση πυκνότητας GRE")

plot(density(toefl), main="Εκτίμηση πυκνότητας TOEFL")

dens.std.gre=density(std.gre)
x.gre=dens.std.gre$x

plot(dens.std.gre, main="Εκτίμηση πυκνότητας GRE κανονικοποίηση", ylim=c(0,0.4))
lines(x.gre,dnorm(x.gre), col="blue")
legend(1.5,0.32,legend=c("Std GRE", "Std Normal"),
       col=c("black", "blue"), lty=1, cex=0.8)

dens.std.toefl=density(std.toefl)
x.toefl=dens.std.toefl$x

plot(dens.std.toefl, main="Εκτίμηση πυκνότητας TOEFL κανονικοποίηση", ylim=c(0,0.4))
lines(x.toefl,dnorm(x.toefl), col="blue")
legend(1.5,0.32,legend=c("Std TOEFL", "Std Normal"),
       col=c("black", "blue"), lty=1, cex=0.8)

Ακόμα ένας γραφικός τρόπος σύγκρισης των κατανομών είναι με χρήση της εμπειρικής συνάρτησης κατανομής.

plot.ecdf(std.gre, verticals=T, col.p="white", col.v="black", main="Εμπειρικές Συναρτήσεις Κατανομής δειγμάτων Std GRE και Std TOEFL")
plot(ecdf(std.toefl), add=T, verticals=T, col.p="white", col.v="blue")
legend(-2,0.8,legend=c("Std GRE", "Std TOEFL"),
       col=c("black", "blue"), lty=1, cex=0.8)

x=seq(-3,3,by=0.01)
plot(ecdf(std.gre), verticals=T, col.p="white", col.v="black", main="Εμπειρική Συνάρτηση Κατανομής Std GRE και ΣΚ N(0,1)")
lines(x, pnorm(x), type="l", col = "blue")
legend(1.5,0.32,legend=c("Std GRE", "N(0,1)"),
       col=c("black", "blue"), lty=1, cex=0.8)

plot(ecdf(std.toefl), verticals=T, col.p="white", col.v="black", main="Εμπειρική Συνάρτηση Κατανομής Std TOEFL και ΣΚ N(0,1)")
lines(x, pnorm(x), type="l", col = "blue")
legend(1.5,0.32,legend=c("Std TOEFL", "N(0,1)"),
       col=c("black", "blue"), lty=1, cex=0.8)

Με τον έλεγχο Kolmogorov-Smirnov ελέγχουμε κατά πόσο οι δύο μεταβλητές είναι ισοκατανεμημένες.

Επίσης μπορούμε να ελέγξουμε κατά πόσο ακολουθούν κανονική κατανομή με οποιδήποτε μέσο και διασπορά (μη καθορισμένα). Η λογική γι’αυτό τον έλεγχο είναι ότι μπορούμε να συγκρίνουμε τα κανονικοποιημένα δείγματα με την τυπική κανονική. Επειδή όταν συγκρίνουμε ένα από τα κανονικοποιημένα δείγματα με την τυπική κατανομή, εισάγουμε μεροληψία γιατί υποθέτουμε ότι η πραγματική μέση τιμή και η πραγματική διασπορά είναι ο δειγματικός μέσος και η δειγματική διασπορά αντίστοιχα, χρειάζεται να γίνει διόρθωση στον υπολογισμό του p-value. Αυτή η διαδικασία υλοποιείται με τον έλεγχο Lillifors, μέσω της συνάρτησης lillie.text() που υπάρχει στη βιβλιοθήκη nortest.

ks.test(gre, toefl)
## Warning in ks.test(gre, toefl): p-value will be approximate in the presence
## of ties
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  gre and toefl
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
lillie.test(gre)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  gre
## D = 0.050095, p-value = 0.01753
lillie.test(toefl)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  toefl
## D = 0.057709, p-value = 0.002768

Βλέπουμε ότι (όπως αναμέναμε) η υπόθεση ότι τα δύο δείγματα έχουν την ίδια κατανομή, απορρίπτεται. Επίσης βλέπουμε ότι οι υποθέσεις ότι κάθε ένα τα δείγματα ακολουθεί κανονική κατανομή, απορρίπτονται.

Kάνοντας ένα διάγραμμα διασποράς (scatter plot) των δύο μεταβλητών, βλέπουμε ότι παρουσιάζουν γραμμική θετική συσχέτιση (όταν αυξάνεται η μια, αυξάνεται και η άλλη με γραμμική σχέση).

plot(gre,toefl)

Μπορούμε επίσης να ελέγξουμε κατά πόσο οι δύο μεταβλητές GRE και ΤΟEFL είναι συσχετισμένες. H εντολή cor εμφανίζει το δειγματικό συντελεστή συσχέτισης \(cor(X,Y)=\frac{cov(X,Y)}{\sqrt{var(X)var(Y)}}\), ενώ η εντολή cov τη δειγματική συνδιακύμανση.

cor(gre,toefl)
## [1] 0.8359768
cov(gre,toefl)
## [1] 58.21697

Με την εντολή cor.test μπορούμε να κάνουμε στατιστικό έλεγχο για τη συσχέτιση των δύο μεταβλητών.

cor.test(gre,toefl)
## 
##  Pearson's product-moment correlation
## 
## data:  gre and toefl
## t = 30.391, df = 398, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8038128 0.8632674
## sample estimates:
##       cor 
## 0.8359768

Τέλος στο διάγραμμα διασποράς, φαίνεται να υπάρχουν κάποιες ακραίες παρατηρήσεις. Μπορούμε να ανιχνεύσουμε ποιες ακριβώς είναι οι ακραίες παρατηρήσεις με χρήση των διαδραστικών δυνατοτήτων που μας παρέχει η R.

plot(gre,toefl)
identify(gre, toefl, labels = 1:400, plot=TRUE)

## integer(0)

3. Διερεύνηση πραγματικών δεδομένων. Παράδειγμα 2, σύγκριση των επιδόσεων μαθητών ανάλογα με το φύλο.

Λεπτομέρειες για τα δεδομένα https://www.kaggle.com/uciml/student-alcohol-consumption/home

Το data2 είναι πλαίσιο δεομένων με 33 στήλες/μεταβλητές οι οποίες αντιστοιχούν σε 649 μαθητές/τριες γυμνασίου. Μας ενδιαφέρει η μεταβλητή G3 που αναφέρεται στην τελική επίδοση (βαθμός 0-20) στο μάθημα Πορτογαλικών. Θέλουμε να αναλύσουμε την επίδοση με βάση το φύλο. Χωρίζουμε τις παρατηρήσεις της G3 σε δύο διανύσματα: το πρώτο περιέχει τους βαθμούς των αγοριών και το δεύτερο των κοριτσιών.

data2<-read.csv("student-por.csv")
names(data2)
##  [1] "school"     "sex"        "age"        "address"    "famsize"   
##  [6] "Pstatus"    "Medu"       "Fedu"       "Mjob"       "Fjob"      
## [11] "reason"     "guardian"   "traveltime" "studytime"  "failures"  
## [16] "schoolsup"  "famsup"     "paid"       "activities" "nursery"   
## [21] "higher"     "internet"   "romantic"   "famrel"     "freetime"  
## [26] "goout"      "Dalc"       "Walc"       "health"     "absences"  
## [31] "G1"         "G2"         "G3"
data2$sex[1:20]
##  [1] F F F F F M M F M M F F M M M F F F M M
## Levels: F M
grade.male<-data2$G3[data2$sex=='M']
grade.female<-data2$G3[data2$sex=='F']

Φτιάχνουμε τα κυτιογραφήματα με τις επιδόσεις των αγοριών και των κοριτσιών (με κοινή κλίμακα).

boxplot(grade.male, grade.female, names=c("grade.male", "grade.female"))

Βλέπουμε ότι ο διάμεσος των βαθμών των κοριτσιών είναι ψηλότερος από αυτόν των αγοριών. Θα διερευνήσουμε την υπόθεση ότι τα κορίτσια έχουν κατά μέσο όρο καλύτερη επίδοση από τα αγόρια. Αυτό μπορεί να γίνει με την εντολή t.test, η οποία κάνει έλεγχο Student για την ισότητα των μέσων τιμών δύο πληθυσμών. Ο έλεγχος αυτός διαφοροποιείται ανάλογα με το αν ισούνται οι διασπορές των δύο πληθυσμών ή όχι. Μπορούμε να ελέγξουμε την ισότητα των διασπορών με την εντολή var.test.

var.test(grade.male, grade.female)
## 
##  F test to compare two variances
## 
## data:  grade.male and grade.female
## F = 1.1298, num df = 265, denom df = 382, p-value = 0.2762
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.9068945 1.4138113
## sample estimates:
## ratio of variances 
##           1.129779
t.test(grade.male, grade.female, var.equal=T)
## 
##  Two Sample t-test
## 
## data:  grade.male and grade.female
## t = -3.3109, df = 647, p-value = 0.0009815
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.3497314 -0.3447659
## sample estimates:
## mean of x mean of y 
##  11.40602  12.25326

Βλέπουμε ότι ο έλεγχος απορρίπτει την ισότητα των δύο μέσων (σε επίπεδο σημαντικότητας 0.1%).

Ο έλεγχος Student υποθέτει ότι οι παρατηρήσεις που αντιστοιχούν στους δύο πληθυσμούς είναι κανονικά κατανεμημένες. Πιο κάτω διερευνούμε κατά πόσο αυτή η υπόθεση ισχύει.

hist(grade.male)

qqnorm(grade.male)
qqline(grade.male)

hist(grade.female)

qqnorm(grade.female)
qqline(grade.female)

Βλέπουμε ότι και στις δύο περιπτώσεις τα δεδομένα φαίνονται να είναι προσεγγιστικά κανονικά. Σε περίπτωση που δεν έχουμε κανονικότητα, μπορούμε να χρησιμοποιήσουμε τον έλεγχο Wilcoxon για την ισότητα των μέσων δύο πληθυσμών, ο οποίος είναι μη παραμετρικός και δεν υποθέτει κανονικότητα.

wilcox.test(grade.male, grade.female)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  grade.male and grade.female
## W = 42962, p-value = 0.0006317
## alternative hypothesis: true location shift is not equal to 0

Τα αποτελέσματα των δύο ελέγχων συμφωνούν σε αυτή την περίπτωση.

4. Επιλογή των παραμέτρων στο ιστόγραμμα και στη μη παραμετρική εκτίμηση της συνάρτησης πυκνότητας πιθανότητας.

Χρησιμοποιούμε τα δεδομένα από την παράγραφο 2 πιο πάνω.

data1<-read.csv("Admission_Predict.csv")
gre<-data1$GRE.Score
toefl<-data1$TOEFL.Score

Πρώτα μελετούμε την επίδραση του πλάτους στα ιστογράμματα. Μπορούμε να αλλάξουμε το πλάτος επιλέγοντας το πλήθος των περιοχών (ίσου πλάτους) που θα υπάρχουν στο ιστόγραμμα με το όρισμα breaks. Βλέπουμε ότι για μικρό πλάτος (μεγάλο πλήθος περιοχών) το ιστόγραμμα κάνει overfit τα δεδομένα και χάνει τη μεγάλη εικόνα.

par(mfrow=c(2,1))
hist(gre, breaks=100,  main="Βαθμολογίες Εξετάσεων GRE")
hist(toefl, breaks=100, main="Βαθμολογίες Εξετάσεων TOEFL")

Για πολύ μεγάλο πλάτος (μικρό πλήθος περιοχών) η λεπτομέρεια χάνεται εντελώς.

par(mfrow=c(2,1))
hist(gre, breaks=2,  main="Βαθμολογίες Εξετάσεων GRE")
hist(toefl, breaks=2, main="Βαθμολογίες Εξετάσεων TOEFL")

Η R επιλέγει αυτόματα μια τιμή του πλάτους, η οποία ισορροπεί μεταξύ των δύο περιπτώσεων.

par(mfrow=c(2,1))
hist(gre,  main="Βαθμολογίες Εξετάσεων GRE")
hist(toefl,  main="Βαθμολογίες Εξετάσεων TOEFL")

Μπορούμε επίσης να πούμε στην R ακριβώς που θέλουμε να χωρίσει τις περιοχές (οι περιοχές μπορούν να έχουν διαφορετικά πλάτη).

hist(toefl,  breaks=c(60,70,100,105,110,115,125,150), main="Βαθμολογίες Εξετάσεων TOEFL")

Παρόμοια, στη μη παραμετρική εκτίμηση συνάρτησης πυκνότητας πιθανότητας η R επιλέγει από μόνη της ένα βέλτιστο πλάτος \(h\) για τον πυρήνα. Μπορούμε να επιλέξουμε άλλη τιμή για το πλάτος, όπως και να αλλάξουμε τη μορφή του πυρήνα που εξορισμού είναι Γκαουσιανή (τυπική κανονική).

plot(density(toefl), main="Εκτίμηση πυκνότητας GRE")

plot(density(toefl, kernel="rectangular"), main="Εκτίμηση πυκνότητας GRE")

plot(density(toefl, kernel="rectangular", width=1), main="Εκτίμηση πυκνότητας GRE")

plot(density(toefl, kernel="epanechnikov"), main="Εκτίμηση πυκνότητας GRE")

5. Χρονοσειρές και Αυτοσυσχέτιση

Πιο κάτω παράγουμε δείγμα από μια χρονοσειρά που ανήκει στην κατηγορία των Gaussian autoregressions AR(1) και έχει τη μορφή \[Χ_t = \frac12X_{t-1}+\epsilon_t, \;t=1,2,\dots,n,\] όπου \(X_0=0\) και \(\epsilon_t\stackrel{iid}{\sim}N(0,1)\).

n=1000
x<-c()
x[1]<-0
for(i in 2:(n+1))
{
  x[i]<-(0.5)*x[i-1]+rnorm(1)
}

plot.ts(x, main="Δείγμα χρονοσειράς AR(1)")

Η εντολή acf υπολογίζει τη συνάρτηση αυτοσυσχέτισης μιας χρονοσειράς. Καλώντας την εμφανίζεται αυτόματα το γράφημα της συνάρτησης αυτοσυσχέτισης.

acf(x)