Title: | Libreria Del Laboratorio Di Statistica Con R |
---|---|
Description: | Insieme di funzioni di supporto al volume "Laboratorio di Statistica con R", Iacus-Masarotto, MacGraw-Hill Italia, 2006. This package contains sets of functions defined in "Laboratorio di Statistica con R", Iacus-Masarotto, MacGraw-Hill Italia, 2006. Function names and docs are in italian as well. |
Authors: | Stefano M.Iacus <[email protected]> and Guido Masarotto <[email protected]> |
Maintainer: | Stefano M. Iacus <[email protected]> |
License: | GPL (>= 2) |
Version: | 1.0.14 |
Built: | 2025-01-25 04:48:41 UTC |
Source: | https://github.com/siacus/labstatr |
Questa funzione risolve il problema del calcolo della probabilita'
di trovare due persone in un gruppo di n
nate lo stesso
giorno.
birthday(n)
birthday(n)
n |
numero di persone nel gruppo |
n <- c(5,10,15,20,21,22,23,24,25,30,50,60, 70,80,90,100,200,300,365) for(i in n) cat("\n n=",i,"P(A)=",birthday(i))
n <- c(5,10,15,20,21,22,23,24,25,30,50,60, 70,80,90,100,200,300,365) for(i in n) cat("\n n=",i,"P(A)=",birthday(i))
Questa funzione disegna un grafico a bolle (bubbleplot) a partire da una tabella a doppia entrata.
bubbleplot(tab, joint = TRUE, magnify = 1, filled = TRUE, main = "bubble plot")
bubbleplot(tab, joint = TRUE, magnify = 1, filled = TRUE, main = "bubble plot")
tab |
tabella di contingenza a due vie |
joint |
valore logico. Se |
magnify |
parametro per il controllo dell'ampiezza delle bolle |
filled |
valore logico. Se |
main |
titolo del grafico |
x <- c("O","O","S","B","S","O","B","B","S", "B","O","B","B","O","S") y <- c("O","B","B","B","S","S","O","O","B", "B","O","S","B","S","B") x <- ordered(x, levels=c("S","B","O")) y <- ordered(y, levels=c("S","B","O")) table(x,y) bubbleplot(table(x,y),main="Musica versus Pittura")
x <- c("O","O","S","B","S","O","B","B","S", "B","O","B","B","O","S") y <- c("O","B","B","B","S","S","O","O","B", "B","O","S","B","S","B") x <- ordered(x, levels=c("S","B","O")) y <- ordered(y, levels=c("S","B","O")) table(x,y) bubbleplot(table(x,y),main="Musica versus Pittura")
Questa funzione permette il calcolo dell'indice di connessione.
chi2(x,y)
chi2(x,y)
x |
vettore di dati |
y |
vettore di dati |
x <- rbinom(8,5,0.5) y <- c("A", "A", "B", "A", "B", "B", "C", "B") chi2(x,y)
x <- rbinom(8,5,0.5) y <- c("A", "A", "B", "A", "B", "B", "C", "B") chi2(x,y)
Questa funzione permette il calcolo della covarianza non corretta.
COV(x,y)
COV(x,y)
x |
vettore di dati |
y |
vettore di dati |
La funzione cov
di R effettua il calcolo della varianza campionaria,
ovvero divide la codevianza per il numero di dati meno uno. Questa funzione
invece divide la codevianza per ll numero di dati a disposizione.
cov
.
x <- c(1,3,2,4,6,7) y <- c(7,3,2,1,-1,-3) cov(x,y) COV(x,y)
x <- c(1,3,2,4,6,7) y <- c(7,3,2,1,-1,-3) cov(x,y) COV(x,y)
Questa funzione permette il calcolo del coefficiente di variazione.
cv(x)
cv(x)
x |
vettore di dati |
x <- c(1,3,2,4,6,7) cv(x)
x <- c(1,3,2,4,6,7) cv(x)
Questa funzione permette il calcolo dell'indice di eterogeneita' di Gini.
E(x)
E(x)
x |
vettore di dati |
var
.
x <- c("A", "A", "B", "A", "C", "A") E(x)
x <- c("A", "A", "B", "A", "C", "A") E(x)
Questa funzione permette il calcolo dell'indice di dipendenza in media e traccia il grafico della funzione di regressione.
eta(x,y)
eta(x,y)
x |
vettore di dati eventualmente qualitativo |
y |
vettore di dati numerico |
Questa funzione considera la dipendenza in media di y
da x
.
x <- c(rep(1,10),rep(0,23), rep(2,15)) y <- c(rnorm(10,mean=7),rnorm(23,mean=19),rnorm(15,mean=17)) eta(x,y) y <- c(rnorm(10,mean=8),rnorm(23,mean=7),rnorm(15,mean=6.5)) eta(x,y)
x <- c(rep(1,10),rep(0,23), rep(2,15)) y <- c(rnorm(10,mean=7),rnorm(23,mean=19),rnorm(15,mean=17)) eta(x,y) y <- c(rnorm(10,mean=8),rnorm(23,mean=7),rnorm(15,mean=6.5)) eta(x,y)
Questa funzione permette di simulare un valore da una variabile casuale discreta con distribuzione di probabilita' assegnata.
gen.vc(x,p)
gen.vc(x,p)
x |
valori assumibili dalla variabile casuale |
p |
distribuzione di probabilita' |
La funzione restituisce un numero casuale.
x <- c(-2,3,7,10,12) p <- c(0.2, 0.1, 0.4, 0.2, 0.1) y <- NULL for(i in 1:1000) y <- c(y,gen.vc(x,p)) table(y)/length(y)
x <- c(-2,3,7,10,12) p <- c(0.2, 0.1, 0.4, 0.2, 0.1) y <- NULL for(i in 1:1000) y <- c(y,gen.vc(x,p)) table(y)/length(y)
Questa funzione permette il calcolo l'indice di concentrazione e il rapporto di concentrazione di Gini. Inoltre disegna la curva di Lorenz.
gini(x, plot=TRUE, add=FALSE, col="black")
gini(x, plot=TRUE, add=FALSE, col="black")
x |
vettore di dati |
plot |
valore logico. Se |
add |
valore logico. Se |
col |
colore con cui disegnare l'area di concentrazione |
x <- c(1,3,4,30,100) gini(x) y <- c(10,10,10,10) gini(y, add=TRUE,col="red")
x <- c(1,3,4,30,100) gini(x) y <- c(10,10,10,10) gini(y, add=TRUE,col="red")
Questa funzione simula la scommessa di de Mere calcolando la probabilita' di fare almeno un 6 in 4 lanci di un dado regolare.
gioco1(prove=10000) gioco1a(prove=10000)
gioco1(prove=10000) gioco1a(prove=10000)
prove |
numero di prove da utilizzare nella simulazione |
La versione gioco1
della funzione non e' efficiente in termini di
velocita' in quanto vengono impiegati cicli for
. Si noti la
differenza in termini di velocita' con la version gioco1a
.
ptm <- proc.time() gioco1a(10000) proc.time() - ptm ptm <- proc.time() gioco1(10000) proc.time() - ptm
ptm <- proc.time() gioco1a(10000) proc.time() - ptm ptm <- proc.time() gioco1(10000) proc.time() - ptm
Questa funzione simula la scommessa di de Mere calcolando la probabilita' di fare almeno un doppio 6 in 24 lanci di un dado regolare.
gioco2(prove=10000) gioco2a(prove=10000)
gioco2(prove=10000) gioco2a(prove=10000)
prove |
numero di prove da utilizzare nella simulazione |
La versione gioco2
della funzione non e' efficiente in termini di
velocita' in quanto vengono impiegati cicli for
. Si noti la
differenza in termini di velocita' con la version gioco2a
.
ptm <- proc.time() gioco2a(10000) proc.time() - ptm ptm <- proc.time() gioco2(10000) proc.time() - ptm
ptm <- proc.time() gioco2a(10000) proc.time() - ptm ptm <- proc.time() gioco2(10000) proc.time() - ptm
Questa funzione disegna l'istogramma e vi sovrappone il corrispondente poligono di frequenza.
histpf(x, br, ...)
histpf(x, br, ...)
x |
vettore di dati |
br |
numero di intervalli, metodo di scelta degli intervalli o vettore di estremi degli intervalli |
... |
argomenti da passare alla funzione |
Il parametro br
si comporta esattamente come il parametro
breaks
della funzione hist
.
hist
.
x <- rnorm(50) histpf(x,br=5)
x <- rnorm(50) histpf(x,br=5)
Questa funzione effettua il calcolo dell'intervallo di confidenza per la varianza di campione gaussiano.
ic.var(x, twosides = TRUE, conf.level = 0.95)
ic.var(x, twosides = TRUE, conf.level = 0.95)
x |
vettore di dati |
twosides |
logico. Se |
conf.level |
livello confidenza |
x <- c(0.39, 0.68, 0.82, 1.35, 1.38, 1.62, 1.70, 1.71, 1.85, 2.14, 2.89, 3.69) ic.var(x) ic.var(x,FALSE)
x <- c(0.39, 0.68, 0.82, 1.35, 1.38, 1.62, 1.70, 1.71, 1.85, 2.14, 2.89, 3.69) ic.var(x) ic.var(x,FALSE)
Si tratta di un campione di dati relativi agli iscritti ed avviati alle missioni di una societa' di fornitura di lavoro interinale.
data(interinale)
data(interinale)
Dataset tratti dall'archivio di una societa' interinale italiana.
Iacus, S.M., Porro, G. (2001)
Iacus, S.M., Porro, G. (2001) Occupazione interinale e terzo settore. Analisi dei microdati di una societa' “no profit” di fornitura di lavoro interinale, IRES Quaderno n.2, IRES-Lombardia.
data(interinale) glm(avviato~., binomial, data=interinale) -> model model pr <- predict(model, type="response") plot(density(pr),xlim=c(0,0.2),main="")
data(interinale) glm(avviato~., binomial, data=interinale) -> model model pr <- predict(model, type="response") plot(density(pr),xlim=c(0,0.2),main="")
Questa funzione permette il calcolo dell'indice di curtosi.
kurt(x)
kurt(x)
x |
vettore di dati |
skew
.
x <- rnorm(50) kurt(x) y <- rt(50,df=1) kurt(y)
x <- rnorm(50) kurt(x) y <- rt(50,df=1) kurt(y)
Questa funzione simula un processo di Poisson non omogeneo.
lewis(T, lambda, plot.int = TRUE)
lewis(T, lambda, plot.int = TRUE)
T |
orizzonte temporale |
lambda |
funzione di intensita' |
plot.int |
se |
Disegna una traiettoria di un processo di Poisson non omogeneo
con funzione di intensita' lambda
(che deve essere una
funzione di una variabile) nell'intervallo (0,T
).
lewis(20,sin)
lewis(20,sin)
Questa funzione simula una catena di Markov a stati finiti.
Markov(x0, n, x, P)
Markov(x0, n, x, P)
x0 |
stato iniziale |
n |
lunghezza della traiettoria |
x |
insieme degli stati |
P |
matrice di probabilita' di transizione |
La funzione Markov2
e' basata sulla funzione sample
.
Una lista contente la traiettoria della catena di Markov:
X |
valori assunti dalla catena di Markov |
t |
tempi |
x <- c("P","S","N") P <- matrix(c(0.5,0.5,0.25,0.25,0,0.25,0.25,0.5,0.5),3,3) Markov("S",15,x,P) -> traj traj plot(traj$t,unclass(factor(traj$X)),type="s",axes=FALSE, xlab="t",ylab="Che tempo fa'") axis(1) axis(2,c(1,2,3),levels(factor(traj$X))) box()
x <- c("P","S","N") P <- matrix(c(0.5,0.5,0.25,0.25,0,0.25,0.25,0.5,0.5),3,3) Markov("S",15,x,P) -> traj traj plot(traj$t,unclass(factor(traj$X)),type="s",axes=FALSE, xlab="t",ylab="Che tempo fa'") axis(1) axis(2,c(1,2,3),levels(factor(traj$X))) box()
Questa funzione permette il calcolo della mediana anche nel caso di fenomeni qualitativi ordinabili.
Me(x)
Me(x)
x |
vettore di dati |
La funzione median
di R contenuta nel pacchetto base
funziona solo per dati quantitativi. La funzione Me
restituisce un messaggio d'errore se la mediana risulta indeterminata.
x <- factor(c("A", "B", "A", "C", "A")) Me(x)
x <- factor(c("A", "B", "A", "C", "A")) Me(x)
Questa funzione permette il calcolo della media armonica.
meana(x, ...)
meana(x, ...)
x |
vettore di dati |
... |
parametri aggiuntivi (ignorati in questa versione) |
x <- c(1,3,2,4,6,7) meana(x)
x <- c(1,3,2,4,6,7) meana(x)
Questa funzione permette il calcolo della media geometrica.
meang(x,...)
meang(x,...)
x |
vettore di dati |
... |
parametri aggiuntivi (ignorati in questa versione) |
x <- c(1,3,2,4,6,7) meang(x)
x <- c(1,3,2,4,6,7) meang(x)
Questa funzione permette il calcolo dell'allocazione ottimale di due titoli di un portafoglio.
Rp(x,y,pxy)
Rp(x,y,pxy)
x |
rendimenti del primo titolo |
y |
rendimenti del secondo titolo |
pxy |
distribuzione doppia dei due titoli |
La funzione restituisce rendimento medio e varianza attesa del portafoglio allocato in modo ottimo. Restituisce inoltre il valore ottimo di capitale da allocare nel primo titolo.
Una lista contente media e varianza del rendimento del portafoglio:
a |
quota ottimale da allocare nel primo titolo |
Rm |
rendimento medio. |
VR |
varianza del portafolio. |
Rpa
.
x <- c(11,9,25,7,-2)/100 y <- c(-3,15,2,20,6)/100 pxy <- matrix(rep(0,25),5,5) pxy[1,1] <- 0.2 pxy[2,2] <- 0.2 pxy[3,3] <- 0.2 pxy[4,4] <- 0.2 pxy[5,5] <- 0.2 Rp(x,y,pxy)
x <- c(11,9,25,7,-2)/100 y <- c(-3,15,2,20,6)/100 pxy <- matrix(rep(0,25),5,5) pxy[1,1] <- 0.2 pxy[2,2] <- 0.2 pxy[3,3] <- 0.2 pxy[4,4] <- 0.2 pxy[5,5] <- 0.2 Rp(x,y,pxy)
Questa funzione permette il calcolo del rendimento atteso di un portafoglio di due titoli al variare della quantita' allocata nei due titoli.
Rpa(a,x,y,pxy)
Rpa(a,x,y,pxy)
a |
percentuale allocata al primo titolo |
x |
rendimenti del primo titolo |
y |
rendimenti del secondo titolo |
pxy |
distribuzione doppia dei due titoli |
La funzione restituisce rendimento medio e varianza attesa del portafoglio.
Una lista contente media e varianza del rendimento del portafoglio:
Rm |
rendimento medio. |
VR |
varianza del portafolio. |
Rp
.
x <- c(11,9,25,7,-2)/100 y <- c(-3,15,2,20,6)/100 pxy <- matrix(rep(0,25),5,5) pxy[1,1] <- 0.2 pxy[2,2] <- 0.2 pxy[3,3] <- 0.2 pxy[4,4] <- 0.2 pxy[5,5] <- 0.2 Rpa(0.1,x,y,pxy) Rpa(0.5,x,y,pxy)
x <- c(11,9,25,7,-2)/100 y <- c(-3,15,2,20,6)/100 pxy <- matrix(rep(0,25),5,5) pxy[1,1] <- 0.2 pxy[2,2] <- 0.2 pxy[3,3] <- 0.2 pxy[4,4] <- 0.2 pxy[5,5] <- 0.2 Rpa(0.1,x,y,pxy) Rpa(0.5,x,y,pxy)
Questa funzione calcola la varianza non corretta.
sigma2(x)
sigma2(x)
x |
vettore di dati |
La funzione var
di R calcola la varianza campionaria corretta, ovvero
dividendo la devianza per il numero di elementi del campione meno uno. Questa
funzione calcola la varianza dividendo la stessa quantita' per il numero
totale di osservazioni.
x <- rnorm(10) var(x) sigma2(x)
x <- rnorm(10) var(x) sigma2(x)
Questa funzione permette il calcolo dell'indice di asimmetria.
skew(x)
skew(x)
x |
vettore di dati |
kurt
.
x <- rnorm(50) skew(x) y <- rchisq(50,df=1) skew(y)
x <- rnorm(50) skew(x) y <- rchisq(50,df=1) skew(y)
Questa funzione effettua il calcolo dell'intervallo di confidenza per la varianza di campione gaussiano.
test.var(x, var0, alternative = "greater", alpha = 0.05)
test.var(x, var0, alternative = "greater", alpha = 0.05)
x |
vettore di dati |
var0 |
valore della varianza sotto l'ipotesi nulla |
alternative |
direzione del test |
alpha |
ampiezza del test |
x <- rnorm(100, sd=5) var(x) test.var(x,20) test.var(x,20,alternative="less")
x <- rnorm(100, sd=5) var(x) test.var(x,20) test.var(x,20,alternative="less")
Questa funzione simula un processo di diffusione.
trajectory(x0=1,t0=0,T=1,a,b,n=100)
trajectory(x0=1,t0=0,T=1,a,b,n=100)
x0 |
stato iniziale |
t0 |
istante iniziale |
T |
istante finale |
a |
coefficiente di deriva |
b |
coefficiente di diffusione |
n |
numero di valori in cui suddividere l'intervallo ( |
I due coefficienti di deriva e diffusione devono essere funzioni di due
variabili x
e t
. La funzione utilizza lo schema di Eulero
quindi il processo da simulare deve rispettare le opportune ipotesi sui
coefficienti dell'equazione differenziale stocastica.
Una lista contente la traiettoria del processo di diffusione:
t |
vettore dei tempi |
y |
valori assunti dall traiettoria |
n <- 100 T <- 1 x0 <- 1 mu <- function(x,t) {-x*t} sigma <- function(x,t) {x*t} diff <- trajectory(1,0,1,mu,sigma,100) plot(diff$t,diff$y,type="l") acf(diff$y, main="Processo di diffusione")
n <- 100 T <- 1 x0 <- 1 mu <- function(x,t) {-x*t} sigma <- function(x,t) {x*t} diff <- trajectory(1,0,1,mu,sigma,100) plot(diff$t,diff$y,type="l") acf(diff$y, main="Processo di diffusione")