Εργαστήριο Ανώτερης Γεωδαισίας Μεταπτυχιακό Πρόγραµµα ΓΕΩΠΛΗΡΟΦΟΡΙΚΗΣ «Αναλυτικές Μέθοδοι στη Γεωπληροφορική» (Ακαδ. Έτος 2017-18) ΟΝΟΜΑΤΕΠΩΝΥΜΟ... ΕΞΑΜΗΝΟ... Ηµεροµηνία Παράδοσης : 28//2017 ΘΕΜΑΤΙΚΗ ΕΡΓΑΣΙΑ #2 Σκοπός: Η παρούσα θεµατική εργασία αποσκοπεί στην εξοικείωση σας µε τις δοµές των δεδοµένων στην R και τη χρήση τους για τη διαχείριση ποικιλίας δεδοµένων ως µονοδιάστατα ή πολυδιάστατα αντικείµενα. (a) ηµιουργήστε τα ακόλουθα διανύσµατα στο R: a = (5, 10, 15, 20,..., 160) και b = (87, 86, 85,..., 56). Πολλαπλασιάστε τα δυο διανύσµατα και καλέστε το αποτέλεσµα d. Επιλέξτε υποσύνολα του d για να προσδιορίσετε τα παρακάτω. 1. Ποια είναι τα 15 ο, 19 ο, 20 ο και ο στοιχεία του d; 2. Ποια είναι τα στοιχεία του d που είναι µικρότερα από 2000; 3. Πόσα στοιχεία του d είναι µεγαλύτερα από 6000; Υπάρχουν διάφορα απλά στατιστικά στοιχεία, καθώς µαθηµατικές και στατιστικές περιλήψεις που µπορούν να υπολογιστούν από ένα διάνυσµα. Χρησιµοποιήστε τα παραπάνω διανύσµατα a και b και υπολογίστε για το καθένα από αυτά: 4. Το άθροισµα και το γινόµενο των πρώτων 5 στοιχείων τους 5. Την ελάχιστη, τη µέγιστη τιµή και το εύρος ανάµεσα στα 15 πρώτα στοιχεία τους 6. ηµιουργήστε και εκτυπώστε ένα διάνυσµα τυχαίων τιµών (χρησιµοποιώντας την ενσωµατωµένη συνάρτηση rorm() του R), και ακολούθως υπολογίστε τη µέση τιµή, τη διάµεσο, την διασπορά και την τυπική απόκλιση των στοιχείων του διανύσµατος. Εκτυπώστε τις τιµές του διανύσµατος κατά αύξουσα σειρά. 7. Χρησιµοποιήστε το διάνυσµα d και υπολογίστε αντίστοιχα τη µέση τιµή, τη διάµεσο, την διασπορά και την τυπική απόκλιση των στοιχείων του διανύσµατος Χρησιµοποιήστε το διάνυσµα a και δηµιουργήσετε από τα στοιχεία του δύο πίνακες Α και ΑΑ διαστάσεων 8x4 και αντίστοιχα 4x8, όπου τα στοιχεία του a είναι διατεταγµένα στον Α ανά γραµµές και στον πίνακα ΑΑ ανά στήλες. Εκτυπώστε τους πίνακες Α και ΑΑ και ακολούθως 8. τις σειρές 2 έως 4 του πίνακα ΑΑ 9. τις σειρές 3 και 7 του πίνακα ΑΑ 10. τις σειρές 2 έως 4 από τις στήλες 1 και 3 του πίνακα ΑΑ Χρησιµοποιήστε το διάνυσµα b και δηµιουργήσετε από τα στοιχεία του έναν πίνακα ΒΒ διαστάσεων 4x8, όπου τα στοιχεία του b είναι διατεταγµένα στον BB ανά στήλες. Εκτυπώστε τον πίνακα ΒΒ και ακολούθως. εκτελέστε το γινόµενο Α*ΑΑ και ΑΑ*Α (µε την αναφερόµενη σειρά) των πινάκων Α και ΑΑ,. εκτελέστε το γινόµενο ΒΒ*Α (µε την αναφερόµενη σειρά) των πινάκων ΒΒ και Α, και καλέστε το αποτέλεσµα CC 13. υπολογίστε τα αθροίσµατα αντίστοιχα (i) των στοιχείων κάθε γραµµής, (ii) των στοιχείων κάθε στήλης, και (iii) όλων των στοιχείων του CC 14. υπολογίστε τα αθροίσµατα αντίστοιχα (i) των στοιχείων κάθε γραµµής, (ii) των στοιχείων κάθε στήλης, και (iii) όλων των στοιχείων του CC χρησιµοποιώντας τη συνάρτηση apply() της R.
(b) Θεωρείστε ένα διάνυσµα που τα στοιχεία του είναι διαδοχικές τιµές από 1 έως 20 και δηµιουργήστε από αυτό έναν πίνακα (matrix), µε ονοµασία x και διαστάσεις 4x5, και µε τις κατάλληλες εντολές βεβαιωθείτε ότι το αντικείµενο που δηµιουργήθηκε στο R είναι πράγµατι µια δοµή matrix µε διαστάσεις 4x5. Εκτυπώστε στην κονσόλα την εν λόγω δοµή. Ακολούθως δηµιουργήστε έναν πίνακα δεικτών, µε την ονοµασία idices µε διαστάσεις 3x2 και µε στοιχεία τις τιµές c(1:3,3:1). Εξάγεται, µε µια εντολή, τις τιµές από τον πίνακα x στις θέσεις που αντιστοιχούν στους δείκτες που περιέχονται στο διάνυσµα idices. Τέλος, αντικαταστήσετε τα εν λόγω στοιχεία στον πίνακα µε µηδενικές τιµές και εκτυπώστε τον πίνακα x προκειµένου να βεβαιωθείτε ότι η αντικατάσταση έγινε σωστά. ηµιουργήστε έναν πίνακα Α διαστάσεων 4x5 (π.χ. µε τυχαίες τιµές διατεταγµένες ανά στήλες), εκτυπώστε τα στοιχεία του και ακολούθως, µε την κατάλληλη εντολή εξάγετε τα στοιχεία του στις θέσεις (1,2), (1,3), (4,2), (4,3). Με µια παρόµοια εντολή αντικαταστήστε τα στοιχεία του πίνακα στις προαναφερόµενες θέσεις µε τιµές -2.56, εκτυπώστε εκ νέου τον πίνακα Α, καθώς και τα στοιχεία του στη γραµµή 4, µε κατάλληλες εντολές ώστε τα στοιχεία αυτά (i) να εκτυπωθούν ως διάνυσµα τιµών, και (ii) ως πίνακας διαστάσεων 1x5. ηµιουργήστε έναν νέο πίνακα Α2 διαστάσεων 4x5 (π.χ. µε διαδοχικές τιµές από έως 40 διατεταγµένες ανά στήλες). Εκτυπώστε τους πίνακες Α (στην τελευταία µορφή του από το προηγούµενο ερώτηµα) και Α2, ακολούθως συνενώστε τους δύο πίνακες χρησιµοποιώντας τις εντολές cbid και rbid και εκτυπώστε τις διαστάσεις των νέων δοµών που αυτές δηµιούργησαν. (c) Θεωρείστε ένα διάνυσµα που τα στοιχεία του είναι διαδοχικές τιµές από 1 έως 36 και δηµιουργήστε από αυτό µια συστοιχία (array), µε ονοµασία b και διαστάσεις (3,4,3), µε τις κατάλληλες εντολές βεβαιωθείτε ότι το αντικείµενο που δηµιουργήθηκε στο R είναι πράγµατι µια δοµή array µε διαστάσεις (3,4,2). Εκτυπώστε στην κονσόλα την εν λόγω δοµή, και ακολούθως τα στοιχεία στις θέσεις [1,1,1], [2,1,1], [2,4,2], [3,4,2], [2,,], [,,]. ηµιουργήστε µια τριδιάστατη συστοιχία (array) στοιχείων διαστάσεων, µε 24 στοιχεία χρησιµοποιώντας τη συνάρτηση dim(). Κάντε το ίδιο χρησιµοποιώντας τη συνάρτηση array(). Αντιστοιχίστε ορισµένα διαστάσεις (dimames) της επιλογής σας στη συστοιχία χρησιµοποιώντας τη συνάρτηση dimames(). Κάντε το ίδιο χρησιµοποιώντας τις παραµέτρους εισόδου της συνάρτησης array(). Αντί να διατάξετε τα 24 στοιχεία στην συστοιχία κατά στήλες, διατάξτε τα κατά γραµµές (δηλ. αναστροφή των στοιχείων). ηµιουργήστε ένα διάνυσµα 24 τυχαίων τιµών και εκχωρήστε τις τιµές σε µια µεταβλητή arr. Ορίστε τις διαστάσεις αυτής της µεταβλητής και µετατρέψτε την σε µια συστοιχία 3x2x4, προσθέτοντας δικές σας ονοµασίες (dimames) για τα στοιχεία κάθε διάστασης (γραµµές, στήλες, και επίπεδα). Εκτυπώστε ολόκληρη τη συστοιχία των τιµών, και ακολούθως 1. Εκτυπώστε µόνο τα στοιχεία του επιπέδου 2 (λαµβάνοντας υπόψη ότι η πρώτη διάσταση αντιπροσωπεύει σειρές, η δεύτερη στήλες και η τρίτη επίπεδο). 2. Εκτυπώστε µόνο τα στοιχεία του επιπέδου 1 και των στηλών 3 και 1. 3. Εκτυπώστε µόνο τα στοιχεία του επιπέδου 2, στήλης 4 και σειράς 2. 4. Επαναλάβετε τις εκτυπώσεις των στοιχείων από τα προηγούµενα υποερωτήµατα 1,2,3, αλλά αντί να χρησιµοποιήσετε δείκτες για να ανατρέξετε τη σειρά, τη στήλη και το επίπεδο, χρησιµοποιήστε dimames. Προσπαθήστε να δηµιουργήσετε πίνακες από τα παρακάτω διανύσµατα, δεσµεύοντάς τη διάταξή τους κατά στήλες (και επαναλάβατε τη διάταξη, ανά γραµµές) και µε κατάλληλες εντολές εξακριβώστε τον τρόπο της δοµής και τον χαρακτήρα των νέων αντικειµένων που δηµιουργήθηκαν, προσέχοντας από τα αποτελέσµατα πότε είναι πραγµατικά δυνατή η δέσµευση των διανυσµάτων σε έναν πίνακα. a <- 1:5 ; b <- 1:5 a <- 1:5 ; b <- c('1', '2', '3', '4', '5') a <- 1:5 ; b <- 1:4; c <- 1:3
Επαναλάβατε τον πίνακα a <- matrix(1:144, col=) από µόνο του, ανά στήλες, 3 φορές (δηλ. δηµιουργήστε έναν νέο πίνακα µε 36 στήλες). Συµβουλή: Αποφύγετε τη χρήση της συνάρτησης cbid()για να βρείτε µια αποτελεσµατική λύση, ενώ είναι δυνατές διάφορες άλλες λύσεις. ηµιουργήσετε νέα πλαίσια δεδοµένων από τα παρακάτω πλαίσια δεδοµένων, δεσµεύοντάς ως στήλες (και επαναλάβατε κατά γραµµές). Εξακριβώστε, µε κατάλληλες εντολές, αν είναι πραγµατικά δυνατή η δέσµευση των πλαισίων δεδοµένων, πιο είναι το προκύπτον πλαίσιο δεδοµένων και η εσωτερική δοµή του εκάστοτε νέου αντικειµένου που προκύπτει 1. a <- data.frame(v1=1:5, v2=letters[1:5]) ; b <- data.frame(var1=6:10, var2=letters[6:10]) 2. a <- data.frame(v1=1:6, v2=letters[1:6]) ; b <- data.frame(var1=6:10, var2=letters[6:10]) Στην προηγούµενη περίπτωση (1) χρησιµοποιήστε τη συνάρτηση cbid()για να προσθέσετε το διάνυσµα v3 <- 1:5 ως νέα µεταβλητή στο πλαίσιο δεδοµένων που δηµιουργήθηκε αρχικά. Ακολούθως εκτυπώστε τις στήλες v1, v3, v2 του νέου πλαισίου δεδοµένων. (d) ηµιουργήστε ένα πλαίσιο δεδοµένων, αποτελούµενο από τα παρακάτω επιµέρους δεδοµένα, και ακολούθως αντιστρέψτε τις τιµές των στοιχείων της µεταβλητής Diet για όλα τα άτοµα. Name <- c("alexis", "Lilly", "Markos", "Nikos", "Martha", "Lucas", "Ioaa") Age <- c(25, 31, 23, 52, 76, 49, 26) Height <- c(177, 163, 190, 179, 163, 183, 164) Weight <- c(57, 69, 83, 75, 70, 83, 53) Diet <- as.factor(c("no", "No", "Yes", "Yes", "No", "Yes", "No")) ηµιουργήστε ένα παρόµοιο πλαίσιο δεδοµένων, αποτελούµενο από τα παρακάτω επιµέρους δεδοµένα, Name <- c("alexis", "Lilly", "Markos", "Nikos", "Martha", "Lucas", "Ioaa") Workig <- c("morig", "Night", "Night", "Morig", "Morig", "Night", "Morig") εισάγοντας τη µεταβλητή Workig ως χαρακτήρα και όχι ως παράγοντα (factor). Προσθέστε αυτό το πλαίσιο δεδοµένων ως στήλη στο προηγούµενο. α) Πόσες σειρές και στήλες έχει το νέο πλαίσιο δεδοµένων; β) Ποια κατηγορία δεδοµένων υπάρχουν σε κάθε στήλη; γ) ανακατατάξτε τα στοιχεία του εν λόγω πλαισίου δεδοµένων µε βάση την σε αύξουσα σειρά των ηλικιών των ατόµων. ηµιουργήστε ένα πλαίσιο δεδοµένων από ένα πίνακα της επιλογής σας, αλλάξτε τα ονόµατα των γραµµών έτσι κάθε γραµµή να έχει ως ετικέτα obs_i (όπου i είναι ο αριθµός της εκάστοτε σειράς) και αλλάξτε τα ονόµατα των στηλών σε variable_i (όπου i είναι ο αριθµός της εκάστοτε στήλης). ηλαδή, για τη στήλη 1 θα πει variable_1, και για τη σειρά 2 θα πει obs_2 και ούτω καθεξής. α) ηµιουργήστε µια νέα µεταβλητή µε την ονοµασία Total, η οποία να είναι το άθροισµα των στοιχείων κάθε σειράς. β) Αλλάξτε της σειρά των στηλών έτσι ώστε η στήλη Total να γίνει η πρώτη µεταβλητή του πλαισίου των δεδοµένων. Ελέγξτε σε ποια κατηγορία δεδοµένων ανήκει το ενσωµατωµένο σύνολο δεδοµένων state.ceter που διατίθεται στο R και µετατρέψτε το σε πλαίσιο δεδοµένων και εκτυπώστε τα στοιχεία του. Ακολούθως µετατρέψτε το πλαίσιο δεδοµένων σε πίνακα και τυπώστε τον πίνακα που προκύπτει. Κατά παρόµοιο τρόπο ελέγξτε σε ποια κατηγορία δεδοµένων ανήκει το ενσωµατωµένο σύνολο δεδοµένων faithful που διατίθεται στο R και αναφέρονται σε δύο µεταβλητές waitig και eruptios- των εκτοξεύσεων νερού από έναν θερµοπίδακα στο εθνικό πάρκο Yellowstoe, των ΗΠΑ. Εξακριβώστε τα χαρακτηριστικά της δοµής των εν λόγω δεδοµένων και εκτυπώστε τις πρώτες 10 γραµµές των δεδοµένων. Προκειµένου να διαχειριστείτε το συγκεκριµένο σύνολο δεδοµένων, ενσωµατώστε το µε την εντολή attach(), δηµιουργείστε ένα ιστόγραµµα της µεταβλητής waitig, και αποκοµίστε κάποια στατιστικά
στοιχεία των δύο µεταβλητών (waitig και eruptios) χρησιµοποιώντας τις ενσωµατωµένες συναρτήσεις mea(), sd(), summary(). Εξακριβώστε σε πόσες παρατηρήσεις η χρονική περίοδος waitig είναι µικρότερη από 70, και επιπλέον σε ποια παρατήρηση παρατηρήθηκε η µεγαλύτερη τιµή waitig. i. Από το ενσωµατωµένο στο R σύνολο δεδοµένων airquality, εκτυπώστε αρχικά τις πρώτες 20 γραµµές των δεδοµένων και ακολούθως δηµιουργήστε ένα πλαίσιο δεδοµένων που να περιέχει µόνο τις γραµµές 1, 2, 3, 10,, και 13, και µόνο τις µεταβλητές Solar.R, Wid και Temp. Υποθέστε ότι η αναφερόµενη τιµή Temp στη γραµµή 2 είναι λανθασµένη, και γι αυτό αλλάξτε την σε NA. ii. ηµιουργήστε µια σειρά που τα στοιχεία της θα είναι το συνολικό άθροισµα της κάθε στήλης, και ονοµάστε την Total. Συµβουλή Βεβαιωθείτε ότι στις εντολές σας έχετε ενηµερώσει το R για την ύπαρξη τιµών NA στις διάφορες στήλες, ώστε αυτές να αγνοηθούν κατά τον υπολογισµό των αθροισµάτων. iii. ηµιουργήστε µια νέα µεταβλητή που θα είναι η αναλογία του Solar.R ως προς τη συνολική τιµή της αντίστοιχης στήλης (δηλ. Solar.R/Total Solar.R), καθώς επίσης την αναλογία του Temp ως προς τη συνολική τιµή της αντίστοιχης στήλης (δηλ. Temp/Total Temp). iv. Εξαλείψτε τη µεταβλητή Temp από το πλαίσιο δεδοµένων. Με µια εντολή εξαλείψτε ταυτόχρονα τις µεταβλητές Ozoe και Wid. Εκτυπώστε το πλαίσιο στην τρέχουσα µορφή του. v. Θεωρείστε το αρχικό πλαίσιο δεδοµένων airquality. Προσθέστε µια µεταβλητή στο εν λόγω πλαίσιο η οποία να χαρακτηρίζει το επίπεδο της ισχύος του ανέµου (δηλ. της µεταβλητής Wid): [0,1) είναι Low Wid, [1,2) είναι Some Wid, [2, if) είναι High Wid. Εκτυπώστε το πλαίσιο στην τρέχουσα µορφή του. (e) Θεωρείστε ότι από έναν χάρτη έχουν µετρηθεί 5 σηµεία, σχεδόν σε ευθεία γραµµή, µε τις συντεταγµένες τους (σε mm, στην κλίµακα του χάρτη) όπως φαίνεται παρακάτω. Σε αναζήτηση της αναλυτικής σχέσης y=mx + c της βέλτιστης ευθείας που διέρχεται από τα εν λόγω σηµεία, σχηµατίστηκε το ακόλουθο σύστηµα κανονικών εξισώσεων Nx = t, όπου N = x,x = x 1 2 m = c και t = t 1 t της µορφής 2 Σύµφωνα µε τη Μέθοδο των Ελαχίστων Τετραγώνων (ΜΕΤ), στην οποία θα αναφερθούµε διεξοδικότερα σε επόµενο µάθηµα, η ζητούµενη βέλτιστη λύση δίνεται από τη σχέση x = Ν -1 t, όπου στην προκειµένη περίπτωση µπορεί να δειχθεί ότι ο αντίστροφος πίνακας Ν -1 υπολογίζεται εύκολα από τη σχέση N 1 1 =. ( )
(i) Ζητείται, εισάγοντας µε κατάλληλο τρόπο όλα τα διαθέσιµα δεδοµένα στο R, να υπολογιστούν αρχικά εκτιµήσεις των άγνωστων παραµέτρων m και c της αναζητούµενης ευθείας, και ακολούθως να υπολογιστούν τα υπόλοιπα v i, i = 1, 2,, 5 των µετρήσεων (δηλ. οι αποκλίσεις v i = (mx i + c) - y i των µετρήσεων από το µοντέλο της ευθείας). (ii) Επαναλάβατε την προηγούµενη επίλυση του προβλήµατος, όπου αντί να χρησιµοποιήσετε τη σχέση N 1 1 = υπολογίστε τον αντίστροφο πίνακα Ν ( ) χρησιµοποιώντας τη συνάρτηση solve() που διατίθεται στην R για την αντιστροφή πινάκων ή/και την επίλυση κανονικών εξισώσεων. (iii) Θεωρήστε ότι όταν δίνουµε διαφορετικά βάρη στις µετρήσεις, όπως φαίνεται παραπλεύρως, το σύστηµα των κανονικών εξισώσεων γίνεται αντίστοιχα Ζητείται να επαναλάβετε τη λύση του προβλήµατος, µε τα νέα δεδοµένα, προκειµένου να υπολογίσετε εκ νέου τις εκτιµήσεις για τις παραµέτρους m και c, καθώς και τις αντίστοιχες τιµές των υπολοίπων v i. Σχολιάστε το µοντέλο της νέας ευθείας που υπολογίσατε, σε σύγκριση µε την ευθεία που υπολογίστηκε στο ερώτηµα (ii) χωρίς τη χρήση βαρών. Για όλα τα προηγούµενα ερωτήµατα, εµπλουτίστε τον κώδικα R που δηµιουργείτε σε κάθε βήµα εκτυπώνοντας τα ενδιάµεσα αποτελέσµατα (π.χ. δεδοµένα εισόδου, ενδιάµεσα και τελικά διανύσµατα και πίνακες τιµών, κλπ). (iv) Επαναλάβατε την επίλυση του συστήµατος των κανονικών εξισώσεων από το ερώτηµα (ii) ή (iii) χρησιµοποιώντας την ενσωµατωµένη συνάρτηση γραµµικής παλινδρόµησης lm() που διατίθεται στην R. Χρησιµοποιήστε την olie βοήθεια (help) του R για να δείτε πως ακριβώς πρέπει να την καλέσετε ώστε τα αποτελέσµατα να αποθηκευθούν σε µια µεταβλητή µε το όνοµα fit. Χρησιµοποιήστε την εντολή attributes(fit) για να δείτε τα αντικείµενα που περιέχονται στη µεταβλητή fit. Ακολούθως ανακτήστε τις παραµέτρους m και c (slope και itercept της ευθείας της παλινδρόµησης) χρησιµοποιώντας την εντολή ευρετηρίασης fit$coefficiets[ ] ή fit$coefficiets[[ ]] και αντίστοιχα τα υπόλοιπα των µετρήσεων χρησιµοποιώντας την εντολή fit$residuals. Τέλος, χρησιµοποιήστε την olie βοήθεια (help) του R για να δείτε πως ακριβώς πρέπει να καλέσετε τη συνάρτηση plot() ώστε να δηµιουργήσετε ένα γράφηµα των σηµείων των µετρήσεων και της γραµµής παλινδρόµησης. ΣΗΜΕΙΩΣΗ - Παραδώστε µια πλήρη Τεχνική Έκθεση που να περιέχει συνοπτικά τις δικές σας εµπειρίες και τυχόν παρατηρήσεις σας, καθώς και τα τυχόν προβλήµατα που αντιµετωπίσατε και πως τα παρακάµψατε. Συνιστάται η οργάνωση του περιεχοµένου της Τεχνικής Έκθεσης να είναι ως εάν σας ζητήθηκε να γράψετε ένα συνοπτικό εγχειρίδιο για νέους χρήστες του R. Στην Τεχνική Έκθεση θα πρέπει να συµπεριληφθούν τα εκάστοτε.rhistory αρχεία που θα προκύψουν από τις ξεχωριστές συνεδρίες του R που διεκπεραιώσατε για την υλοποίηση κάθε µέρους της Θεµατικής Εργασίας.