Estratto del documento

OPERATORI LOGICI

x & y , x | y , x ! y | x != y diversoand or not

ARROTONDARE

round(x, n° decimale), ceiling(), floor()

FUNZIONI MATEMATICHE

abs, sign, sqrt, exp, log, log10Inf, pi, NaN, choose(n, x), sin, cos, tan, factorial, NA∞ π indef. x! not available

TIPI DI DATO

numeric, character, logical, complex, mavector, list, finite, infinite, null, nanfactor, ordered

VETTORI

x = c(...) un solo tipo (o numeric o character)vector("tipo", lunghezza) lo crea vuotoas.vector(x, "tipo") trasforma xany di default

NOMI ELEMENTI VETTORE names(x) anche x RINOMINARELUNGHEZZA length(x)TIPOLOGIA mode(x) oppure class(x)

SEQUENZE

x = a:b x = seq(a, b, by = 1, length = u)intervallo quanti numeri tra a e b

LISTE

list(..., ..., ...) ≠ tipiCREARE LISTA VUOTA vector(mode = "list")names(x), length(x)

FACTOR

x = c(...) factor(x) VARIABILE CATEGORIALE non ordinatafactor(x, levels = c(..., ...)) as.factor(x) trasformalevels(y) = levels(factor(x)) ➔ NOMI delle categorie

ORDERED

x = c(...) ordered(x) VARIABILE CATEGORIALE ORDINATAordered(x, levels = c(...)) specifico le categorielevels(ordered(x)) in ordine

FREQUENZE

x = factor o orderedtable(x) ➔ vettore di f. assolutenames(table(x)) nomi categorie

OPERATORI LOGICI

x & y, x | y, x ! y | x != y diverso

and or not

ARROTONDARE

round(x, n°decimale), ceiling(), floor()

FUNZIONI MATEMATICHE

abs, sign, sqrt, exp, log, log10

Inf, pi, NaN, choose(n, x), sin, cos, tan, factorial, NA not available

∞ π indef. (n x)

x2 ex ln

TIPI DI DATO

numeric, character, logical, complex, ma

vector, list, finite, infinite, nulle, non

factor, ordered

VETTORI

x = c(...) un solo tipo (o numeric o character)

vector("tipo", lunghezza) lo crea vuoto

as.vector(x, "tipo") trasforma x ↓ any di default

NOMI ELEMENTI VETTORE

names(x) anche x RINOMINARE

LUNGHEZZA

length(x)

TIPOLOGIA

mode(x) oppure class(x)

SEQUENZE

x = a : b

x = seq(a, b, by = 1, length = n)

intervallo quanti numeri tra a e b

LISTE

list(..., ..., ...) # tipi

CREARE LISTA VUOTA

vector(mode = "list")

names(x), length(x)

FACTOR

x = c(...) factor(x) VARIABILE CATEGORIALE non ordinata

factor(x, levels = c(..., ...))

levels(y) = levels(factor(x)) → NOMI delle CATEGORIE

as.factor(x) trasforma

ORDERED

x = c(...) ordered(x) VARIABILE CATEGORIALE ORDINATA

ordered(x, levels = c(...)) specifico le categorie in ordine

levels(ordered(x))

FREQUENZE

x = factor o ordered

table(x) = vettore di f.assolute names(table(x))

nomi categorie

OGGETTI

objects() o ls()

elenco di tutti gli oggetti salvati nella memoria di lavoro

RIMUOVERE VARIABILE

rm(x) solo xrm(list = ls()) tutte

CONDIZIONI

is.tipoVariabile(x) restituisce TRUE/FALSE se x è quel tipo o no

all(condizione su x) → TRUE/FALSE se x soddisfanoany(condizione su x) → TRUE/FALSE se almeno una soddisfa

ORDINAMENTO

x = c(...)sort(x, decreasing = FALSE) crescente= TRUE decrescente

INDICI DEI VALORI ORDINATI

order(x, decreasing = F)= T

RIPETIZIONE

rep(cosa ripetere, quante volte)

c(...)x

c(2, 2, 2)times = 2

