Numpy Moving Average

Numpy Moving Average



Πριν ξεκινήσουμε το θέμα μας, ας καταλάβουμε ποιος είναι ο κινητός μέσος όρος. Στις στατιστικές, ο κινητός μέσος όρος είναι μια τεχνική για τον υπολογισμό και την ανάλυση σημείων δεδομένων. Υπολογίζει σημεία δεδομένων κάνοντας μια σειρά από έναν μέσο όρο διαφορετικών υποσυνόλων από ένα πλήρες σύνολο δεδομένων. Έτσι, ένας κινητός μέσος όρος είναι μια μέτρηση που συλλαμβάνει την τυπική αλλαγή σε μια σειρά πληροφοριών με την πάροδο του χρόνου. Η μετακίνηση είναι ένας από τους πιο ευέλικτους και συχνά χρησιμοποιούμενους δείκτες τεχνικής ανάλυσης. Δεδομένου ότι είναι τόσο απλό στη χρήση, οι επαγγελματίες επενδυτές το χρησιμοποιούν ως μέσο για ένα συγκεκριμένο σύνολο δεδομένων στις στατιστικές. Μπορούμε επίσης να υπολογίσουμε έναν κινητό μέσο όρο σε μικρότερο χρονικό διάστημα, χρησιμοποιώντας τον σε ημερήσια ή λεπτά δεδομένα. Για παράδειγμα: Κατά τον προσδιορισμό ενός κινητού μέσου όρου 10 ημερών, στην περίπτωσή μας, απλώς θα συνοψίσουμε τις τιμές κλεισίματος από οποιαδήποτε από τις προηγούμενες δέκα ημέρες και διαιρέστε το αποτέλεσμα με δέκα. Την επόμενη μέρα, θα υπολογίσουμε επίσης την τιμή τις τελευταίες δέκα ημέρες, που σημαίνει ότι δεν θα υπολογίσουμε την τιμή της πρώτης ημέρας. Θα αντικατασταθεί μάλλον από την χθεσινή μας τιμή. Τα δεδομένα αλλάζουν με αυτόν τον τρόπο με κάθε μέρα κίνησης, είναι γνωστό ως κινούμενος μέσος όρος για αυτό το λόγο. Ο σκοπός του κινητού μέσου όρου είναι να καθορίσει την αρχή μιας τάσης, στη συνέχεια να παρακολουθήσει την πρόοδό της και επίσης να αναφέρει την αντιστροφή της σε περίπτωση που συμβεί. Ο τύπος για τον υπολογισμό του κινητού μέσου όρου είναι Ft = (Dt1+Dt2+Dt3…+Dtn)/n. Όπου Dt είναι Ζήτηση στην περίοδο t και Ft Πρόβλεψη σε χρόνο t.

Σύνταξη:

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

Μέθοδος 1:

NumPy. cumsum ( )

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







Μέθοδος 2:

NumPy. και . μέση τιμή ( )

Έχει τις παρακάτω παραμέτρους.



α: δεδομένα σε μορφή πίνακα που πρόκειται να υπολογιστούν κατά μέσο όρο.



άξονας: ο τύπος δεδομένων του είναι int και είναι προαιρετική παράμετρος.





βάρος: είναι επίσης πίνακας και προαιρετική παράμετρος. Μπορεί να έχει το ίδιο σχήμα με ένα σχήμα 1-D. Στην περίπτωση μονοδιάστατου, πρέπει να έχει μήκος ίσο με αυτό του πίνακα 'a'.

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



Μέθοδος 3:

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

π.χ. συνέκλινε ( ένα , σε , τρόπος = 'γεμάτος' )

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

Παράδειγμα #01:

Τώρα, για να εξηγήσουμε περισσότερα σχετικά με τον κινητό μέσο όρο στο Numpy, ας δώσουμε ένα παράδειγμα. Σε αυτό το παράδειγμα, θα αφαιρέσουμε τον κινητό μέσο όρο ενός πίνακα με τη συνάρτηση συνέλιξης του NumPy. Έτσι, θα πάρουμε έναν πίνακα 'a' με στοιχεία 1,2,3,4,5. Τώρα, θα καλέσουμε τη συνάρτηση np.convolve και θα αποθηκεύσουμε την έξοδο της στη μεταβλητή «b». Μετά από αυτό, θα εκτυπώσουμε την τιμή της μεταβλητής μας 'b'. Αυτή η συνάρτηση θα υπολογίσει το κινούμενο άθροισμα του πίνακα εισόδου μας. Θα εκτυπώσουμε την έξοδο για να δούμε αν η έξοδος μας είναι σωστή ή όχι.

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

