Estratto del documento

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 ∞ π indef. x! not available

Tipi di dato

numeric, character, logical, complex, mavector, list, finite, infinite, null, nan 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 = u)

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(..., ...)) as.factor(x) trasforma

levels(y) = levels(factor(x)) ➡ NOMI delle categorie

Ordered

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

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

levels(ordered(x)) in ordine

Frequenze

x = factor o ordered

table(x) ➡ vettore di f. assolute

names(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, mavector, 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 x

rm(list = ls()) tutte

Condizioni

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

all(condizione su x) → TRUE/FALSE se x soddisfano

any(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 numero

a: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 & condizione

x più condizione

PER NOME x[c("nome_elem1","nome_elem5")]

PER T/F x[c(FALSE, TRUE, FALSE, TRUE)]

di un vettore di 4 elem restituisce 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 LISTA

y[[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

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) &&gt 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 SINTESI

dati → 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

x̄ = Q2

Q2 - Q1 = Q3 - Q2

Q1 - MIN = MAX - Q3

Asimmetria

ASIMM POSITIVA > ASIMM NEG

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. x

table (df $ y) = freq. y

per 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 x

colnames (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 }

OPPURE variabile = 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 x

ris = 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 θ = 1

shape 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)

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) STANDARD

X = 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 P(X > a) = pnorm(a, μ, σ, lower.tail = F) = 1 - 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