SUBSETTING VETTORI

x = c(...)

  • x[indici] VALORI CORRISP. A QUESTI INDICI
  • un solo valore → un numeroa:b dal a-esimo al b-esimo
  • indici = which(condizione)
  • INDICE VAL.MAX = which.max(x)
  • x[-indici] TUTTI I VALORI TRANNE QUELLI INDICATI
  • x[condizione] TUTTI I VALORI CHE SODDISFANO COND.
  • x[which(condiz)] condizione & condizionex più condizione
  • PER NOME x[c("nome_elem1","nome_elem5")]
  • PER T/F x[c(FALSE, TRUE, FALSE, TRUE)]
  • di un vettore di 4 elemrestituisce i valori di quello con TRUE

SUBSETTING LISTE

y = list(..)

  • y[[indici]] elementi corrispondenti a quegli indici
  • y$nome_elemento
  • PER ACCEDERE AD UN VALORE DI UN VETTORE NELLA LISTAy[[ind.lista]][i.vet]y$nomevett[i]

ESPRESSIoNI MATEMATICHE

x[m] → xm, bar(x)

LETTERE

letters (1:6) prime 6 lettere alfabeto

DIFF

diff (vettori) c(a',b) → b-a

RANGE

range (x) → (min, max)

↳ x = c(..)

DUPLICATED

duplicated (x) → VETTORE di TRUE/FALSE dove TRUE sono i valori doppi

PASTE

UNISCE I VARI CARATTERI IN UN UNICO "NOME"

paste (x, "ciao", "%", "\n"..., sep = " ")

↳ a capo

di default c'è lo spazio

ANALISI DATI

TABELLA → DATA.FRAME

m = length (df $col) = sum (.fi)

fi = table (x) FREQUENZE ASSOLUTE (per DATAFRAME o FACTOR)

Pi = fi/m = table(x) / sum(fi) FREQ. RELATIVE

Fi = cumsum (pi) FREQ. CUMULATE RELATIVE

wi = xi+1 - xi = diff (estremi) AMPIEZZA CLASSI

ci = Pi/wi DENSITÀ DI FREQUENZA

ECDF (rep (x; .fi)) FUNZIONE DI RIPARTIZIONE EMPIRICA

CREO CLASSI

x = c(...) dati , estremi = c(...)

classi = cut (x , breaks = estremi, include.lowest = F, right = T)

chiuso a DX

OPERAZIONI TRA VETTORI

VETTORE NORMALE = V. COLONNA

ADDIZIONE

  • TRA 2 VETTORI

    x + y = (x1 + y1 xm + ym)

    UGUALE LUNGHEZZA

  • PER UNO SCALARE

    c + x = (c + x1 c + xm)

MOLTIPLICAZIONE

  • TRA DUE VETTORI (PRODOTTO SCALARE)

    x · y = (x1 · y1 xm ym)

    UGUALE LUNGHEZZA

  • PER UNO SCALARE

    c x = (c x1 c xm)

PRODOTTO VETTORIALE

RIGA × COLONNA o COLONNA × RIGA

t(x) * y

x * t(y)

RISULTATO: m RIGHE x

m × m

RISULTATO: m RIGHE x

m COLONNE y

m COLONNE y

DATA.FRAME

df = data.frame(x, y) dove x e y

  • VETTORI
  • FACTOR
  • ORDERED...

names(df)

POSSO RIASSUMERLI

SUBSETTING DF

subset(df, subset = condizioni , select = nomecolonna)

OPPURE

df$nomecol o df[[indicecolonna]]

OPPURE

df[indiceriga, indicecolonna]

MATRICI

mat = matrix(data, nrow=, ncol=, byrow=F)

NOMINO: rownames = c(...,...,...)

colnames = c(...,...,...)

SUBSETTING

mat[riga, colonna] per accedere ad un vettore

SUM

sum(vettore numerico, na.rm=FALSE) → NUMERO

seq← se true rimuove i valori Na

sum(df[r,c]) somma tutti i valori delle righe e colonne indicate

rowsums(df) &> VETTORE COLONNA, una per ogni riga (:)

colsums(df) → VETTORE RIGA, una per ogni colonna (...)

GRAFICI

  • GRAFICO A TORTA

pie (pi, labels = names(x), main = "-titolo-", col = "red")

  • GRAFICO A BARRE e DATI QUALITATIVI

barplot (fi, main, xlab, ylab, xlim, ylim, names.arg, )

cex.names, cex.axis, horiz = F, las = 0)

  • Se ho una MATRICE o una TABELLA (FREQS.REL) TABLE : X = matr o tabella

