- sansindy2
- Posts : 7
Join date : 2014-06-03
η εντολή sample στην R
Tue 3 Jun 2014 - 16:03
Καλησπέρα!Θέλω την βοήθεια σας στο παρακάτω πρόβλημα!
Έχω 100 κάρτες αριθμημένες από το 1 έως το 100 .Τις ανακατεύω και έπειτα τις ανοίγω και θεωρώ επιτυχία όταν η i-κάρτα βρίσκεται στην i-θέση.Θέλω με προσομοίωση στην R να εκτιμήσω την μέση τιμή και την διασπορά του πλήθους των επιτυχιών.Χρησιμοποιώντας την εντολή sample παράγω πολλά δείγματα τυχαίων αριθμών.Το ερώτημα είναι πως μπορώ να καταλάβω τι κατανομή ακολουθούν τα δεδομένα μου έτσι ώστε μετά να κάνω 'ένα χ^2 test καλής προσαρμογής?
Έχω 100 κάρτες αριθμημένες από το 1 έως το 100 .Τις ανακατεύω και έπειτα τις ανοίγω και θεωρώ επιτυχία όταν η i-κάρτα βρίσκεται στην i-θέση.Θέλω με προσομοίωση στην R να εκτιμήσω την μέση τιμή και την διασπορά του πλήθους των επιτυχιών.Χρησιμοποιώντας την εντολή sample παράγω πολλά δείγματα τυχαίων αριθμών.Το ερώτημα είναι πως μπορώ να καταλάβω τι κατανομή ακολουθούν τα δεδομένα μου έτσι ώστε μετά να κάνω 'ένα χ^2 test καλής προσαρμογής?
- barney84
- Posts : 19
Join date : 2014-01-25
Re: η εντολή sample στην R
Tue 3 Jun 2014 - 18:15
Αν δεν κάνω λάθος βρίσκεται η κατανομή του αριθμού των επιτυχιών.
Θεωρώντας Α το ενδεχόμενο στην i θέση να έχεις τον αριθμό i τότε
p=P(A)=1/100, q=1-P(A)=99/100.
Άρα,ο αριθμός επιτυχιών θεωρώντας σαν επιτυχία όταν η i-κάρτα βρίσκεται στην i-θέση ακολουθεί Δυωνυμική (n=100,p=P(A)).
Αν δεν είναι λάθος αυτό που λέω, θα πρέπει με την προσομοίωση να βρίσκεις μ.τ. np και διασπορά npq.
Θεωρώντας Α το ενδεχόμενο στην i θέση να έχεις τον αριθμό i τότε
p=P(A)=1/100, q=1-P(A)=99/100.
Άρα,ο αριθμός επιτυχιών θεωρώντας σαν επιτυχία όταν η i-κάρτα βρίσκεται στην i-θέση ακολουθεί Δυωνυμική (n=100,p=P(A)).
Αν δεν είναι λάθος αυτό που λέω, θα πρέπει με την προσομοίωση να βρίσκεις μ.τ. np και διασπορά npq.
- sansindy2
- Posts : 7
Join date : 2014-06-03
Re: η εντολή sample στην R
Tue 3 Jun 2014 - 20:32
Ναι θεωρητικά έτσι όπως τα λες είναι!Όμως προγραμματιστικά δεν μπορώ να λάβω υπόψη μου ότι τα δεδομένα ακολούθούν δυωνυμική κατανομή εξαρχής.
Πρέπει να κάνω ένα πρόγραμμα έτσι ώστε να δημιουργεί διάφορα δείγματα με την εντολή sample και έπειτα με αυτά τα δείγματα να υποθέσω μια κατανομή και να κάνω για αυτήν χ^2 test προσαρμογής για να δω εάν είναι όντως αυτή η κατανομή!Μάλιsτα μου είπαν οτι μάλλον βγαίνει poisson ενώ θεωρητικά για μεγάλα n η δυωνυμική κατανομή πηγαίνει σε κανονική με μέση τιμή και διασπορά αυτά που μου έγγραψες.Το πρόβλημα ειναι ότι εγώ δημιουργώ αυτά τα δείγματα όμως δεν ξέρω πως να συνεχίσω μετά προγραμματιστικά.........
Πρέπει να κάνω ένα πρόγραμμα έτσι ώστε να δημιουργεί διάφορα δείγματα με την εντολή sample και έπειτα με αυτά τα δείγματα να υποθέσω μια κατανομή και να κάνω για αυτήν χ^2 test προσαρμογής για να δω εάν είναι όντως αυτή η κατανομή!Μάλιsτα μου είπαν οτι μάλλον βγαίνει poisson ενώ θεωρητικά για μεγάλα n η δυωνυμική κατανομή πηγαίνει σε κανονική με μέση τιμή και διασπορά αυτά που μου έγγραψες.Το πρόβλημα ειναι ότι εγώ δημιουργώ αυτά τα δείγματα όμως δεν ξέρω πως να συνεχίσω μετά προγραμματιστικά.........
- barney84
- Posts : 19
Join date : 2014-01-25
Re: η εντολή sample στην R
Tue 3 Jun 2014 - 22:10
Αν και δεν είμαι σίγουρος ότι έχω καταλάβει υποθέτω πως προσομοιώνεις κάτι τέτοιο
Και λες με ποια κατανομή θα το συγκρίνω. Αφού είναι διακριτή μπορείς να την συγκρίνεις και με την Poisson και αφού δεν ξέρεις ποια τιμή παίρνει η παράμετρος λ της Poisson,, πρέπει να κάνεις την σύγκριση με την Poisson(λκαπέλο) όπου το λκαπέλο είναι η εμπ που για την Poisson είναι η δειγματική μέση τιμή, δηλαδή το mean(counter).
Το counter είναι κάπως έτσι
κάπως έτσι
και αυτά θα είναι τα Oi στον τύπο
ενώ τα Ei θα είναι τα dpois(0, mean(counter), log = FALSE)*300
dpois(1, mean(counter), log = FALSE)*300 ... 1-ppois(3, mean(counter), log = FALSE)
Κάτι τέτοιο εννοείς ή το χω πάρει λάθος εξ αρχής;
- Code:
counter=0
for(j in 1:300){
temp=sample(c(1:100), 100, replace = FALSE, prob = NULL)
counter[j]=0
for(i in 1:100) {
if (temp[i]==i) counter[j]=counter[j]+1
}
}
counter
mean(counter)
var(counter)
Και λες με ποια κατανομή θα το συγκρίνω. Αφού είναι διακριτή μπορείς να την συγκρίνεις και με την Poisson και αφού δεν ξέρεις ποια τιμή παίρνει η παράμετρος λ της Poisson,, πρέπει να κάνεις την σύγκριση με την Poisson(λκαπέλο) όπου το λκαπέλο είναι η εμπ που για την Poisson είναι η δειγματική μέση τιμή, δηλαδή το mean(counter).
Το counter είναι κάπως έτσι
- Code:
1] 1 1 3 0 1 2 0 1 1 0 0 1 0 2 1 1 1 1 2 0 0 3 0 2 1 1 1 0 1 1 1 0 1 0 2 0 1
...
[297] 1 0 0 1
κάπως έτσι
- Code:
counter0=0
counter1=0
counter2=0
counter3=0
counter4=0
for(i in 1:300){
if(counter[i]==0) counter0=counter0+1 else if(counter[i]==1) counter1=counter1+1 else if(counter[i]==2) counter2=counter2+1 else if(counter[i]==3) counter3=counter3+1 else counter4=counter4+1}
και αυτά θα είναι τα Oi στον τύπο
ενώ τα Ei θα είναι τα dpois(0, mean(counter), log = FALSE)*300
dpois(1, mean(counter), log = FALSE)*300 ... 1-ppois(3, mean(counter), log = FALSE)
Κάτι τέτοιο εννοείς ή το χω πάρει λάθος εξ αρχής;
- sansindy2
- Posts : 7
Join date : 2014-06-03
Re: η εντολή sample στην R
Wed 4 Jun 2014 - 2:46
ναι σωστά κατάλαβες!εντάξει το έκανα!τελικά poisson είναι απλά μου φαίνεται περίεργο γιατί απο την διατύπωση μοιάζει για δυωνυμική,η οποία για n>>> πηγαινει σε κανονική κατανομή!Σε ευχαριστώ πολύ για την βοήθεια και τον χρόνο σου!!!
Re: η εντολή sample στην R
Wed 18 Jun 2014 - 1:27
φοβάμαι πως ειναι λάθος ο συλλογισμός και οι προτάσεις. Δεν εχεις ανεξάρτητες δοκιμές για να εχεις διωνυμική και η poisson δεν κολλάει. Ειναι δειγματοληψία χωρίς επανάθεση το προβλημα αυτό οδηγεί σε matching problem και matching distributions που λογικά δeν εχετε διδαχθεί αλλά ισως εχετε ακούσει το πρόβλημα της γραμματεώς, να βάλει ν γραμματα σε ν φακέλους με σωστό παραλήπτη.
Δείτε εδώ
http://mathforum.org/library/drmath/view/56592.html
κι εδώ
http://www.math.uah.edu/stat/urn/Matching.html
για να παέρτε μια ιδεά.
η κατανομή για μεγάλο n συγκλίνει στην poisson.
Στην R ο κωδικας ειναι πολύ πιο απλός από αυτόπν που περιγραφετε παραπάνω
Δείτε εδώ
http://mathforum.org/library/drmath/view/56592.html
κι εδώ
http://www.math.uah.edu/stat/urn/Matching.html
για να παέρτε μια ιδεά.
η κατανομή για μεγάλο n συγκλίνει στην poisson.
Στην R ο κωδικας ειναι πολύ πιο απλός από αυτόπν που περιγραφετε παραπάνω
- barney84
- Posts : 19
Join date : 2014-01-25
Re: η εντολή sample στην R
Wed 18 Jun 2014 - 9:54
Η αλήθεια είναι ότι και μένα ο συλλογισμός μου, μου φαινόταν λάθος (αφού όντως δεν είναι ανεξάρτητα) μέχρι που βρήκα αυτή την άσκηση
https://dl.dropboxusercontent.com/u/100247419/statff.JPG
(είναι απ'το βιβλίο Θεωρία Πιθανοτήτων και Εφαρμογές Χ. Χαραλαμπίδης)
η οποία είναι παρόμοια (εκτός κι αν δεν βλέπω κάτι καλά).
Πιθανόν βέβαια να είναι λάθος λυμένη.
https://dl.dropboxusercontent.com/u/100247419/statff.JPG
(είναι απ'το βιβλίο Θεωρία Πιθανοτήτων και Εφαρμογές Χ. Χαραλαμπίδης)
η οποία είναι παρόμοια (εκτός κι αν δεν βλέπω κάτι καλά).
Πιθανόν βέβαια να είναι λάθος λυμένη.
Re: η εντολή sample στην R
Wed 18 Jun 2014 - 16:28
η ασκηση δεν διευκρινίζει αν μιλάμε για επανάθεση ή όχι (τουλάχιστον στο κομμάτι που βλέπω). Αν υπάρχει επανάθεση τότε ειναι διωνυμική αλλά αν δεν υπάρχει τότε γινεται πιο συνθετο το πρόβλημα...
- barney84
- Posts : 19
Join date : 2014-01-25
Re: η εντολή sample στην R
Wed 18 Jun 2014 - 21:32
Δεν έχει άλλο κομμάτι η άσκηση, οπότε φαίνεται τελικά πως θεωρεί πως γίνεται με επανάθεση. Οπότε συγνώμη για την όποια σύγχυση.
Όσον αφορά τον κώδικα στην R το χω γενικά αυτό με τους μακροσκελείς κώδικες.
Όσον αφορά τον κώδικα στην R το χω γενικά αυτό με τους μακροσκελείς κώδικες.
- sansindy2
- Posts : 7
Join date : 2014-06-03
ypologismos pinaka stin R
Tue 3 Mar 2015 - 0:59
Καλησπέρα παιδιά!θέλω να κατασκευάσω στην R έναν πίνακα όπου στη κύρια διαγώνιο θα έχει το στοιχείο -1 στην υπερδιαγώνιο θα έζει μονάδες και η διάσταση του θα είναι (κ-1)*κ όπου κ πολύ μεγάλοσ αριθμός .μπορέι να μου πει κάποιος πως γίνεται γιατί προσπαθώ με τις εντολές for kai if και κάτι δεν μου πάει καλά.
Re: η εντολή sample στην R
Tue 17 Mar 2015 - 12:59
εννοείς ότι ο πινακας ειναι k(k-1) x k(k-1).
Δες αυτο με μικρο k για να χωρεσει εδω μέσα
k<-3
knew<-k*(k-1)
x<-diag(-1,knew)
xx<-rep(0,knew*knew)
xx[seq(2,(knew*knew),by=(knew+1))]<- 1
xx<-matrix(xx,knew,knew,byrow=TRUE)
x+xx
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -1 1 0 0 0 0
[2,] 0 -1 1 0 0 0
[3,] 0 0 -1 1 0 0
[4,] 0 0 0 -1 1 0
[5,] 0 0 0 0 -1 1
[6,] 0 0 0 0 0 -1
θα μπορουσε να απλοποιηθει και αλλο αλλα δεν ειμαι σιγουρος οτι καταλαβαινω τι θες.
Ελπίζω να βοηθαει αυτο
Δες αυτο με μικρο k για να χωρεσει εδω μέσα
k<-3
knew<-k*(k-1)
x<-diag(-1,knew)
xx<-rep(0,knew*knew)
xx[seq(2,(knew*knew),by=(knew+1))]<- 1
xx<-matrix(xx,knew,knew,byrow=TRUE)
x+xx
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -1 1 0 0 0 0
[2,] 0 -1 1 0 0 0
[3,] 0 0 -1 1 0 0
[4,] 0 0 0 -1 1 0
[5,] 0 0 0 0 -1 1
[6,] 0 0 0 0 0 -1
θα μπορουσε να απλοποιηθει και αλλο αλλα δεν ειμαι σιγουρος οτι καταλαβαινω τι θες.
Ελπίζω να βοηθαει αυτο
Permissions in this forum:
You cannot reply to topics in this forum