Tuesday, August 30, 2011

erre-master

Vediamo il codice postato ieri.

Qui carichiamo la libreria modeest, contenente la funzione mfv (most frequent value) usata più avanti
library(modeest) 
poi parametri
maxdicenum=200 
trials=5000 
quindi partiamo con un for riempiendo una lista, così da non dover pre-allocare vettori (certo è più lento... la comodità di ciò è che, se non applichiamo mean all'output di mfv, nel caso di più valori a parità di occorrenza, nella lista all'i-esimo posto viene scritto tutto il vettore dei vari valori risultanti... se non avete capito applicate mfv a un vettori dove le componenti più frequenti sono, a pari merito, più di una, per vedere che naturalmente la funzione ve le restituisce entrambe, e poi fate girare il ciclo qui sotto togliendo mean)
vallist=list() 
for(dicenum in 1:maxdicenum) { x=replicate(trials, sum(sample(1:6,dicenum,replace=T)))   
     vallist[[dicenum]]=mean(mfv(x))} 
Cerchiamo redenzione dal precedente uso del costrutto list convertendola in vettore con la comodissima funzione unlist

maxsum=unlist(vallist)    
Stampiamo i grafici; è sempre un enigma, all'inizio, orientarsi in R tra i modi di gestire i grafici... dopo lunghe e frustranti sofferenze, io consiglio il seguente modo
jpeg("dadiscatter.jpeg",width = 800, height = 800, units = "px",quality=100) 
plot(maxsum,main="Valore più frequente sommando i valori dati dal lancio di N dadi", xlab="Numero N di dadi", ylab="Valore più probabile" ,xlim=c(min(maxsum),max(maxsum))) 
dev.off() 
Pre-creazione del file, creazione del grafico, e infine dev.off per "buttarlo in memoria"...
jpeg("dadibarplot.jpeg",width = 800, height = 800, units = "px",quality=100) barplot(maxsum,main="Valore più frequente sommando i risultati del lancio di N dadi", xlab="Numero N di dadi", ylab="Valore più probabile" ,density=F, border=c("green","red","blue","orange", "purple"), names.arg=1:maxdicenum,axisnames=T,axis.lty=1) 
dev.off()


Se non ci sono domande, io avrei finito.

No comments:

Post a Comment