barplot (x, ... stesse cose ..., beside = F, legend = rownames(x))

  • PLOT - DATI QUANTITATIVI

plot (x, y, xlim, ylim, main, xlab, ylab, sub, col, cex)

pch, type, lwd, cex, cex.main, cex.lab, cex.axis, axes)

diagramma ad aste type = "*h*" - numeri, distribuzioni

diagramma a dispersione no type, solo PCA = SCATTERPLOT

linea continua type = "l"

diagramma a scolini - FUNZ DI RIP. EMPIRICA

linea e punti type = "o" - FUNZIONE DI RIPARTZ.

ISTOGRAMMA ➔ DATI RAGGRUPPATI IN CLASSI

hist ( x , breaks = estremi, freq = F, main, xlab, ylab

tutti i dati

DENSITÀ

(=T FREQUENZE)

, ax.lab , ax.axis, ax.main , cex , col , xlim , ylim ,

, axes = T , nclass )

se = F non, ⤵ numero classi:

mette gli assi se non specifico is

→ li metti tu con estremi ecc ➔ DISTRIBUZIONI

AXIS

CLASSI CON AMPIEZZA ≠

AXIS AGGIUNGO ASSI AL GRAFICO

axis ( side , at = ... , … solite cose (cex, col …) )

a che punto segnare le

stanghette con il numero

TITLE (main ="titolo", sub = " ", xlab, ylab, cex, col, ...)

MTEXT ( testo, side , cex , line ..) MARGINI

TEXT ( pos x, pos y, valori, font , cex , pos , …)

un po sopra

POINTS ( x , y , pch , … )

posizione ⤲ da 1 a 25

ABLINE ( h = , lty = “dashed” , “dotted” )

A al valore o numero AGGIUNGO LINEA ORIZZONT.