Για το σκοπό αυτό, έχουμε αρχικοποιήσει μια άλλη μεταβλητή 'denom' για τον παρονομαστή. Είναι απλό για την κατανόηση λίστας χρησιμοποιώντας το τέχνασμα εύρους. Ο πίνακας μας έχει πέντε διαφορετικά στοιχεία, επομένως ο αριθμός των δειγμάτων σε κάθε μέρος θα πάει από ένα σε πέντε και στη συνέχεια θα μειωθεί από πέντε σε ένα. Έτσι, απλώς θα προσθέσουμε δύο λίστες μαζί και θα τις αποθηκεύσουμε στην παράμετρό μας 'denom'. Τώρα, θα εκτυπώσουμε αυτήν τη μεταβλητή για να ελέγξουμε αν το σύστημα μας έχει δώσει τους πραγματικούς παρονομαστές ή όχι. Μετά από αυτό, θα διαιρέσουμε το κινούμενο άθροισμά μας με τους παρονομαστές και θα το εκτυπώσουμε αποθηκεύοντας την έξοδο στη μεταβλητή «c». Ας εκτελέσουμε τον κώδικα μας για να ελέγξουμε τα αποτελέσματα.

εισαγωγή μουδιασμένος όπως και π.χ.

ένα = [ 1 , δύο , 3 , 4 , 5 ]

σι = π.χ. συνέκλινε ( ένα , π.χ. ones_like ( ένα ) )

Τυπώνω ( 'Κινούμενο άθροισμα' , σι )

όνομα = λίστα ( εύρος ( 1 , 5 ) ) + λίστα ( εύρος ( 5 , 0 , - 1 ) )

Τυπώνω ( 'Παρονομαστές' , όνομα )

ντο = π.χ. συνέκλινε ( ένα , π.χ. ones_like ( ένα ) ) / όνομα

Τυπώνω ( 'Κινούμενος μέσος όρος' , ντο )

Μετά την επιτυχή εκτέλεση του κώδικά μας, θα έχουμε την παρακάτω έξοδο. Στην πρώτη γραμμή, έχουμε εκτυπώσει το «Κινούμενο Άθροισμα». Μπορούμε να δούμε ότι έχουμε '1' στην αρχή και '5' στο τέλος του πίνακα, όπως ακριβώς είχαμε στον αρχικό μας πίνακα. Οι υπόλοιποι αριθμοί είναι τα αθροίσματα διαφορετικών στοιχείων του πίνακα μας.

Για παράδειγμα, έξι στον τρίτο δείκτη του πίνακα προέρχονται από την προσθήκη 1,2 και 3 από τον πίνακα εισόδου μας. Το δέκα στον τέταρτο δείκτη προέρχεται από το 1,2,3 και το 4. Το δεκαπέντε προέρχεται από τη άθροιση όλων των αριθμών μαζί και ούτω καθεξής. Τώρα, στη δεύτερη γραμμή της εξόδου μας, έχουμε εκτυπώσει τους παρονομαστές του πίνακα μας.

Από την έξοδο μας, μπορούμε να δούμε ότι όλοι οι παρονομαστές είναι ακριβείς, πράγμα που σημαίνει ότι μπορούμε να τους διαιρέσουμε με τον πίνακα κινούμενου αθροίσματος. Τώρα, μεταβείτε στην τελευταία γραμμή της εξόδου. Στην τελευταία γραμμή, μπορούμε να δούμε ότι το πρώτο στοιχείο του πίνακα κινούμενου μέσου όρου μας είναι 1. Ο μέσος όρος του 1 είναι 1, επομένως το πρώτο μας στοιχείο είναι σωστό. Ο μέσος όρος 1+2/2 θα είναι 1,5. Μπορούμε να δούμε ότι το δεύτερο στοιχείο του πίνακα εξόδου μας είναι 1,5, επομένως ο δεύτερος μέσος όρος είναι επίσης σωστός. Ο μέσος όρος 1,2,3 θα είναι 6/3=2. Καθιστά επίσης σωστή την έξοδο μας. Έτσι, από την έξοδο, μπορούμε να πούμε ότι έχουμε υπολογίσει με επιτυχία τον κινητό μέσο όρο ενός πίνακα.

συμπέρασμα

Σε αυτόν τον οδηγό, μάθαμε για τους κινητούς μέσους όρους: τι είναι ο κινητός μέσος όρος, ποιες είναι οι χρήσεις του και πώς να υπολογίσουμε τον κινητό μέσο όρο. Το μελετήσαμε διεξοδικά τόσο από μαθηματική όσο και από προγραμματιστική άποψη. Στο NumPy, δεν υπάρχει συγκεκριμένη συνάρτηση ή διαδικασία για τον υπολογισμό του κινητού μέσου όρου. Υπάρχουν όμως διάφορες άλλες συναρτήσεις με τη βοήθεια των οποίων μπορούμε να υπολογίσουμε τον κινητό μέσο όρο. Κάναμε ένα παράδειγμα για να υπολογίσουμε τον κινητό μέσο όρο και περιγράψαμε κάθε βήμα του παραδείγματός μας. Οι κινητοί μέσοι όροι είναι μια χρήσιμη προσέγγιση για την πρόβλεψη μελλοντικών αποτελεσμάτων με τη βοήθεια των υπαρχόντων δεδομένων.