Άσκηση 1

Γράψτε μια συνάρτηση που παίρνει ως όρισμα ένα πίνακα και επιστρέφει τις συντεταγμένες (αριθμός γραμμής και αριθμός στήλης) του μέγιστου στοιχείου και του ελάχιστου στοιχείου του πίνακα, Αν υπάρχουν περισσότερα από ένα μέγιστα ή ελάχιστα στοιχεία θα επιστρέφει τις συντεταγμένες όλων. (Υπόδειξη: Δείτε τη συνάρτηση which)

Άσκηση 2

Γράψτε μια συνάρτηση που παίρνει ως όρισμα ένα data.frame \(A\), και σε κάθε στήλη τύπου numeric βρίσκει τις ελλείπουσες τιμές (NaN) και τις αντικαθιστά με τη μέση τιμή των υπόλοιπων στοιχείων της στήλης. Επιστρέφει ως αποτέλεσμα ένα νέο data.frame με τις συμπληρωμένες τιμές ενώ το αρχικό παραμένει ως έχει.

Άσκηση 3

Δημιουργήστε μια συνάρτηση που παίρνει ως όρισμα ένα διάνυσμα αριθμών \(x=(x_1, x_2, \ldots, x_n)\) και έναν αριθμό \(A\) και επιστρέφει ένα διάνυσμα \((a,b,c)\), όπου:

(α) \(a=\sum_{j=1}^n \frac{e^{-x_j}+1}{j+2}\),

(β) \(b\) είναι ίσο με το πλήθος των στοιχείων του \(x\) που είναι μεγαλύτερα ή ίσα από το 80% του μέγιστου στοιχείου του \(x\).

(γ) \(c\) είναι το ελάχιστο απαιτούμενο πλήθος στοιχείων του \(x\) ξεκινώντας από το πρώτο, έτσι ώστε το άθροισμα τους να είναι μεγαλύτερο του \(Α\). Αν το άθροισμα όλων είναι μικρότερο ή ίσο του \(A\), τότε \(c=n\).

Άσκηση 4

(α) Εισαγάγετε τον πίνακα x (10Χ8) που περιέχεται στο αρχείο x.Rdata.

(β) Δημιουργήστε ένα πίνακα f διαστάσεων 2Χ8, ο οποίος στην πρώτη γραμμή περιέχει τον αριθμό των στοιχείων κάθε στήλης του x που είναι μικρότερα ή ίσα από τη μέση τιμή της αντίστοιχης στήλης και στη δεύτερη γραμμή τον αριθμό των στοιχείων κάθε στήλης του x που είναι μεγαλύτερα από τη μέση τιμή της αντίστοιχης στήλης. (Για παράδειγμα, στην πρώτη στήλη του x η μέση τιμή είναι 9.6 και πέντε στοιχεία της στήλης είναι μικρότερα της μέσης τιμής ενώ 5 είναι μεγαλύτερα. Επομένως η πρώτη στήλη του πίνακα f θα πρέπει να είναι το διάνυσμα (5,5).)

(γ) Δημιουργήστε μια συνάρτηση abovebelowmean που παίρνει όρισμα ένα διάνυσμα v και επιστρέφει τον αριθμό στοιχείων του διανύσματος που είναι μικρότερα ή ίσα από τη μέση τιμή και τον αριθμό στοιχείων που είναι μεγαλύτερα από τη μέση τιμή του διανύσματος.

(δ) Εφαρμόστε τη συνάρτηση abovebelowmean στον πίνακα x. Το αποτέλεσμα πρέπει να είναι το ίδιο με αυτό της ερώτησης (β).

Άσκηση 5

Δημιουργήστε μια συνάρτηση bincount που παίρνει ως όρισμα ένα διάνυσμα μη αρνητικών αριθμών \(x=(x_1, x_a2, \ldots, x_n)\), και ένα διάνυσμα αριθμών \(b=(b_1, b_2, \ldots, b_k)\), και επιστρέφει διάνυσμα συχνοτήτων στο οποίο η πρώτη συνιστώσα είναι ο αριθμός των στοιχείων του \(x\) που είναι μικρότερα από \(b_1\), η δεύτερη είναι ο αριθμός στοιχείων του \(x\) που είναι μεταξύ \(b_1\) και \(b_2\), κλπ μέχρι την τελευταία συνιστώσα που δίνει τον αριθμό στοιχείων του \(x\) που είναι μεγαλύτερα του \(b_k\).

Άσκηση 6

Δημιουργήστε ένα data.frame με 100 γραμμές και 3 στήλες και ονόματα στηλών a,b,c. Η στήλη 1 περιέχει τους αριθμούς 2,4,..200, η στήλη 2 100 τυχαίους αριθμούς από την ομοιόμορφη κατανομή μεταξύ 10 και 20 και η τρίτη στήλη τυχαίους λογικούς χαρακτήρες (TRUE/FALSE). Σώστε το data.frame σε αρχείο excel.