PAR ( mfrow = c(1,1) COME SI DISPONGONO I

= c(2,2) GRAFICI

INDICI DI TENDENZA DATI GREZZI

  • MODA x = c(...) fi = table(x)x[which.max(fi)] → dati raggruppati
  • MEDIA mean(x) oppure SUM(x) / m → length(x)
  • MEDIANA median(x) oppure
    • ORDINO x
    • POSIZIONE p = 0,5 × (m-1) p = 0,5 × m
    sort(x)[p]
  • QUANTILI quantile(x, probs = ...) oppure
    • ORDINO x
    • POSIZ p = 0,25 × (m+1)
    • media dei valori di quella posizione (prima e dopo)
    ↓ 0,25 Q1 0,75 Q3
  • RANGE diff(range(x)) differenza tra il max e il min osservato
  • DIFFER. INTERQUANTILE IQR(x) oppure diff(quantile(x, c(1,3)/4)) differenza tra Q3 e Q1

DATI RAGGRUPPATI

dati = c(...) xi = names(table(dati))
  • MODA x[which.max(fi)]
  • MEDIA mean(x)
  • MEDIANA xi [ which (Fi: > 0,5) ][1] indice del primo valore tra i valori che superano 0,5

SUMMARY (x)

→ NUMERI DI SINTESIdati → min Q1 Q2 - Me Q3 max (media)

BOXPLOT (x)

  • → max
  • Q3
  • Q2
  • Q1
  • min
FUNZIONI DI BOX PLOT:
  • soffici (main, xlab, ...)
  • horizontal = F di default

SIMMETRICA

  • z̄ = Q2
  • Q2 - Q1 = Q3 - Q2
  • Q1 - MIN = MAX - Q3

ASIMMETRIA

ASIMM POSITIVA > ASIMM NEG <  >  < obliqua a DX   obliqua a SX

OUTLIERS

  • A < Q1 - (1,5) (Q3 - Q1)
  • B > Q3 + (1,5) (Q3 - Q1)
→ MEGLIO MEDIANA

Relazione tra 2 variabili

  • Varianza var (x)
  • Scarto quad. medio sd (x)
  • Coefficiente di variazione CV = sd (x) / abs (mean (x))

+ È grande + è variabile x= σµ

Covarianza

cov (x,y)

  • cov > 0 ci sono + valori postivi
  • se x aumenta, anche y aumenta (stessa dir)
  • cov < 0 ci sono + valori negativi
  • se x aumenta, an y diminuisce (≠ direz)
  • cov = 0 incorrelazione indipendenti x ⊥⊥ y

Correlazione

cor (x,y) ρ = cov (x,y) / √var (x) var (y)

  • ρ = 0 incorrelazione
  • ρ = ± 1 perfetta correlazione positiva o negativa

Data.frame (x,y) → mette insieme i dati

Tabella a doppia entrata delle freq. congiunte

table (df) = freq. cong. assol.

add.margins (freq. cong. assol.) = freq. cong. margin. → la colonna e riga sum

table (df) / n = freq. cong. rel. ← m = sum (freq. cong. assol)

oppure

prop.table (freq. cong. assol.) = freq. cong. rel.

add.margins (freq. cong. rel.) = freq. cong. marg. rel.

Marginali

table (df $ x) = freq. xtable (df $ y) = freq. yper quelle relative divido per ∑x e ∑y sumfi sum fi

Condizionate

↓ barplot sovrapposto

prop.table (freq. cong. assol., 2 ) = freq. x da y

prop.table (freq. cong. assol., 1 ) = freq. y da x

Nomi tabella frequenze

rownames (table (df)) nomi xcolnames (table (df)) nomi y

LETTURA FILE - IMPORTO

  • getwd()
  • IMPORTO DATI da FILE TXT read.table(percorso, header = F, sep)
    • dati delimitati → read.delim()
    • FILE CSV read.csv()
  • LETTURA DATASET (nome = read.table(...)) head(nome)

IF - ELSE

if (condizione) { statement 1} else if (condizione2) { statement 2} else { statement 3}

OPPUREvariabile = ifelse(condizione, statement 1, statement 2)POSSO ANNIDARE, statement 2 può essere un altro ifelse

CICLO FOR

for (i in 1:20) { cosa fare}

SAMPLE CAMPIONAMENTO

sample(x, size, replace = F, prob) → vettore di m elem di x casuali.sample(x) → PERMUTAZIONE SEMPLICE (2, 3, 4, 5, 4) casuale

SET.SEED

per avere lo stesso risultato di un'altra persona imposto prima set.seed(1234)

APPROSSIMARE LA PROBABILITÀ DI UN EVENTO

  • Probabilità che esca un numero, faccio 100 lanci:
    • OUT = SUM (X, 100, REPLACE = T) → quante volte su 100
      • OUT = x
    • SUM (OUT == x) → conta 1 ogni volta che è uguale
  • Voglio ripetere 20 volte questa simulazione da 100 lanci OUT = VECTOR (len = 20)FOR (i in 1:20) { LANCI = SAMPLE (x, 100, REPLACE = T) OUT[i] = SUM (LANCI == x)}

    ⇒ OUT sarà un vettore di 20 numeri, ogni numero è la somma di quante volte è uscito x nei 100 lanci.

Oppure

  • OUT = SAMPLE (x, m * Msim, REPLACE = T)
  • OUT = MATRIX (OUT, ncol = m, byrow = T) → 100 colonne
  • JOB = function (x) SUM (x == x) → FUNZ
  • RIS = apply (OUT, 1, JOB) → APPLICO FUNZ
  • SUM (RIS) / Msimu → % di prob. che esca x

FUNZIONE

f = function (x) espressione in xris = apply (oggetto, 1, f)
  • che prende il posto di x
  • applico alle righe (per 2 applico a colonne)

DISTRIBUZIONI V.C.

  • ddistr(x, parametri distr.) ➔ FUNZ. DI PROBABILITÀ/DENSITÀ
  • pdistr(x, parametri distr.) ➔ FUNZ. DI RIPARTIZIONE
  • qdistr(x, parametri distr.) ➔ INVERSA FUNZ. DI RIPARTIZ. (quantile)
  • rdistr(m, parametri distr.) ➔ GENERA NUMERI CASUALI secondo la distribuzione

NORMALE

norm (μ,σ2) di default (0,1)

BINOMIALE

binom (m,θ) ➔ PROBABILITÀ

GEOMETRICA

geom (θ) ➔ PROBABILITÀ

POISSON

pois (λ) λ

UNIFORME

unif (a,b) a= min b = max di default (0,1)

GAMMA

gamma (α,θ) di default θ = 1shape 1/scale

ESP. NEGATIVA

exp (θ) di default θ = 1

CHI QUADRATO

chisq (g) g gradi di libertà χ2g

VALORE ATTESO

E(X) = sum (0:m * ddistr(x, param))

se so quanto vale E(x) nella distribuzione (ad es. media) posso calcolarlo anche così.

APPROSSIMAZIONI

x̄ ➔ E(x)    x̄ = mean (x)s̄2 ➔ Var(x)    s̄2 = var (x)dove x̄ = rdistr(m, par)

PROBABILITÀ V.C. DISCR.

  • P(x = a) ➔ ddistr(a, par)
  • P(x ≤ a) ➔ pdistr(a, par)
  • P(x < a) ➔ pdistr(a-1, par)
  • P(x > a) ➔ 1 - pdistr(a, par)
  • P(a ≤ x ≤ b) ➔ sum (ddistr(a:b, param))

CASO NORMALE

Z = rnorm(m) ~ N(0,1) STANDARDX = rnorm(m, μ, σ) ~ N(μ, σ2) NORMALE

CURVE

curve(distr(x, par), from, to, add = T, lty, lwd, ...)min(z) max(z)

Z ➔ dnorm senza param.curve(pdist, from, to, add = T, ...)oppure plot(ecdf(z)) FUNZIONE DI RIP. EMPIRICA

rug(z) aggiunge al grafico un disegno

QUANTILI N. STAND.

ΦZ(Zα) = α* = pnorm (quantile di ordine α)

Zα = Φ-1(α) = qnorm (probabilità)

quantile di ordine α ➔ ESTERNO TABELLA

P(Z ≤ Zα) = ΦZ(Zα) = α

P(Z ≥ Zα) = 1 - ΦZ(Zα) = ΦZ(Zα) = 1 - α

-- interni tab ➔ Zα esterno tabella

se non c'è

1-X interni tab ➔ -Zα esterno tabella

QUANTILI Xα

Xα = qnorm(μ, X, σ)

PROBABILITÀ

P(X < a) = P(X ≤ a) = pnorm(a, μ, σ)

P(X > a) = pnorm(a, μ, σ, lower.tail = F)= 1 - pnorm(a, μ, σ)

P(a < X < b) = pnorm(b, μ, σ) - pnorm(a, μ, σ)

NORMAL PROBABILITY PLOT

qqnorm(X, data.x = T)dati curve vicini sull'asse

oppure plot(sort(x), funz. emp. teor.)

SE ASIM. ➔ uso log(x)

qqline(X, data.x = T)linea di tendenza (passa x q, e G)

Zi = qnorm(fun. emp.)

Anteprima
Vedrai una selezione di 4 pagine su 13
Appunti schematici di Analisi statistica multivariata - modulo R Pag. 1 Appunti schematici di Analisi statistica multivariata - modulo R Pag. 2
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Appunti schematici di Analisi statistica multivariata - modulo R Pag. 6
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Appunti schematici di Analisi statistica multivariata - modulo R Pag. 11
1 su 13
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze economiche e statistiche SECS-S/01 Statistica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher aina.belloni di informazioni apprese con la frequenza delle lezioni di Analisi statistica multivariata e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof Lunardon Nicola.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community