Άσκηση 7

Το αρχείο water.xlsx περιέχει δεδομένα σχετικά με την κατανάλωση νερού ενός αριθμού ατόμων. Για κάθε άτομο δίνονται η κατανάλωση νερού σε ένα έτος (σε κ.μ.), το εισόδημα του ατόμου (σε ευρω/μήνα) και το εργασιακό καθεστώς (εργαζόμενος/συνταξιούχος).

(α) Εισαγάγετε το αρχείο σε ένα data.frame

(β) Υπολογίστε τη μέση κατανάλωση νερού των εργαζόμενων και των συνταξιούχων.

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

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

(ε) Δημιουργήστε ένα γράφημα της κατανάλωσης νερού ως προς το εισόδημα.

(στ) Επαναλάβετε το (ε) όπου στο γράφημα διακρίνονται με κάποιο τρόπο οι εργαζόμενοι από τους συνταξιούχους (διαφορετικό χρώμα ή σύμβολο ή και τα δύο)

Άσκηση 8

Το αρχείο heart.csv περιέχει δεδομένα σχετικά με ασθενείς που ήρθαν στα επείγοντα ενός νοσοκομείου με πόνο στο στήθος. Η στήλη AHD έχει το τελικό αποτέλεσμα των καρδιολογικών εξετάσεων σχετικά με το αν ο ασθενής διαγνώστηκε με καρδιακή νόσο ή όχι. Οι υπόλοιπες στήλες περιέχουν την ηλικία, το φύλο, την κατηγοριοποίηση του πόνου στήθους (ChestPain), την αρτηριακή πίεση σε ηρεμία (RestBP), και την χοληστερόλη (Chol).

(α) Εισαγάγετε το αρχείο σε ένα data.frame με το όνομα heart.

(β) Προσθέστε μια νέα στήλη στο heart που περιέχει τη χοληστερόλη κατηγοριοποιημένη σε 4 κατηγορίες (low, medium, high, veryhigh) ανάλογα με το αν η μέτρηση χοληστερόλης είναι μικρότερη από το 1ο τεταρτημόριο, μεταξύ 1ου και 2ου, μεταξύ 2ου και 3ου, και μεγαλύτερη από το 3ο τεταρτημόριο, αντίστοιχα.

Η απάντηση να δοθεί με δύο τρόπους: (1) με κατάλληλο for loop για όλες τις γραμμές του dataframe, (2) χρησιμοποιώντας συνδυασμό της συνάρτησης cut με τη συνάρτηση quantile (δείτε το help).

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

(δ) Δημιουργήστε ένα σχήμα που αποτελείται από 3 μικρότερα σχήματα σε μια σειρά. Το πρώτο σχήμα περιλαμβάνει δύο χωριστά boxplot της αρτηριακής πίεσης για άτομα χωρίς και με καρδιακή νόσο. Το δεύτερο σχήμα περιλαμβάνει δύο χωριστά scatterplot της χοληστερόλης ως προς την ηλικία, για άτομα χωρίς και με καρδιακή νόσο, με χρώματα μπλε και κόκκινο, αντίστοιχα. Το τρίτο σχήμα περιλαμβάνει ένα διάγραμμα όλων των μετρήσεων χοληστερόλης με τρεις οριζόντιες γραμμές στα επίπεδα της μέσης τιμής και δύο τυπικών αποκλίσεων πάνω και κάτω από τη μέση τιμή. (Σημείωση: Η εντολή plot(x), χωρίς δεύτερο διάνυσμα δημιουργεί διάγγραμα με τις τιμές του x στον κάθετο άξονα και τον αριθμό παρατήρησης στον οριζόντιο άξονα.)

(ε) Πραγματοποιήστε ένα t-test για το αν υπάρχει στατιστικά σημαντική διαφορά στη μέση αρτηριακή πίεση μεταξύ ατόμων με και χωρίς καρδιακή νόσο. Περάστε την τιμή του p-value στη μεταβλητή p. 

Άσκηση 9

Το αρχείο graduates.Rdata περιέχει ένα data.frame με ένα τυχαίο δείγμα από φοιτητές/απόφοιτους ενός ακαδημαϊκού τμήματος. Οι στήλες είναι ο Αριθμός Μητρώου, το φύλο, ο χρόνος πρώτης εγγραφής, ο χρόνος αποφοίτησης αν έχει αποφοιτήσει ή ο χρόνος διαγραφής αν έχει διαγραφεί, η ακαδημαϊκή κατάσταση (C=ενεργός φοιτητής, D=έχει διαγραφεί, G=έχει πάρει πτυχίο) και ο βαθμός πτυχίου αν έχει αποφοιτήσει.

Το αρχείο μπορεί να εισαχθεί με την εντολή load(“graduates.Rdata”).

(α) Προσθέστε μια μεταβλητή στο data.frame, με όνομα Duration που περιέχει τη διάρκεια σπουδών για όσους έχουν αποφοιτήσει (για τους διαγραφέντες και όσους συνεχίζουν θα είναι NA).

(β) Δημιουργήστε ένα πίνακα συχνοτήτων που περιέχει στοιχεία για τη διάρκεια λήψης πτυχίου ανά έτος εισαγωγής ως εξής: κάθε γραμμή του πίνακα περιέχει απόφοιτους που έχουν εισαχθεί κατά το έτος 2010, 2011, κλπ. Κάθε στήλη περιέχει τον αριθμό που μπήκαν στο τμήμα αυτή τη χρονιά και πήραν πτυχίο σε 4, 5, 6 ,… χρόνια. Επίσης ο πίνακας περιέχει τα αθροίσματα γραμμών στην τελευταία στήλη και τα αθροίσματα στηλών στην τελευταία γραμμή:

YearIn 4 5 6 7 Total
2010 25 30 35 15 105
2010 30 20 15 20 85
————- ————- —– —– —– —–
Total 55 50 50 35 190

(γ) Επαναλάβετε το ερώτημα (β) ανά έτος αποφοίτησης.

(δ) Προσθέστε μια μεταβλητή στο data.frame που περιέχει τον χαρακτηρισμό του πτυχίου σε Άριστα (>=8.5), Λίαν Καλώς (7-8.49) και Καλώς (5-6.99). Δημιουργήστε ένα πίνακα αντίστοιχο του ερωτήματος (γ) που περιέχει συχνότητες αποφοίτων με τον χαρακτηρισμό του πτυχίου, ανά έτος αποφοίτησης (μαζί με τα σύνολα γραμμών και στηλών).

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

(στ) Ελέγξτε σε επίπεδο σημαντικότητας 5% αν υπάρχει στατιστικά σημαντική διαφορά στο μέσο βαθμό πτυχίου ανάμεσα σε άντρες και γυναίκες αποφοίτους.

Άσκηση 10

Σκοπός της άσκησης είναι να ελέγξει μέσω προσομοίωσης ότι ο τύπος για το διάστημα εμπιστοσύνης του μέσου μιας κανονικής κατανομής με γνωστή διασπορά \[ \overline{x}_n \pm z_{1-\alpha/2} \frac{\sigma}{\sqrt{n}} \] όντως έχει πιθανότητα κάλυψης ίση με το επίπεδο εμπιστοσύνης \(1-\alpha\), όπου \(\overline{x}_n\) είναι ο δειγματικός μέσος ενός τυχαίου δείγματος μεγέθους \(n\) από την κανονική κατανομή με άγνωστη μέση τιμή \(\mu\) και γνωστή διασπορά \(\sigma^2\).

Δημιουργήστε μια συνάρτηση confintverify που παίρνει ως ορίσματα \(\mu, \sigma, \alpha, n, N\) και

  1. Δημιουργεί ένα πίνακα \(Ν\times n\) από \(N\) ανεξάρτητα μεταξύ τους τυχαία δείγματα μεγέθους \(n\) από την κανονική κατανομή \({\cal N}(\mu, \sigma^2)\) (αρκεί να δημιουργηθεί ένας πίνακας \(N\times n\) από αυτή την κανονική κατανομή).

  2. Για κάθε γραμμή του πίνακα (δηλαδή για καθένα από τα τυχαία δείγματα) υπολογίζει τα άκρα του \((1-\alpha)\cdot 100\%\) διαστήματος εμπιστοσύνης για το \(\mu\) χρησιμποιώντας τον παραπάνω τύπο.

  3. Δημιουργεί ένα data frame 3 στηλών, του οποίου οι δύο πρώτες στήλες περιέχουν τα άκρα των \(N\) διαστημάτων εμπιστοσύνης και η τρίτη στήλη τις λογικές μεταβλητές που δείχνουν αν κάθε ένα από τα \(N\) διαστήματα εμπιστοσύνης που έχουν υπολογιστεί περιέχει την πραγματική μέση τιμή \(\mu\).

  4. Υπολογίζει το ποσοστό \(p\) των διαστημάτων εμπιστοσύνης που καλύπτουν την πραγματική μέση τιμή \(\mu\).

Η συνάρτηση θα επιστρέφει ως αποτέλεσμα το ποσοστό κάλυψης \(p\).