Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

Operatore di concatenazione

c ( ) concatena i valori assegnati

b1 <- c(12,0.3,5,778.3)

Nomi3 <- c(“giorgio”, “ugo”, “anna”)

Se voglio avere una variabile che abbia sequenze di valori e non un solo valore, allora uso la

concatenazione.

NB: Se voglio modificare il contenuto della variabile:

prima avevo creato Pippo, poi Nomi, poi concateno le due variabili e ne esce:

Così abbiamo cambiato i valori e il contenuto della variabile Pippo.

Questa variabile ha perso del tutto i valori numerici che aveva prima.

oggetto matrice

matrix (y,r,c) matrice di dimensioni r x c con valori in y.

- columnwise

E'

il primo argomento è il vettore della matrice

- Il secondo e terzo indicano la dimensione della

matrice:

il secondo, r, indica le righe

il terzo, c, indica le colonne Es:

A <- c(1,8,5,0)

M <- matrix (A,2,2)

Quando delle variabili contengono una concatenazione di valori (numerici o non), tali oggetti

vengono chiamati vettori. Sono una sequenza ordinata di info con la stessa qualità (numerica o

non). Il vettore è un oggetto unidimensionale, mentre la matrice…

Una matrice è un oggetto bidimensionale, è una tabella con tot righe e tot colonne. Però è solo

numerica (NB). La funzione matrix ha obbligatoriamente 3 argomenti (separati dalle virgole).

Es: matrix(y,r,c) ~> Il primo argomento (y) è il tipo di valori contenuti nella matrice, il secondo e

terzo argomento (numeri naturali) indicano la dimensione (tot righe e tot colonne). Vediamo sotto:

Voglio costruire una matrice di ordine 3x2, perciò il vettore avrà 6 elementi (vettore di lunghezza 6)

Viene prima riempita la prima colonna, quando si esaurisce, si usa la

columnwise.

seconda. E'

Qui ho creato C, poi ci ho voluto costruire la matrice ed è uscito questo.

Pagina 4 di 5

Le matrici sono delle strutture matematiche perciò possiamo usare le operazioni algebriche di

base per modificare il contenuto di alcune matrici (somma tra matrici, prodotto, trasposizione..)

somma

Uso la tra matrici se voglio sommare gli elementi contenuti nelle matrici in oggetto.

NB: Posso fare la somma tra matrici solo se queste hanno esattamente la stessa dimensione

(stesso numero di righe e di colonne).

Es: vado a creare un’altra matrice, Mat 2, faccio la somma e ne esce:

Nell’ultima c'è la somma fatta a ‘battaglia navale’.

NB: La somma non è memorizzata nello work-space.

Però se posso salvarla creando una matrice apposita,

quindi creiamo Mat3 —> Pagina 5 di 5

LEZIONE 2: OGGETTO LISTA

simbolo R significato

list ( ) costruisce una lista di oggetti

La lista è una struttura con un buon grado di strutturazione e complessità. Permette di estendere

la rappresentazione delle informazioni in vario modo, da strutture di oggetti omogenei per

categoria di informazioni, ad oggetti che possono invece essere variabili per quanto riguarda la

tipologia in oggetto.

Praticamente l’oggetto lista è un costrutto che permette di contenere le informazioni in un oggetto

eterogeneo.

unico ma (Ricordiamo che invece la matrice è una struttura omogenea di

informazioni numeriche.)

La funzione list ( ) che deve essere intesa come struttura di dati.

Una lista è un insieme ordinato di oggetti di tipo eterogeneo, dunque numeri, vettori, sequenze,

addirittura matrici, ecc..

La lista ha una struttura piuttosto articolata, infatti la costruzione della lista richiede una sequenza

di operazioni che vanno inserite in R. Tecnicamente si può creare una lista con un’unica linea di

comando, però questo richiederebbe una scrittura molto estesa, occuperebbe troppo spazio sulla

linea e creerebbe confusione.

Così è meglio creare le liste con diverse operazioni, ognuna su linee diverse, ordinate, di codici.

NB

Prima creiamo i componenti della lista, poi ce li assegnamo, ricordandoci di assegnare un

argomento per ogni oggetto.

La funzione list ( ) ha tanti oggetti quanti la lista stessa.

A è un vettore numerico, M è una matrice, Nomi3 è una variabile testuale.

Ogni oggetto (A, M, Nomi3, LV) viene assegnato ad un argomento.

“a” è il primo elemento della lista, il primo parametro della lista.

Il secondo argomento Mat della lista ha assegnata la matrice, nomi ha assegnato il vettore Nomi3,

e X ha assegnato LV.

La visualizzazione del risultato è molto articolata.

_________ funzione rep:

Molto importante è la se voglio ripetere un valore tot volte uso questa funzione.

Vediamo un esempio, voglio creare Y, una matrice di 9 numeri che abbia sulla prima colonna solo

uni sulla seconda solo 2 sulla terza solo 3. Si fa così:

Y <- matrix(c(rep(1,3),rep(2,3),rep(3,3))

ma non è completa, infatti non abbiamo scritto la dimensione della matrice!

Y <- matrix(c(rep(1,3),rep(2,3),rep(3,3)),3,3) …così è completa e ci uscirà:

Se non diamo la dimensione, ci uscirà un vettore di 9 elementi come segue

[1] 1 1 1 2 2 2 3 3 3 Pagina 1 di 4

Su R abbiamo creato queste 3 cose: Vediamo che sono tre cose diverse con grandezze

e dimensioni diverse: la prima variabile X è un

vettore numerico di 10 numeri, Y è una matrice di

dimensione 3x3 con 9 info numeriche, Z è una

variabile testuale a stringhe. C’è dunque massima

eterogeneità.

Come costruiamo ora la lista? Dobbiamo scegliere un nome per la lista e assegnarle il risultato di

una funzione, cioè la funzione lista. Indichiamo poi l’argomento della variabile, stando attenti

all’ordine all’interno della lista.

Es: Lista1 <- list(z=Z,x=X,y=Y)

Questo crea nel work space un oggetto che contiene queste tre cose.

I nomi che do agli argomenti (z,x,y) saranno i nomi delle variabili nella lista, così nel workspace ci

sarà spazio per le variabili esterne (X,Y,Z) e oggetti interni alla lista (x,y,z). Tenendo separati questi

oggetti ci assicuriamo che se facciamo una modifica a livello esterno, non succede nulla alle

componenti interne alla lista.

L’output ha 3 blocchi, $z, $x, $y:

Ecco qui la lista1, una variabile che contiene informazioni di vario genere e varia complessità.

C'è una funzione che permette di riassumere le info peculiari di un oggetto lista. Usiamo allora la

funzione summary, una funzione di tipo generico molto flessibile, robusta e versatile a varie

situazioni. E' una funzione perciò richiede le parentesi.

Se noi facciamo il summary della Lista1, ci esce questo output:

ci da i nomi con l’ordine scelto, poi la lunghezza con il numero di elementi, la classe che vedremo

dopo, e mode cioè la tipologia.

Mode ci mostra le caratteristiche specifiche delle componenti, se sono numeriche, testuali a

logical.

stringhe. Se avevamo TRUE o FALSE, summary ci avrebbe dato come Mode l’output

Pagina 2 di 4

OPERATORE DI SELEZIONE

simbolo R significato

[ ] seleziona gli elementi di un oggetto (che sia vettore,

matrice, lista, dataframe)

Permette di navigare in modo diverso e andare ad agire su determinati oggetti creati nello

workspace.

Ci permette di selezionare gli oggetti che stanno all’interno di altri oggetti (vettori, matrici, liste,

data frame…)

Innanzi tutto questi oggetti devono essere presenti nel workspace, dobbiamo crearli.

Possiamo usare l’operatore di selezione in modo flessibile, in funzione all’oggetto a cui lo

applichiamo. Per esempio se l’oggetto di riferimento è un vettore, usiamo le [ ] in un certo modo,

se invece operiamo su una matrice, usiamo [ ] in modo diverso.

Vediamo allora l’esempio del vettore, nel nostro caso è A <- c(1,8,5,0). Se vogliamo prendere il

primo e quarto elemento di A, dobbiamo richiamare A, aprire le [ ], inserire le posizioni che voglio

usando l’operatore di concatenazione c( ).

NB:

- Se l’operatore di selezione viene applicato ad un vettore, allora si richiede un unico argomento

fra le parentesi quadre, tipo [2], se invece vogliamo selezionare più elementi, dobbiamo usare

l’operatore di concatenazione c, dunque A[c(1,2)].

- Se invece vogliamo usare la selezione in un oggetto bidimensionale, tipo la matrice, dobbiamo

prendere in considerazione due argomenti, separati da una virgola. Per esempio vogliamo

selezionare l’elemento in riga 3 e colonna 2 della mia matrice. Dobbiamo scrivere M[3,2].

Dunque nel primo spazio c'è la riga, nel secondo la colonna. Usiamo solo le quadre perchè

nonostante 3 e 2 siano due numeri, in realtà formano un unico argomento.

Creiamo una matrice 4x5, con 20 elementi, i primi 20 numeri naturali.

Prima dobbiamo creare l’elemento che contiene i 20 numeri

x

1) <-c(1:20)

2) X<-matrix(x,4,5)

3) Ora vogliamo selezionare ciò che sta sulla quarta riga della

seconda colonna, cioè riga 4, colonna 2. Nel nostro caso è 8.

4) e così via..

- Se invece vogliamo selezionare un’intera riga scriviamo X[3, ] lasciando quindi lo spazio vuoto

dove dovremmo scrivere la colonna

- Se vogliamo selezionare un’intera colonna scriviamo X[ ,2] Pagina 3 di 4

Se invece voglio selezionare determinate righe e colonne, per esempio voglio la seconda e terza

riga, più la seconda e terza colonna di X, devo fare così: X[c(2,3),c(2,3)].

Infatti otterremo quei numeri che stanno nella 2 e terza riga x 2 e terza colonna, cioè il blocco

“interno”: dunque il primo argomento dopo c contiene le righe, il secondo dopo

l’altro c, contiene le colonne.

—> in questo caso, abbiamo scritto colonna 3 e 2, perciò l’ordine è stato

diciamo “invertito”.

Ora invece vogliamo prendere i valori sull’ultima colonna, che siano maggiori di 18. Perciò

dobbiamo selezionare tutte le righe che soddisfano questa richiesta, dei valori >18. Nel nostro

caso sono la terza e quarta riga.

All’inizio dobbiamo scrivere X[X[ ,5] per indicare che vogliamo considerare la quinta colonna.

Poi aggiungiamo X[X[ ,5]>18, ]. Abbiamo scritto 18, ] perchè vogliamo vedere i valori al di là di 18

di tutte le colonne.

Se invece vogliamo i >18, intendendo il 19 e il 20, dovremo indicare come vincolo la quinta

colonna. Non più tutte le colonne ma solo la quinta.

> X[X[ ,5]>18,5]

[1] 19 20

Oppure:

> X[X[ ,3]>10,3]

[1] 11 12 Mentre sulle righe:

Ora riprendiamo X e vogliamo tutte le righe di X che nella seconda colonna siano >7 ma al tempo

stesso che nella terza colonna siano >=10.

#vincolo 1: sulla seconda colonna vogliamo i >7

#vincolo2: sulla terza colonna vogliamo i >=10

…c'è solamente una riga che soddisfa entrambi i vincoli

contemporaneamente (data la situazione di congiunzione&), cioè

l’ultima. Pagina 4 di 4

29/09/17

I sistemi di editing, funzioni definite dall’utente e data frame.

Sistema combinatorio R + word editor/foglio.

In quanto a modifiche di sintassi, R non è il software ottimale, perciò possiamo combinare

l’utilizzo di R con semplici fogli di testo (note, pages,)… Per salvare l’output dato da R e per

produrre cose che andremo poi ad inserire in R. Praticamente per supporto.

Un software esterno è R studio, che permette di integrare.

Step 1: note pages, “foglio di sintassi”

Step 2: copia e incolla dal foglio di sintassi in R console, di righe o testi interi. In questo modo R

eseguirà i comandi proposti.

Step 3: copia e incolla dell’output di R su pages a modo da conservarlo. Lo chiamiamo “foglio di

output”

Su pages posso modificare quello che mi pare delle mie stringhe, vettori, ecc..per poi copiare e

incollare in R, mentre se si facesse in R sarebbe più complesso e richiederebbe più tempo.

Calcolo dell’area di un rettangolo:

Possiamo preparare il tutto su pages, a modo da modificare quello che voglio senza farlo in R

occupando il workspace con input vari.

NB: pay attention to the > sign at the beginning

Funzioni definite dall’utente

Sono funzioni per fare dei calcoli in R che ogni volta andiamo a creare in base alle esigenze.

Ha una sintassi più complessa degli oggetti precedenti. function.

Nella sintassi generica si può cambiare tutto ma non il termine

Funzioni (user-defined function)

sintassi

my function <- function (arg1, arg2, …, arg.n) {

statements

return (object)

} Esempio (area di un rettangolo)

AreaRettang <- function (Lato1, Lato2) {

Area <- Lato1*Lato2

return (Area)

}

myfunction è un esempio di nome della funzione. In ogni caso richiede l’assegnazione <-.

argomenti,

La funzione è costituita da una serie finita di argomenti. Dopo la tonda contenente gli

c'è la { che indica il blocco di istruzioni che la nostra funzione dovrà eseguire }. Queste indicazioni

statements, return

sono gli che indicano delle azioni. Poi c'è anche il termine che indica cosa la

funzione dovrà restituire.

Tutto ciò che è obbligatorio per indicare cosa la funzione deve creare. Una volta creata, possiamo

sempre usarla richiamando il nome della funzione (nell’es, AreaRettang) Pagina 1 di 5

Esempio:

############################foglio di sintassi#############################

Creiamo un funzione per calcolare automaticamente la somma dell’area di due rettangoli.

Chiamiamola SommaARett:

SommaARett <- function (L1R1,L2R1,L1R2,L2R2) {

AR1 <- L1R1*L2R1

AR2 <- L1R2*L2R2

SA <- AR1+AR2

return (SA)

}

Inoltre, invece di riportare i nomi degli argomenti e i loro valori, è possibile inserire subito i valori,

tipo: Vediamo che il risultato è lo stesso, sia che scrivo

gli argomenti, che no. Tanto l’input l’avevo già

messo in precedenza.

Altro esempio: troviamo l’area del triangolo.

ATri <- function (base,altezza) {

AT <- (base*altezza)/2

return (AT)

}

Poi andiamo a specificare i valori di ATri, e così mi da il risultato:

Poi specifico:

oppure: Pagina 2 di 5

Strutture tabellari data frame

Sono oggetti che creano l’input per qualsiasi calcolo statistico. Tali dati saranno organizzati in

strutture dette appunto data frame.

oggetto data frame

data.frame ( ) costruisce una tabella di variabili organizzata per

colonna

esempio

Rt <- c(655,765,831,499,815,661,800,550)

Gen<-c("M", "F", "F", "M", "M", "F","F", "M")

Eta<-c(22,24,21,28,31,29,26,21)

DATI<- data.frame(Rt,Gen,Eta)

C'è differenza fra data frame e l’oggetto lista, infatti quest’ultimo è molto eterogeneo e versatile. Il

data frame è più vincolato. E' una tabella che per essere costruita in R deve rispettare delle

regole.

Le variabili statistiche devono avere valori omogenei, se per esempio ho una variabile numerica

X1, questa X1 deve contenere numeri omogenei, solo numerici.

Le variabili al loro interno devono essere omogenee, ma poi le variabili possono essere diverse fra

loro MA devono avere a stessa lunghezza. Altrimenti la tabella non può essere piena, completa.

Si costruisce con la funzione data.frame ( )

Le righe costituiranno insiemi di valori corrispondenti ad un’unica unità statistica.

Nel nostro esempio abbiamo 3 variabili, diverse ma della stessa lunghezza e internamente

omogenee.

Alla fine creiamo DATI, il nome del data frame a cui appunto viene assegnata la funzione data

frame contenente le 3 variabili. NB: occhio alle virgolette

Ci sono sintassi specifiche per ogni oggetto (matrice, dataframe, lista).

Anche sul dataframe possiamo selezionare sezioni. Pagina 3 di 5

Se voglio selezionare solo una variabile posso usare questi due modi, selezionando la colonna

corrispondente alla variabile desiderata, oppure uso $, in questo modo:

NB: Nel data frame non serve assegnare gli argomenti, come invece dobbiamo fare negli oggetti

lista.

Anche sulla lista comunque possiamo usare l’operatore di selezione, ma combinato al $ e in caso

alle [ ], come segue:

Esercizo 1 Laboratorio

X1 <- c(12,13,11,11,13,9,5,11,13,11,6)

X2 <- c(12.0,15.3,13.3,17.2,13.6,12.4,11.7,10.0,11.0,18.3,15.3)

X3 <- c(1,1,0,0,1,0,1,0,0,0,1)

X4 <- c("m","m","m","f","f","m","m","f","m","f","m")

X5 <- c(1,1,2,1,3,4,4,1,2,1,2)

TABa <- data.frame(X1,X2,X3,X4,X5)

Riportiamo in R e otteniamo: Pagina 4 di 5

Esercizio 2.3: Si calcoli la somma dei valori di X2 limitatamente a quei valori (osservazioni) di X2

associati in modo esclusivo o al valore m di X4 o al valore 1 di X3. Nota: per modo esclusivo si

intende che l’associazione deve avvenire con l’uno o l’altro valore ma non con entrambi

disgiunzione esclusiva).

(cosiddetta

in maniera esclusiva vuol dire che deve essere associato ad un valore o all’altro, non entrambi.

Perciò dobbiamo andare a selezionare X2 che ha 0-m e 1-f. Devo escludere l’intersezione.

La negazione in R si scrive con il !

Dunque l’esercizio si risolve così:

Ricordiamoci bene questa formula!!:

Y<-DATI$TP[(DATI$GEN==“f")] di elementi presi dall’Es 2 del corso. Pagina 5 di 5

2/10/2017

Costruire ed importare dati esterni ad R, sintesi di info contenute in struttura tabellari,

introduzione a R Studio

1)Come si costruiscono ed importano dati esterni ad R

Righe: profilo di info

Colonne: variabili

Step 1: Costruzione di una struttura di dati usando un software esterno (foglio Excel)

Salvando il file, dobbiamo selezionare un formato specifico, cioè CSV, che può essere importato

in R senza problemi.

Step 2: Importiamo ora il file in R

Lettura file dati esterni

simbolo R significato

read.csv2 ( ) legge/carica file esterni

esempio

DATI <- read.csv2 (“C:\\EXP\\Dati.csv”)

In R dobbiamo usare la funzione read.csv2 ( ), questo permette di leggere e

caricare dati esterni all’interno dello workspace di R.

Prima lettera: il volume del file in questione, l’hard disk. Il nome del volume viene separato dai :, in

seguito c'è la sintassi obbligatoria con la cartella fra le \\ , poi andiamo a specificare il nome del

file, chiudendo le virgolette e la parentesi.

MAC:

VEDI PER https://didatticaonline.unitn.it/dol/pluginfile.php/232103/mod_resource/content/

1/Caricamento-dati-Mac-Os.pdf

Per facilità, facciamo il drag and drop, inoltre scriviamo il tutto in un doc testuale.

Noi abbiamo visto l’esempio con > DATI<- read.csv2("~/Desktop/Cartella di lavoro2.csv”) da

Excel.

2) Funzioni per la sintesi di strutture tabellari

L’output di summary ci da le info sui valori numerici di DATI2, per ogni variabile separatamente.

Ci da il valore minimo del vettore, il valore massimo, il valore medio, mediano, il primo quantile

empirico e il terzo quartile.

Con summary, le variabili devono essere numeriche, se usiamo testi non funziona. Perciò nel caso

del nostro esempio X Y Z devono essere numeriche.

Se per caso usiamo summary con valori testuali, ci da un output ma ‘senza senso’, perchè infatti

funziona solo con numeri.

La variabile di stringa testuale è considerata come categoriale, qualitativa, nominale, perciò

l’unica statistica sensata da calcolare è la frequenza.

La funzione summary

simbolo R significato

summary( ) riassume il contenuto di strutture di

dati di tipo numerico

esempio

DATI2 <- data.frame(X,Y,Z)

summary(DATI2) Pagina 1 di 2

3. La funzione apply La funzione apply

simbolo R significato

apply (DATI, MARGIN, FUN) applica una specifica funzione FUN sulle

componenti righe (MARGIN=1) o colonne

(MARGIN=2) del dataframe/matrice DATI

esempio

DATI2 <- data.frame(X,Y,Z)

apply(DATI2,1,sum)

apply(DATI2,2,mean)

In questo caso dobbiamo avere una struttura dati già precedentemente creata.

E' composta da 3 argomenti; è una struttura di dati numerica; non può essere applicata a vettori,

ma solo a strutture tabellari (data frame o matrice) (NB).

Composta da:

1: nome : nome della variabile che vogliamo andare a considerare

2: margini : indica se si vuole considerare la riga(1) o colonna(2)

3: funzione , può essere qualunque tipo di funzione già presente in R che può essere applicata per

tutte le righe o colonne della matrice in base a cosa andiamo a specificare in MARGIN.

La seconda riga di comando mostra dove si va ad applicare

Margin può avere solo due valori: 1 identifica le righe, 2 identifica le colonne. Come vediamo nel

primo esempio, la somma verrà fatta sulle righe, la media sulle colonne. Pagina 2 di 2

6/10/17

LEZIONE 5: Introduzione a R studio, Costruire variabili categorici e ordinali, statistica

descrittive di base.

Spesso usiamo variabili ordinali e categoriali.

R Studio é un software che permette di collegarci a R, il quale deve essere pre-installato.

E' un Integrated Development Environment (IDE).

Finora abbiamo interagito personalmente con R, mentre ora useremo l’interfaccia R Studio per

gestire R.

R Studio permette di controllare la sintassi, infatti c'è una sorte di “correzione automatica” se per

esempio scriviamo male, ci dimentichiamo chiusure di parentesi, ecc..

Aprendo R Studio ci si apre R.

Useremo sempre il foglio di script per ‘prepararci’ la sintassi, non la scriveremo mai più

direttamente in R.

Scrivendo nello script, poi schiacciamo Run. Al che succedono due cose. Quello che ho scritto

viene copiato nelle altre finestre, quella del vocabolario, la console, le info sugli oggetti e la loro

struttura (che troviamo in environment).

str(..)

Usando possiamo avere info specifiche su oggetti creati in precedenza e sulla loro struttura.

NB: attenzione a non aprire i file che dobbiamo scaricare/importare.

Quando le colonne hanno i nomi delle variabili, dobbiamo selezionare l’opzione “first row as

names”, anche facendo caso al Delimiter che possiamo controllare grazie al Data Preview.

Se avevamo già fatto uno script e poi importiamo un file, questo file si apre su uno nuovo script.

Ma possiamo fare così sul primo:

Per convertire un oggetto in data frame, facciamo as.data.frame. Pagina 1 di 4

Convertire in variabili categoriali/nominali

R fa grosse differenze fra variabili numeriche, stringhe, e di tipo logico.

Abbiamo la scala nominale/categoriale, ordinale, a intervalli, a rapporti.

Ricordiamoci allora le loro caratteristiche e le operazioni possibili.

In R possiamo trasformare una variabile stringa/testuale in una variabile categoriale grazie a

as.factor(A). Come nell’esempio. Per R factor coincide con la variabile categoriale/nominale.

As.factor può essere applicato a dati numerici, ma tali numeri perderanno le caratteristiche

numeriche, e verranno trasformate in variabili nominali. Creiamo così delle etichette. 1,2,3 non

sono più numeri ma etichette nominali.

Con as.factor ricodifico dei valori con le caratteristiche che desidero. (con $ specifichiamo).

Convertire in variabili ordinali

Le variabili ordinali vengono costruite in R attraverso un doppio passaggio. Una variabile ordinale

per R è una variabile fattoriale di cui gli oggetti hanno come caratteristica l’ordine che viene

A

definito dall’utente. Per farlo dobbiamo usare factor. In factor c'è che identifica una precedente

levels

variabile categoriale costruita nello workspace; indica i livelli della variabile categoriale

ordered

secondo un ordine identificato in c; specifica ad R che c'è in ballo un ordine, quello

specificato in levels. Vedi esempio: creo Voto, poi in levels specifico l’ordine e lo dichiaro con

ordered. Così creo una variabile di tipo ordinale.

Keep in mind che R riconosce l’ordine come una scala categoriale. Omettendo il terzo parametro

vado a costruire una variabile categoriale in cui i livelli possibili sono quelli indicati dai livelli.

Pagina 2 di 4

Funzione table

La funzione table permette di tabulare i dati e osservarne la frequenza.

Sulla prima riga vediamo i valori, sulla seconda la loro frequenza.

Il table vale la pena farlo con variabili categoriali o ordinali.

Ora voglio far si che questi valori diventino ordinali. Perciò non voglio che abbiano carattere

quantitativo, ma ordinale. Il processo è scritto nella parte sopra dello screen, il risultato nella

seconda parte:

Se uso summary sul mio nuovo DATI2$D3 mi produce una tabella di frequenza, come nella

penultima immagine.

Vediamo ora uno schema riassuntivo:

Il problema con R è che non si possono fare certi conti o misurazioni con dati che però lo

permetterebbero.

In termini di tipologia di dati, cioè numeriche, R non distingue scala a intervalli o rapporti. L’unica

distinzione che fa è nell’uso delle statistiche inferenziali/descrittive che vogliamo andare ad usare.

Pagina 3 di 4

Altre funzioni di base:

Per il calcolo della mediana, X deve essere numerica, quantitativa, non ordinale.

La funzione quantile ha 2 argomenti: il vettore e probs, che specifica a quale quantile sono

interessata.

Var è la varianza. Se ho la deviazione standard la posso ricavare e viceversa.

Altre.. NB l’esempio per vedere due diversi tipo di

scrittura.

La prima riga dell’esempio produce dei vettori casuali, vuol dire: estraimi 100 valori da una

distribuzione normale con media 10 e deviazione standard 5. Se rnorm viene rilanciata, creerà altri

valori diversi.

Il quantile empirico approssima il quantile della popolazione. Pagina 4 di 4

9/10/17

LEZIONE 6: Rappresentare graficamente la distribuzione di una variabile quantitativa

tramite ISTOGRAMMI, BOXPLOT E METODO DI KERNEL

Generare dati artificiali/simulati da distribuzione normale

Possiamo generare dati in base ad osservazioni note e valutare le performance di tutte le

rappresentazioni grafiche in base alle informazioni con cui abbiamo a che fare.

Grazie a dei software statistici possiamo creare dati fittizi come se provenissero da distribuzioni

note, perciò sappiamo quali sono le proprietà di base di tali distribuzioni quindi possiamo testare

le proprietà delle procedure statistiche in funzione di queste caratteristiche.

Permette di creare dati artificiali a partire da

distribuzioni di popolazione di tipo normale,

rnorm.

gaussiano. Questa funzione è La r

iniziale sta per random, mentre norm è la

distribuzione da cui tali dati vengono estratti/

campionati.

Ha 3 parametri:

n—>numero dei valori da estrarre dalla popolazione.

mean —> media

sd —> deviazione standard, sempre a livello di popolazione. All’aumentare della deviazione

standard, le distribuzioni normali diventano più ampie, più piatte, con maggiore dispersione di

valori.

Perciò rnorm genera n osservazioni indipendenti estratte da una distribuzione con media mean e

deviazione standard sd. E' un campionamento casuale con reinserimento, così è garantito che le

osservazioni sono indipendenti fra loro ma omogenee per quanto riguarda le caratteristiche.

Nel nostro esempio vogliamo andare a creare un vettore con 2 valori causali, presi da una

distribuzione normale con media 10 e sd 5.

Se nella console rilanciamo la funzione, vediamo che si creano sempre numeri diversi:

Per far si che in classe generiamo e stesse sequenze di valori, usiamo un

trucco, cioè set.seed(n) che fissa un parametro nel sistema che fa si che

ogni numero casuale che verra generato, rispetterà una sequenza fissa,

predefinita, che è sempre quella, data appunto da questa funzione.

Sono pseudo random, perchè seguono comunque una regola. Pagina 1 di 7

Parte 1: Istogrammi

Sono tecniche di rappresentazione comuni, che rappresentano tramite una procedura di tipo

discreto il contenuto informativo di una variabile casuale continua, usando come info un

campione di osservazioni empiriche estratte da tale variabile.

L’obiettivo è quello di descrivere in breve delle caratteristiche di base della distribuzione della

probabilità analoga alla variabile.

E' un metodo discreto perchè ogni unità informativa ha delle barre e il numero di barre è sempre

finito, dunque l’istogramma usa un numero finito di informazioni, per poter descrivere delle

caratteristiche quantitative continue di una variabile casuale la cui distribuzione di probabilità è di

fatto continua.

Sull’asse x delle ascisse ha i valori della variabile, e sulle y ha la frequenza assoluta di comparsa

nel campione empirico, per ciascuna delle classi di riferimento, in cui l’istogramma è ‘diviso’ (le

barre/bin). Proprietà dell’istogramma:

- I Bin: numero di volte in cui il dominio è diviso in parti uguali. Il

bin ha una larghezza/ampiezza, e un’altezza, che ci dice il

numero di osservazioni, la frequenza che ricade in quel bin.

- Tutti i bin sono disgiunti, mai sovrapposti, ma l’unione di tali

blocchi permette di ricostruire totalmente l’intero dominio della

variabile. E' solo una segmentazione secondo delle classi con

stessa ampiezza.

-

la somma delle altezze di bin sono uguali al numero totale di

osservazioni del mio campione di dati.

Se vogliamo creare un istogramma in R, usiamo la funzione hist(X,breaks). L’argomento X è

obbligatorio ed è il vettore di dati mono-dimensionali, che contiene i valori empirici osservati

associati alla mia variabile quantitativa continua. X contiene un numero finito di osservazioni ed è

quantitativa. Non funziona con dati nominali o ordinali.

Breaks è il parametro naturale di rappresentazione dell’istogramma. Ha un utilizzo flessibile, da

una parte codifica il numero di bin con cui vogliamo rappresentare l’istogramma. R non usa

breaks in modo vincolante, cioè non usa il numero che noi abbiamo indicato, ma sceglie la miglior

rappresentazione possibile tenendo presente quello che vorremmo. Dunque c'è una possibile

variazione all’interno del valore che gli diamo, nell’esempio, 5. A volte invece lo segue, se è

l’ideale per il grafico. Pagina 2 di 7

L’altro uso di breaks è di specificare i valori di default di questi breaks. Tali valori di default sono 3,

e rappresentano 3 diversi metodi per calcolare l’ampiezza del bin. R implementa 3 tipi di calcoli

dell’ampiezza:

- il metodo di Scott

- di Sturges

- di FD

Questi 3 metodi si differenziano per il modo in cui viene calcolata l’ampiezza del bin.

Sturges

Ad esempio il metodo di è il metodo usato in automatico da R ogni volta che non

specifichiamo breaks nella funzione hist. Calcola l’A come indicato sopra.

Scott non usa il quantile 0 e 100, ma usa la varianza empirica del campione, come sopra.

Freedman-Diaconis (FD) usano come info di base il primo e terzo quartile.

Questi 3 metodi non producono risultati molto diversi, soprattutto i primi due. Comunque Sturges

tende a produrre un numero maggiore di bin, mentre FD tende a produrne un numero minore, ma

non è sempre detto.

Se nella distribuzione abbiamo degli outliers, FD produce delle rappresentazioni migliori,

soprattutto rispetto al metodo di Sturges che è molto sensibile alla presenza di valori anomali.

Scott è una via di mezzo. Dunque se ci accorgiamo di outliers, usiamo FD.

Si introducono come indicato sopra nell’esempio della funzione, con le “ ”.

Ora in R studio, andiamo a far un po di pratica, prima usando campioni piccoli e poi numerosi.

Succede questo: noi impostiamo le cose nel foglio script, lanciamo in console, così viene creato

l’istogramma nella sezione plots, e sopra ci vengono dati i valori creati per X1.

Poi quando andiamo di volta in volta a creare nuovi istogrammi, la finestra plots di riaggiorna, ma

comunque non andiamo a perdere i grafici precedenti, a differenza di quanto succederebbe in R.

Infatti vengono conservati. Pagina 3 di 7

Ora vado a forzare il numero dei bin, scrivendo hits(X1,breaks=2) e mi esce:

Vediamo comunque che con 5 bin vediamo che sarebbe una distribuzione normale, mentre quella

con 2 bin è molto vaga. Ora andiamo ad aumentare i bin, imponendone 10, hist(X1,breaks = 10):

Vediamo che ora che i bin sono di più, le frequenze diminuiscono, perchè

con classi inferiori, ogni classe avrà un numero inferiore di punti.

Con 20 breaks, ricordando che i campioni sono 25, vediamo che la

rappresentazione è molto irregolare.

Allora notiamo che c'è un rapporto diretto fra il numero di bin e la

rappresentazione che viene generata.

Se il campione è piccolo (,50), negli istogrammi non ci conviene usare troppi bin, ma un numero

adeguato. Se invece abbiamo migliaia di osservazioni, possiamo usare molti bin per far si che la

rappresentazione sia più dettagliata.

C'è una rappresentazione ottimale? Si, generalmente tra i 3 metodi (Sturges, Scott, FD) scegliamo

quello più appropriato. In base al numero dei campioni.

E' chiaro che l’A diminuisce all’aumentare del numero dei bin.

I metodi grafici sono di tipo descrittivo, per sintetizzare le info. Pagina 4 di 7

Parte 2: I Boxplot, grafici a scatola

Rispetto alle statistiche descrittive già viste, non va ad aggiungere altre info.

Come l’istogramma permette di avere info sulle caratteristiche distribuzionali

del mio campione. La differenza con l’istogramma è che: mentre

nell’istogramma la gamma della variabile che voglio rappresentare è

identificata sulle x, nel boxplot tali info, cioè il dominio della variable, sta sulle

ordinate.

Cosa sintetizza a proposito del campione di dati? Questo:

La parte centrale del grafico ci mostra l’info sui quantili

empirici principali del campione. Ci da il Q3, Q2

(mediana), e Q1.

I valori numerici vengono letti in ordinata: nel nostro

esempio vediamo che Q2, la mediana, corrisponde a 10,

mentre Q1 è un valore compreso indicativamente tra 8 e

10; infine Q3 è compreso fra 10 e 12.

Altre info sono il massimo e minimo del campione.

Nel nostro caso max=18, min= -1.

Altre info sono quelle ottenute a partire dal vincolo dei

“baffi della scatola” , il baffo inferiore e superiore. Questi

baffi stanno ad una certa distanza rispetto alla base

inferiore della scatola (Q1) e quella superiore (Q3).

I punti al di sopra o al di sotto dei baffi, sono identificati

come outliers.

Come vengono calcolati questi limiti? I baffi si calcolano

in base alla differenza interquartilica che c'è nel grafico

(Q3-Q1) e in base alla posizione della scatola nel caso

del calcolo del baffo superiore; mentre per il baffo

inferiore si guarda la posizione di Q1, cioè la base

inferiore della scatola.

Il significato del min e max campionario sono

interpretabili ogni volta in modo diverso.

Vediamo questo esempio:

Ogni volta che non abbiamo outliers, allora il min e max

sono indicati con le linee.

Nel primo esempio invece il min e max erano

rappresentati dagli outliers e non dai baffi.

Usiamo la scatola per vedere la presenza di outliers e le forme distribuzioni, se per esempio la

distribuzione è simmetrica o asimmetrica. Se la scatola è come quest’ultima, cioè la base inferiore

ha ampiezza che coincide con quella della base superiore, allora la distribuzione è simmetrica. Lo

vedo anche dal posizionamento dei baffi, se la loro distanza dalle basi sono simili, allora la scatola

è appunto simmetrica.

Nel secondo esempio vediamo una leggera asimmetria per quanto riguarda la parte alta della

scatola, perchè la varianza fra Q2 e Q3 è minore rispetto alla distanza fra Q2 e Q1. Pagina 5 di 7

Confrontiamo un istogramma con un boxplot, usando X2b<-log(X2) :

Vediamo la forte asimmetria, soprattutto fra la mediana e Q1. La parte bassa della scatola è più

ampia della parte alta.

Il logaritmo va a tagliare i valori più alti.

Quando boxplot ha a che fare con più variabili, bisogna specificare i nomi. Lo facciamo con la

funzione names. L’ordine delle stringhe sarà l’ordine con cui verranno inserite le variabili nel

boxplot.

Confrontando queste due distribuzioni possiamo arrivare a delle

conclusioni, tipo: la mediana del secondo campione è minore di

quella di Z1. La differenza interquartilica di Z2 è più grande di

quella che posso osservare in Z1.

Sembra che la posizione di Q1 di Z1 sia approssimativamente

simile al Q2 di Z2. Pagina 6 di 7

Metodo del Kernel

E' un metodo di rappresentazione grafica molto simile all’istogramma, ma la main difference sta

tecnica del nucleo,

nella tecnica. La per Kernel.

L’istogramma è una procedura di tipo discreto per rappresentare le caratteristiche di una

distribuzione continua, quantitativa. Segmenta il dominio della variabile tramite i bin, per

descrivere ed approssimare la distribuzione.

Al contrario, il metodo del Kernel è una procedura di tipo continuo per rappresentare le

caratteristiche distribuzionali di una variabile quantitativa continua. E' una rappresentazione

quantitativa, continua e non discreta. Perciò il metodo di Kernel è più in linea con le caratteristiche

naturali della variabile.

Vediamo la sovrapposizione di un istogramma e il metodo di Kernel:

La rappresentazione in ascissa è la stessa, il domino della variabile, mentre in ordinata c'è il valore

di densità. Densità e non probabilità quindi.

Non sono rappresentate le frequenze assolute, ma quelle relative.

Nella tecnica dell’istogramma sappiamo che il suo parametro è dato dai breaks, il numero di bin in

funzione dell’ampiezza. banda,

Nel metodo del Kernel il parametro naturale è la essa permette di modulare il grado di

lisciamento della funzione nella rappresentazione grafica.

All’aumentare della banda, fissato il campione di dati osservato, andiamo via via a produrre

rappresentazioni sempre più smooth. Al contrario, a valori via via più bassi di banda, avendo

fissato il campione, otterremo una rappresentazione più frastagliata, che ci mostra in modo più

dettagliato tutti i piccoli accorgimenti della funzione.

Differenza:

- >bin, > irregolarità

- < banda, > irregolarità (rapporto inversamente proporzionale)

La cosa importante è che Kernel guarda tutti i

valori e ne guarda la distanza dal valore di

densità.

La funzione densitity permette di estrarre i valori

associati al mio set di dati. Non produce una

rappresentazione grafica, ma per farlo bisogna

associarla al plot. Il plot viene utilizzato per

rappresentare una variabile nel nostro caso, ma

in realtà ha varie possibilità di funzione.

Il primo argomento X è il numero, mentre bw è

la banda.

Se non specifico la banda, automaticamente R

va a selezionare un valore ottimale per quella

funzione. Pagina 7 di 7

13/10/17

M3: Statistiche descrittive per la misura di associazione tra due variabili categoriali

1) Tabella di frequenza/contingenza

Sono tabelle che sintetizzano le info sulle unità statistiche bivariate del nostro campione di dati.

A differenza di table, ora abbiamo più di una variabile. Avremo due variabili categoriali, A e B,

diverse fra loro. Essendo delle variabili categoriali sono costituite da stringhe.

funzione table

simbolo in R significato

table(A,B) produce la tabella di frequenza T secondo riga

(margin=1) o colonna (margin=2)

A<-as.factor(c(“a1”,”a2”,”a1”,………)

B<-as.factor(c(“b1”,”b1”,……)

table(A,B)

margin.table(T,2) ..cioè frequenze marginali di

Per poter applicare table su coppie di variabili categoriali, bisogna che i dati delle due variabili

abbiano la stessa lunghezza. I dati di A devono essere della stessa lunghezza dei dati di B.

Possiamo anche avere variabili numeriche, ma basta trasformarle in variabili categoriali.

Ci da tutte le combinazioni possibili dei livelli, gli appaiamenti.

Sulla prima riga abbiamo i livelli di X1, sulla prima colonna i livelli di X2.

Con la tabella di contingenza otteniamo tutte le frequenze di tutte le combinazioni, dove

vediamo quante osservazioni su X1 hanno il valore tot su X2, ecc.

Al contrario della table di contingenza, il data frame di tali dati sarebbe risultata in:

Qui vediamo per ogni soggetto quali X1 e X2 ci sono. margin.table(T,2).

Poi analizziamo l’ultima parte del nostro esempio, nello schema, cioè:

L’oggetto T è un oggetto struttura tabella che ho costruito precedentemente con la funzione table.

margin.table(T,2) produce le frequenze marginali.

Se margin=1 andiamo a calcolare data la tabella di contingenza, i marginali per riga.

Se margin=2 la stessa cosa andiamo a calcolare i marginali per colonna.

Qui siamo andati a creare T2, contenente la tabella di valori che avevamo creato

prima, con X1 e X2.

Dopodiché abbiamo applicato margin.table di T2 in quanto a righe (1).

Pagina 1 di 7

Funzione head ( ) head( )

Quando con rnorm creiamo delle variabili, possiamo usare per far produrre tot

osservazioni, non troppe, di solito 6. Applicando head a data.frame potremo vedere le prime 6

righe del data.frame.

PS: Possiamo usare l’operatore di selezione anche con tabelle.

Per calcolare le frequenze relative (assolute, non marginali), ho 2 possibilità:

- T2/sum(T2)

- prop.table

Per calcolare marginali di riga e colonna separatamente, possiamo

usare apply, con cui possiamo applicare una funzione su tutti i valori

posizionati su determinate righe o colonne. Come argomento

inserisco i valori della tabella di frequenza coi valori relativi, poi

decido 1 o 2, e uso sum, guardando così le frequenze relative per

riga o per colonna.

La funzione prop.table:

Le info finora descritte possono essere ottenute grazie a prop.table.

Permette di produrre le stime delle probabilità condizionate, considerate le info in riga (margin=1)

o colonna (margin=2) di una tabella di contingenza T. Cosa intendiamo con “le stime delle

probabilità condizionate”? Ci riferiamo a frequenze relative, usare i dati per stimare le probabilità,

quindi sono frequenze relative.

Con prop.table non possiamo calcolare le frequenze relative marginali, ma possiamo fare un’altra

cosa.

Innanzitutto dobbiamo creare una tabella di contingenza.

Prop.table ci da risultati diversi in base al modo in cui la usiamo. Per esempio se usiamo

prop.table ignorando il secondo argomento (margin) allora applicandolo ad una tabella di

contingenza precedentemente costruita, il risultato sarà la frequenza relativa della tabella. Dunque

fornisce lo stesso risultato dato da T/sum(T). Perciò calcola le frequenze relative in automatico.

Quindi possiamo dire che in questo caso prop.table= T/sum(T).

Se invece usiamo prop.table specificando il margin, ci va a calcolare la probabilità condizionale

che non corrisponde al marginale delle frequenze relative,

- se indichiamo margin 1 ci va a calcolare la probabilità condizionale P(B|A): cioè, la probabilità

che X1 abbia quel valore condizionata al fatto che X2 ne abbia un altro?? Cioè che la

probabilità di X1 sia condizionata a X2.

- margin 2 ci fa calcolare la probabilità condizionale P(A|B).

Per comodità usiamo round ( ) sui risultati, che spesso cono decimali lunghi.

In questo caso, cos’è 0.62? E' la probabilità condizionata che la

variabile X2 assuma il valore 0, condizionata al fatto che la variabile X1

assuma valore -1.

Quali sono le proprietà note di questa tabella? Se usiamo apply,

vediamo che i marginali di riga sommano tutti ad 1.

Vediamo la stessa tabella con margin=2, cioè con P(B|A):

Tot è la probabilità condizionata che X1 assuma valore tale,

condizionata al fatto che X2 abbia valore tale.

Ora sono le colonne a sommare a 1. Pagina 2 di 7

2) Misura di associazione tra due variabili categoriali

Date due variabili categoriali codificate in una tabella di frequenza, possiamo dire se le due

chi2.

variabili covariano o no? Si, col Permette di misurare il grado di associazione fra due

variabili categoriali.

I J

e sono due valori interni positivi che indicano il numero di livelli/categorie per le due variabili.

Possono avere valori uguali o diversi.

Il chi2 è la somma di rapporti fra frequenze specifiche.

Le due sommatorie scorrono su tutti i livelli della prima variabile, tutti gli i che vanno a 1 a I,

mentre la seconda tutti i j che vanno da 1 a J.

nij

Nella formula, con indico la frequenza assoluta nella tabella di contingenza di riga i-esima e

colonna j-esima. Mentre n*ij indica il valore della frequenza teorica associata alla riga i-esima e

colonna j-esima della tabella di frequenza sotto ad un modello teorico che assume le due variabili

come indipendenti fra loro, che ‘pensa’ cioè non ci sia alcuna correlazione tra le 2.

frequenze teoriche

Le sono frutto del rapporto fra due termini, il rapporto tra le f marginali della i-

esima riga moltiplicate con le f marginali della j-esima colonna, diviso per N.

Il chi2 calcola la somma quadratica degli scarti fra le frequenze osservate nel campione, meno le

corrispondenti f teoriche legate al modello teorico di indipendenza.

Se il chi2 risulta in 0, le variabili sono totalmente indipendenti, cioè al variare di una non possiamo

dire nulla sulla variazione dell’altra.

Più alto è il chi2, più è la coartazione fra le variabili.

Però il chi2 non ha un limite superiore, va da 0 a +infinito. Perciò con che valori possiamo dire che

la correlazione è alta? dato che va fino a +infinito.

In realtà quando abbiamo una struttura dati possiamo calcolare il valore massimo che posso

estrarre, il chi2 massimo. Questo dipende da 2 info: il N e il minimo tra il gdl di righe e colonne.

Questa è la stima del valore massimo che posso osservare,

che non dipende dai valori interni alla tabella, perchè infatti sto

considerando solo il N campionario e la dimensione della

tabella. Non sto considerando i singoli valori dei singoli casi.

Calcolando tale valore massimo posso ottenere il chi2

normalizzato, che può variare da 0 a 1. Con 1=massimo valore

d’associazione fra variabili.

Avere appunto un grado normalizzato mi permette di vedere

l’associazione. Pagina 3 di 7

La funzione chi2 chisq.test Per ottenere il valore della statistica osservato,

la statistica descrittiva (e non normalizzata),

chisq.test

usiamo il

Come argomento ha una tabella di

contingenza e deve essere associato ad un

parametro che è preceduto dal $.

Funzione par(mfrow=c( ))

Utilizzando il comando par(mfrow=c(n1,n2)) `e possibile aprire una finestra che può contenere dei

grafici multipli. Ad esempio, par(mfrow=c(2,3)) produce una finestra suddivisa in due righe e tre

colonne, ogni cella della finestra può contenere un grafico diverso. Attenzione i grafici che

vengono creati sono inseriti di volta in volta nella finestra multipla. Se si commette un errore nella

produzione del singolo grafico `e necessario chiudere la finestra multipla e ripetere l’intera

procedura. Per tale motivo `e consigliabile scrivere su un documento di testo la sintassi di R, per

evitare di reinserirla più volte. 16/10/17

Continuazione M3: Statistiche descrittive per la misura di covariazione e associazione tra

due variabili quantitative

1) L’indice di covarianza campionaria

Ora parliamo della rappresentazione grafica della relazione tra due variabili quantitative su un

piano cartesiano.

Questo è un grafico associato ad un set di dati con 11 osservazioni appaiate, sulle due variabili X1

e X2 (dunque parliamo di un campione bivariato).

Questo è un grafico di dispersione o scatterplot (o plot).

Plot è una funzione semplice e flessibile

che permette di rappresentare questo tipo

di contenuti.

baricentro

Il punto centrale è il di rappresentazione, e rappresenta infatti la posizione appaiata

delle medie relative a X1 e Y1.

I punti fuori sono le coordinate che troviamo nella tabellina.

Ci sono 4 quadranti.

Quando in X1 abbiamo valori superiori alla media, vi sono associati i punti di Y1 che pure

superano la media. Uguale per i valori di X1 e Y1 al di sotto della media. Pagina 4 di 7

Quello che possiamo allora dire è che c'è una relazione positiva fra le due variabili. Infatti al

crescere di X1 c'è anche una crescita di Y2. Mentre a valori bassi di X1 ci sono valori bassi di Y1.

La funzione plot di R è una funzione generica che ha molti parametri. Qui nella tabella ne vediamo

l’uso canonico.

La usiamo per vedere la relazione grafica di variabili appaiate quantitative. I vettori devono avere

la stessa lunghezza. Ogni osservazione deve avere una coppia invariata di variabili.

Nell’esempio vediamo plot (X,Y), dunque darà un grafico dove mette sulle ascisse i valori associati

a X1 e in ordinata i valori Y1. Il primo argomento di plot andrà in ascissa, il secondo in ordinata.

plot (X,Y,main=“Grafico di dispersione”),

Nel secondo esempio abbiamo che da un titolo al

main=“ ”.

grafico tramite Il contenuto informativo deve essere una stringa testuale. Possiamo

usare il main anche in altri tipi di grafici.

Nel terzo esempio abbiamo plot(X,Y,xlim=c(0,20),ylim=c(0,15) che permette di lavorare sulla

rappresentazione degli assi. xlim e ylim sono importanti se vogliamo fare grafici in modo

comparativo, ma essi devono avere lo stesso intervallo di rappresentazione sia in ascissa che

ordinata. Se non li specifichiamo, plot usa un dominio ottimizzato in base al max e min di X e Y.

Invece usando xlim e ilim possiamo manipolare il dominio.

Con xlim indichiamo la coppia di valori del D in ascissa, dove il primo valore indica il minimo

valore e il secondo il valore massimo di X. Stessa cosa per ylim. Per xlim e ylim è necessario

l’operatore di concatenazione c ( ).

Ora su R studio, inserendo i dati presenti in mode di M3, creiamo:

- plot (X1,Y1) e esce: funzione points,

Qui però non ho il punto che indica la media delle coppie. Allora usiamo la che è

simile a plot, ma permette di sovrascrivere valori al grafico esistente. Se lo facessimo con plot si

aprirebbe un nuovo grafico.

Dunque, noi vogliamo rappresentare il punto che indica la media di X1 in ascissa e Y1 in ordinata.

pch=

Con possiamo cambiare il formato del punto. Gli vengono di solito assegnati valori interi, e

per ogni valore abbiamo una rappresentazione grafica differente. Pch cambia la forma, non la

dimensione.

Invece per aumentare la dimensione (scala di misura) del punto rispetto a quelli che sono già stati

cex=

visualizzati, usiamo che va assegnato a valori reali positivi. Di solito cex=1, ma noi possiamo

imporre valori di cix diversi.

Possiamo usare pch e cex sia in points che plot.

Dunque se usiamo points(mean(X1),mean(Y1),pch=3,cex=2) ci esce:

“Giocando” un po coi valori di pch e cex vediamo che cambia

appunto la forma e la grandezza del punto centrale.

Pagina 5 di 7

Stiamo parlando di covarianza campionaria che misura il grado di dispersione o covariazione fra

due variabili.

Questo grado di dispersione viene calcolato a partire dai baricentri di rappresentazione della

struttura di dati. I baricentri sono la coppia delle media aritmetiche calcolate sul primo campione

(X) e sul secondo campione (Y), ottenendo x segnato e y segnato.

Se abbiamo i vettori X e Y, con lo stesso n di osservazioni, allora possiamo costruire d, dato

dall’appaiamento di tutte le possibili osservazioni come vediamo nell’immagine.

La Cov(X,Y) guarda gli scarti di ogni valore x e moltiplica per gli scarti degli y.

Questa somma viene moltiplicata per 1/(n-1). N-1 perchè è uno stimatore migliore rispetto a 1/N.

Il prodotto degli scarti è positivo solo se il segno degli scarti è concorde, sennò sarà negativo così

come lo sarà la covarianza.

Per calcolare gli starti devo scrivere, per esempio: SX<- X1 - mean(X1) e per costruire un data

frame dobbiamo scrivere D<-data.frame(X1,Y1,SX1,SY1,SX1*SY1) ottenendo:

Da questa tabulazione possiamo notare che abbiamo tutte componenti

positive, così ogni coppia di punti contribuisce positivamente al valore

finale della covarianza campionaria. Dunque indicano che c'è una

associazione positiva.

“L’altezza”, l’intensità, dipende da quanto ogni valore si distanzia dalla

propria media.

E' utile la tabulazione data.frame per capire il comportamento dei dati.

Per ottenere manualmente la covarianza finale possiamo sommare tutti i valori sull’ultima colonna

e dividerli per n-1.

Dichiariamo N così:

N<-length(X1)

CovE<-(1/(n-1))*sum((X1-mean(X1))*(Y1-mean(Y1)))

Per dichiarare N ho usato X1, ma potevo anche usare Y1, tanto la numerosità è uguale, dato che

sono associati a 11 osservazioni.

Per poter lanciare Cov, costruendola manualmente dobbiamo ricordarci di dichiarare N<-length( )

Però in R possiamo usare subito la funzione di

covarianza: cov(X,Y).

Però dobbiamo già avere le variabili.

Nell’esempio, vediamo che Z inverte i valori di Y,

cambiando l’andamento delle cose, cioè

andando a produrre una covarianza negativa. Pagina 6 di 7

2) L’indice di correlazione campionaria

La correlazione lineare rappresenta la standardizzazione della covarianza campionaria fra due

variabili quantitative.

La covarianza=0 quando nella sommatoria i prodotti positivi annullano i prodotti negativi o

viceversa.

La correlazione campionaria misura il grado di associazione lineare fra due variabili quantitative

con stessa lunghezza.

La correlazione cambia il codominio della funzione. A differenza della covariazione, ci da i valori

relativi al codominio normalizzato [-1 +1].

Quando la covarianza è 0, allora anche la correlazione lineare sarà=0.

correlazione r(x,y) è la covarianza che viene divisa per il prodotto fra la sd di x e y.

La cor1<- (cov(x,y))/(sd(x)*sd(y))

Perciò:

Sappiamo che due variabili sono massimamente covariate fra loro, quando la cov(x,y) è uguale a

sd(x)*sd(y) cioè al prodotto fra le deviazioni standard delle variabili

La funzione della correlazione r(x,y) inR è cor(x,y).

e x e y hanno lo stesso valore, la covarianza

diventa varianza. Perciò se applico la

correlazione ad una coppia di variabili identiche,

otterrò 1, cioè il massimo di correlazione lineare,

rappresentata come linea obliqua.

Il segno della correlazione indica se la crescita è

positiva o negativa.

NB: due variabili possono essere associate fra loro anche non avendo correlazione lineare,

perchè magari sono legate da una funzione di diverso tipo. Vediamo appunto il seguente esempio

con la funzione seno e la funzione di tipo quadratico(y=x2):

Dunque dobbiamo essere minimamente certi della natura

della relazione tra le variabili. Pagina 7 di 7

20/10/17

La regressione lineare (modello descrittivo)

Qui l’ordine di inserimento delle variabili conta, infatti è un grafico che per questo motivo si dice

VI

asimmetrico. Infatti c'è una VI e una VD. Nei modelli di regressione lineare dobbiamo inserire la

nelle x del grafico, e la VD nelle ordinate.

La regressione lineare è la retta stimata nell’osservare i dati, un modello che rappresenta il legame

tra le due variabili, VI e VD.

Tale modello è usato per vedere la relazione oppure prevedere i valori della VI in funzione dei

valori di VD.

Caratteristiche importanti:

- residui:

i segmenti sono i indicano la distanza tra il modello di regressione e ogni singolo punto.

Il modello di regressione stima i parametri naturali del modello, tipo il coefficiente angolare e la

intercetta, così che in media, la distanza dei residui osservati tra il modello di regressione e i

punti, siano il valore più basso possibile. Data una conformazione di punti, da la migliore

approssimazione lineare possibile.

- ogni punto ha una distanza specifica, alcuni meglio rappresentati dal modello (distanze basse,

tipo nell’esempio, i punti n 2,5,7,8,11) altri meno. I residui vengono calcolati in base alla

ordinata, rispetto all’asse delle Y.

Abbiamo una struttura di dati bivariata, abbiamo x e y appaiati, il numero di osservazioni di x deve

essere uguale al numero di osservazioni di y. Il vettore d contiene gli appaiamenti.

Allora…La regressione lineare tra una variabile indipendente X ed una variabile dipendente Y,

calcola la migliore approssimazione lineare che identifica il legame tra le due variabili, utilizzando

la struttura di dati invariata (x,y) osservata su un campione di n osservazioni.

Il modello di regressione viene individuato da una formula. B0 è l’intercetta,

BX il coefficiente angolare di VI X, la ė è una componente l’errore.

Nella seconda scrittura vediamo la i-esima osservazione, la i-esima

osservazione di VI pesata per il suo coefficiente angolare, a cui viene aggiunto B0 come

componente additiva. Ci sono sempre lo stesso valore di intercetta e coefficiente angolare perciò.

Il modello di regressione lineare si può ottenere in

diversi modi, che convergono nella stessa stima dei

parametri. Noi facciamo la tecnica dei minimi quadrati,

che stima i valori del coefficiente angolare

dell’intercetta andando a minimizzare i residui del

modello.

SQE è la sommatoria degli scarti quadratici fra la i-

esima osservazione della VD osservata, rispetto allo i-

esimo valore predetto dal modello, una volta fissati i

valori del coefficiente angolare e intercetta.

yi* può essere sostituito da ciò che vediamo

nell’esempio. Pagina 1 di 5

Più è ampio lo scarto osservato da (yi-yi*), più il modello della osservazione non riesce a

ricostruire l’informazione. Mentre più tende a 0, tanto più il valore riprodotto dal modello di

regressione, ricostruisce l’informazione. Avrò tot distinti scarti, che codificano una distanza.

Nella seconda equazione, i B non cambiano, perciò dobbiamo stimare B0 e B a modo che la

e

somma degli scarti quadratici sia più bassa possibile. indica lo scarto dei due termini.

La somma degli scarti al quadrato sarà sempre positiva. Più è alto il valore della sommatoria,

meno accurata è la rappresentazione.

Il miglior stimatore possibile per i parametri di coefficiente angolare e intercetta, è indicato nella

B=cov(x,y)/var(x).

formula del rapporto campionario B è stimato, infatti ha un cappelletto.

B ha come codominio R. La varianza è solo positiva, la covarianza sia positiva che negativa.

La stima del coefficiente angolare=0 quando non c'è dipendenza lineare e la cov(x,y)=0

(cov=0 indica l’assenza di associazione tra le variabili).

(il coefficiente angolare è la pendenza della retta, l’intercetta B0 è il punto sull’asse delle y dove il

modello lineare interseca tale asse).

La retta di regressione è parallela all’ascissa.

Quando sono stati stimati i valori dei parametri del modello di regressione, possiamo estrarre un

indice quantitativo che mostra l’adattamento del modello di regressione ai dati osservati: R2 è

l’indice di adattamento del modello ai dati osservati. R2=1 indica il grado massimo di

adattamento ai dati. Infatti se guardiamo, è

anche quando il secondo blocco della

formula per R2 è uguale a 0.

L’indice R2 è il quadrato della correlazione campionaria tra due dati

quantitativi. Dunque basta avere uno dei due. Pagina 2 di 5

Funzione lm

Simbolo R Significato

lm(Y~X) Restituisce la stima dei parametri del modello di

regressione tra X e Y.

Nota: ~ si ottiene con alt+126

Es:

X<-c(9,8,12,9,10,14,5,13,7,5)

Y<-c(9,6,8,9,7,10,8,4,11,5,4)

lm(Y~X) lm=linear model.

E' la funzione che permette di stimare i parametri del modello di regressione.

A differenza di altre funzioni, ha una particolarità dell’uso della sintassi, cioè la ~, con cui

indichiamo che stiamo lavorando con modelli di tipo asimmetrico, perciò l’ordine è importante.

NB: Viene sempre prima la VD, cioè Y. (~ vuol dire “in funzione di..”)

Facciamo pratica in R Studio:

Queste sono le stime dei parametri del modello di regressione.

X1 è il valore del coefficiente angolare stimato, non X1.

Poi abbiamo scaricato la funzione BarreResidui e per specificarla

abbiamo inserito le due variabili di interesse, 1/7 come rapporto s, e

dato il nome ad entrambe le variabili.

Così ci è uscito il modello di regressione.

Ora calcoliamo l’indice R2. Per farlo facciamo il quadrato della

R2<—cor(X1,Y1)^2

correlazione, dunque:

Ci esce 0.6665425 .

Come altro possiamo usare le info date da lm?

Possiamo incrociare le info di lm con quelle di R2.

ES TIPO: abbiamo un output del modello di regressione con la stima dei parametri; in più

abbiamo R2 (indice di adattamento). A partire da questo output troviamo il valore della

correlazione.

Svolgimento: tramite la radice quadrata otteniamo un valore, che però non considera il segno,

mentre per noi è importante. Guardando il coefficiente angolare posso ricostruire il valore della

correlazione lineare tra due variabili. Nel nostro caso, sappiamo che la correlazione fra X1 e Y1 è

positiva, infatti il coefficiente angolare è 0.5001. Pagina 3 di 5

ES TIPO 2: Secondo il modello di regressione stimato, prevedere il valore della VD del modello,

avendo il valore di VI.

Per esempio ho x1<— - 2.3 come VI. Qual è la corrispondente VD?

Svolgimento:

Lo facciamo usando l’equazione lineare. Costruiamo una variabile con tale equazione, che si

applica sul punto che abbiamo. L’equazione normale è yi=B0+Bxi

Abbiamo che B0, l’intercetta è 3.0001 e il coefficiente angolare è 0.5001.

Così creiamo y1r con tali dati. y1r<-3.0001+0.5001*x1. Inoltre ho moltiplicato il coefficiente

angolare per il valore che ho, della VI x1.

Ci risulta y1r=1.84987 .

Questa stessa cosa può essere applicata ad un intero vettore di punti—> Quindi riprodurre i valori

della VD del modello, con i punti osservati in X1?

Allora creo Y1r e faccio la stessa cosa di prima, moltiplicando però per X1. X1 è un vettore che

contiene 11 valori.

Il risultato è: predict(MR1)

In realtà, tramite la funzione possiamo automaticamente avere i valori che abbiamo

appena costruito: s,

PS: in MR1 è la scala, la spaziatura del grafico.

Calcoliamo le stime con lm e l’indice di correlazione fra 2 variabili.

RIEPILOGO MR1<-lm(Y2~X2).

1) creiamo un modello di regressione (es)

Output: intercetta e coefficiente BarreResidui(X1,y1,1/7,“X1”,“Y1”)

2) usiamo la funzione data BarreResidui(VI,VD,s,“VI”,“VD”):

Output: grafico con la linea di regressione R2<- cor(X1,Y1)^2

3) calcoliamo l’indice R2, per farlo calcoliamo la correlazione al quadrato:

4) avendo un valore x1 trovo la corrispondente VD y1, così:

x1<- -2.3

y1r<-3.0001+0.5001*x1

Oppure possiamo trovare tutti i valori VD corrispondenti a X1 così: Y1r<-3.0001+0.5001*X1.

predict(MR1).

Abbiamo visto però che per avere tutte le Y1 di X1 basta scrivere Pagina 4 di 5

Analisi dei grafici:

Nell’esercizio su RStudio abbiamo visto che tutte le coppie di variabili risultano in modelli lineari

con linee molto simili, nonostante i dati molto diversi e quindi la posizione molto diversa dei punti.

Il primo grafico ci mostra che i residui oscillano casualmente attorno alla

retta di regressione. Con casualmente intendiamo che non prendono un

ordine sistematico, regolare. E' un modello che fluttua attorno alla linea di

regressione.

Di questo possiamo dire che non c'è un legame lineare tra X1 e Y2

infatti sembra una funzione “paraboloide”. Vediamo anche che non

c'è una componente d’errore perché i dati sembrano seguire una

funzione matematica non lineare. Sembriamo forzare il legame

lineare quando invece il legame è chiaramente di atra natura.

Guardando i residui notiamo che sono sistematici: dal punto 6 al 12

c'è una sottostima da parte del modello di regressione dei valori

della VD associati a tale porzione di dominio. Se invece

consideriamo le code, i residui cambiano di forma e tendenza.

Qui c'è un legame lineare. Il problema è che i dati sono

effettivamente lineari ma la stima produce una linea che non

coincide perfettamente col modello lineare. Vediamo appunto un

valore anonimo di Y3, che si discosta in modo bizzarro rispetto

all’insieme di dati. Tale presenza sbilancia completamente la stima

dei parametri del modello di regressione. Perciò il risultato mi da

un valore di stima del coefficiente angolare che è più alto di quello

che avrei dovuto osservare. Così risulta diverso anche il valore

dell’intercetta. Se vado a togliere il valore anomalo, ottengo un

perfetto modello di regressione.

Qui vediamo che fra X2 e Y4 c'è una relazione ma non lineare, e

non una funzione. Abbiamo un intero cluster nel codominio, è

come fosse una funzione costante al contrario. C'è una totale

invariabilità dei valori in ascissa, dunque qui non ha senso

applicare un modello di regressione, perchè risulta troppo

artificiale. Se i dati non rispettano gli assunti del modello di

regressione, non ha senso cercare di produrlo. L’assunto

principale è che la reale relazione fra le variabili deve essere

lineare, altrimenti non c'è un modo coerente e sistematico per

usare il modello lineare. Perché lo imporremmo dove non va

messo. Non è consistente. Pagina 5 di 5

Funzione cbind

La usiamo per aggiungere. “appendere” una nuova colonna al vecchio data frame. Se la vogliamo

appendere all’inizio, facciamo così (es della variabile EC): cbind(EC, DataAS)

Se la vogliamo mettere come ultima colonna, facciamo cbind(DataAS , EC)

Dunque aggiungiamo colonne a tabelle già create. Quello che andiamo ad aggiungere però deve

avere la stessa lunghezza delle altre variabili.

R DI PEARSON

Se vogliamo assegnare a 0 delle cose, tipo fasce di età:

-creiamo un vettore di tot 0 , Ec<-rep(0,60)

e poi assegnamo il valore 1 ai valori di Ec che coincidono con la posizione di una tot fascia di un

dataframe/vettore, così: Ec[(DataAS$E>=44)&(DataAS$E<=51)]<- 1

~> dunque l’appaiamento avviene sulla base delle posizioni

Quando vogliamo assegnare un valore, tipo 1, a tutti i soggetti che hanno fatto più di 10 punti in

due esercizi, facciamo così:

ptMach[(DataAS2$a1b1 + DataAS2$a1b2)>=10] <-1

NB: Il chi2 ha sempre bisogno di una tabella di contingenza. E faccio così: creo una tabella

inserendo nella funzione table il nome delle variabili che vogliamo sulle righe e colonne:

TC1<-table(DataAS2$Ec,DataAS2$ptMach)

TC1

ESERCIZIO LAB 3 (mach, bamb)

- Studiare se vi sia una qualche associazione tra le due fasce di età ed il fatto che la persona (il

bambino o la bambina) ottenga un numero di risposte corrette superiori o uguali alla soglia

minima 10 per quanto riguarda gli stimoli nello scenario macchinine. Verificare tale associazione

utilizzando il test descrittivo appropriato.

#Lab es bimbi macchinine

Data<-data.frame(DataAS)

DataAS

Ec<- rep(0,60)

#indichaimo con 0 la prima fascia

# 0 = 36-43

#indichiamo con 1 la seconda

# 1= 44-51

Ec[(DataAS$E>=44)&(DataAS$E<=51)]<- 1

#creiamo un nuovo dataframe in cui

#aggiungiamo al vecchio una colonna con Ec

DataAS2<-cbind(DataAS,Ec)

#poniamo 0 se ptMach < 10

#poniamo 1 se ptMach >=10

ptMach<-rep (0,60)

ptMach[(DataAS2$a1b1 + DataAS2$a1b2)>=10] <-1

TC1<-table(DataAS2$Ec,DataAS2$ptMach)

TC1

chisq.test(TC1)$statistic Pagina 1 di 5

- Verificare se vi sia una associazione positiva tra il numero di risposte corrette ottenute dai

partecipanti nello scenario macchinine e il numero di risposte corrette ottenute dai partecipanti

nello scenario casa delle bambole (si faccia uso sia di metodi di rappresentazione grafica che di

idonee analisi statistiche descrittive).

#vediamo la correlazione fra contesto (macch, bambole)

TotMach<- DataAS2$a1b1+DataAS2$a1b2

TotBamb<- DataAS2$a2b1+DataAS2$a2b2

#vediamo il grafico:

plot(TotMach,TotBamb)

FUNZIONE ABLINE ( ) e LTY

E' una funzione grafica per rappresentare la retta di regressione, però bisogna prima avere un

grafico di dispersione (plot) tra le variabili in gioco, sennò non si può usare.

Se abbiamo già un variabile che contiene il risultato del modello di regressione, allora abbine

abline(MR1).

richiede solo l’inserimento di tale variabile. Dunque possiamo fare Il risultato è la

sovrimpressione, sul mio grafico precedente, della retta di regressione.

La funzione abbine indica la retta di un modello lineare, esprime l’info di una retta, dunque per

poter essere usata, possiamo anche fare così: invece di inserire come argomento il valore della

variabile che contiene il risultato della regressione , possiamo esplicitare noi i valori che ci servono

per costruire la retta di regressione, questi valori necessari sono il valore dell’intercetta e il valore

abline(intercetta,coeff.angolare).

del coefficiente angolare. Allora possiamo usarla così: Es:

disegna una retta parallela all’ascissa e che passi per 14:

abline(14,0) [per essere parallela all’ascissa, il coefficiente angolare deve essere =0.]

Possiamo anche usare argomenti aggiuntivi per avere stili grafici differenti.

Se voglio tratteggi, invece di linee, lo faccio con: abline(14,0,lty=…)

lty

Con specifichiamo il tipo di tratteggio/riga che vogliamo usare nella rappresentazione grafica.

lty=1 è il valore di default, lty=5 si usa molto ed è un tratteggino. - - - - - -

Come calcoliamo i residui?

Ci sono vari modi…

Usiamo i risultati delle stime del modello di regressione per costruire un vettore di dati di 60

osservazioni che contiene i residui per ognuna.

Usiamo la funzione interna ad R che, dato il calcolo di un modello di regressione ottenuto

precedentemente, permette di calcolare i residui.

Usiamo residual che può essere affiancato ad una variabile che contiene il modello di regressione,

MR1$residuals

nel nostro caso tipico essa è MR1. Dunque facciamo: e otteniamo tutti i residui (in

posizione.

Sono gli scarti tra la VD osservata e la VD riprodotta dal modello. Esprimono, per ogni

osservazione, la differenza fra la VD osservata sulla posizione, meno la VD riprodotta usando il

valore della VI, usando le stime dei parametri del modello di regressione.

Ottengo i residui anche da questa operazione:

VD - (intercetta+coeff.angolare * VI)

prendo:

Per ogni osservazione della VI viene applicato l’esito del modello di regressione. Così otterremo

un vettore di tot osservazioni che corrispondono ai valori riprodotti dal modello di regressione in

funzione dei parametri stimati e in funzione della VI osservata costituita dai tot valori.

Dunque faccio la differenza fra un vettore ed un altro, con lo stesso numero di osservazioni.

La sottrazione avviene così: la differenza è elementwise: il primo elemento del primo vettore viene

sottratto al primo elemento del secondo elemento del secondo vettore. Il secondo elemento del

Pagina 2 di 5

primo col secondo del secondo, ecc.. Tenendo fisse le posizioni. Il risultato sarà un nuovo vettore

che contiene i residui dei due modelli. Sono, non scarti quadratici, ma semplici differenze.

MR1$residuals VD - (intercetta+coeff.angolare * VI)

Dunque e danno lo stesso risultato.

Durante gli esercizi possiamo verificarlo mettendoli in un dataframe per confrontare i valori.

grafici dei residui.

Il comportamento dei residui si studia usando i Ci sono due tipi:

- Uno mostra la relazione tra la VI del modello di regressione e i residui corrispondenti

- Uno mostra la relazione tra l’ordine sequenziale della osservazione dei nostri dati (1a pos, 2a

pos ecc) rispetto al valore del residuo corrispondente.

plot(VI,residui)

Usiamo questa funzione: tipo plot(PTotMach,E1).

Per interpretare il grafico dobbiamo plottare una retta di regressione con coeff.angolare nullo e

intercetta nulla. Usiamo dunque abline(0,0). I residui sono equamente distribuiti sopra e sotto? E'

casuali

importante fare questo confronto per poter vedere che le fluttuazioni sono non

sistematiche. Se non fossero casuali (tipo in una distribuzione paraboloide), tale variazione

sistematica e deterministia, ci fa pensare che i modello di regressione abbia delle oscillazioni

sistematiche e non casuali come dovrebbero.

L’intensità dei residui sono mostrati dalla loro distanza dallo 0.

Come può apparire il grafico dei residui in base al corrispondente grafico del modello di

regressione???

Quali sono gli effetti sul grafico dei residui se il modello di regressione non è ben determinato? In

questo caso potremo avere difficoltà.

TABELLE DI CONTINGENZA CON MATRIX E ROW.NAMES

NB: possiamo applicare il chi2 sulla tabella di frequenza di contingenza. Ricordiamoci che la

funzione table richiede delle variabili organizzate in data.frame, ma se così non è, possiamo anche

creare manualmente la tabella di frequenza avendo già i valori delle frequenze di tutte le

matrix,

combinazioni delle variabili categoriali. Possiamo farlo con la funzione che ci fa costruire

tabelle rettangolari.

Il problema nel creare tabelle con matrix è che non ci lascia assegnare dei nomi alle righe e alle

colonne, perchè mostra sempre le quadre con i numeri che indicano righe e colonne, così:

Ma risolviamo così:

row.names(matrix) <- c(nome1,nome2,nome3,..)

row.names(TF) <- c(“a1”,”a2”)

Dunque devo per forza sapere il numero di righe della matrice TF.

Uguale con le colonne:

colnames(TF)<-c(“b1”,”b2”).

Allora diventa così:

NB: colnames senza . in mezzo a differenza di row.names, la quale esiste sia con che senza punto

in mezzo.

Costruiendo la tabella in questo modo allora, possiamo anche andare a calcolare il chi2 con

chissà.test(TF)$statistic. Pagina 3 di 5

MODULO 4: ORA LAVORIAMO SULLA POPOLAZIONE

LA DISTRUBUZIONE NORMALE media=0 e sd=1

La distribuzione normale standardizzata ha due parametri con valori fissi: .

Funzione sequenza seq

Con seq( ) generiamo un vettore con valori che vanno da un minimo ad un massimo e incrementa

di un tot che decidiamo noi, tramite by=…

x<-seq(-3,3,by=0.001)

In questo modo: cioè un vettore molto grande perchè incrementa ‘piano’.

Funzione dnorm( )

norm sta ad indicare una distribuzione normale, e il prefisso d davanti serve per farmi capire che

tale funzione va ad estrarre un valore di densità che specifico io.

Perciò dnorm ( ) ha come primo argomento i valori di cui voglio calcolare i punti di densità.

Il secondo e terzo argomento sono dei parametri che indicano media e sd della popolazione.

Nel nostro esempio facciamo fx<-dnorm(x,0,1)

Poi vogliamo il grafico del vettore x che avevamo creato prima e fx che abbiamo creato adesso:

plot(x,fx,type=“l")

- type=“l” vuol dire, non mettermi trattini o punti, ma mettimi una linea tratteggiata continua che

collegano i punti.

- type=“p” è quello di default

- type=“both” mette entrambe le cose.

Nel nostro esercizio, ci esce così:

funzione di densità cumulata,

Ora vediamo la che sta ad indicare la probabilità di osservare

quell’evento, che la mia variabile causale X assuma valori minori o uguali del valore x, di cui voglio

calcolare il valore di funzione di densità cumulata.

quindi F(X=x) = Pr[X<=x]

X è la variabile casuale, x è un possibile valore che tale variabile può assumere. Pagina 4 di 5

Dunque F(X=0)=Pr[X<=0] ; calcolo il valore di probabilità che il valore x della variabile casuale

vada da —infinito a 0. Per calcolare tale probabilità, che la x ricada su valori da - inf a 0, vado a

L’integrale

integrare la funzione normale standardizzata, dal valore -inf fino al punto 0. che verrà

calcolato da -inf a 0 sarà l’area sottesa alla funzione che va appunto da -inf a 0.

Il risultato in questo caso è 0,5. Infatti…

—> Se vado a integrare l’area di una funzione normale standardizzata da -inf a +inf , tale integrale

deve essere = 1

—> Dato che la distribuzione normale è perfettamente simmetrica attorno alla media, l’area che

calcolo a sx(-inf,0) è uguale a quella dopo la media (0,+inf) e queste due aree integrano a 1, quindi

l’interale da -inf a 0 è =0,5.

Se avessi avuto x=-2 vuol dire che sarei stata interessata all’area che integra da -inf a -2.

La probabilità che x tende a -inf, vuol dire che prende in considerazione un intervallo molto

piccolo, che si restringe sempre di più. In questo caso la probabilità cumulata =0. tutto

Al contrario, la probabilità cumulata che tenda a +inf è =1 ,dato che tende a ricoprire lo

spazio, tutto l’intervallo

la funzione pnorm

Usiamo per calcolare queste cose senza dover stare li a farsi gli integrali.

pnorm ha la p che indica la probabilità di un intervallo di un certo tipo. Ha 3 arg.

Il primo argomento è il punto della variabile casuale di cui vogliamo calcolare il valore cumulato di

probabilità. Gli altri argomenti sono mean e sd (rispettivamente 0 e 1).

Mettiamo che x=0

Il valore critico ricordiamo che è 1.96.

NB: l’integrale parte sempre da -inf, da sinistra.

Pr[X>-1 & X<0.5]

Voglio calcolare la probabilità che dunque che x ricada in un intervallo

intermedio faccio così: pnorm(0.5,0,1)-pnorm(-1,0,1). Dunque faccio la probabilità che ricada fra

-inf e 0.5 meno la probabilità che ricada da -inf a -1. Pagina 5 di 5

13/11/17

M4: Principali distribuzioni di probabilità

DISTRIBUZIONI DI PROBABILITÀ DI TIPO CONTINUO

Definizioni generali

Indichiamo con X una variabile casuale di tipo continuo secondo la funzione di densità fx(x|0). E'

continua perchè i suoi valori numerici possono assumere valori dell’insieme dei numeri reali.

fx(x|θ) è una funzione che ha valore x condizionato a θ. ( “|” vuol dire condizionato)

Sia fx sia θ possono assumere significati particolari.

fx è una funzione di densità parametrica con parametri θ € Θ

Θ è lo spazio dei parametri, è l’insieme di tutti i valori che θ può assumere.

Nel caso della distribuzione normale, Θ è l’insieme di tutte le possibili assegnazioni che i 2

parametri della distribuzione normale possono assumere. I parametri sono media e varianza,

quindi Θ sarà dato dal prodotto cartesiano RxR+ (perchè la varianza è sempre positiva)

θ è il naturale valore di parametri.

Il dominio della funzione dei densità è R, che sarà il campo di esistenza della nostra variabile.

Il codomio è R+, dunque l’insieme dei numeri reali positivi.

I θ sono i parametri della distribuzione sono le info specifiche.

θ è il valore specifico mentre Θ è l’insieme dei valori che θ può assumere. E' l’insieme di tutte le

possibili assegnazioni.

La funzione di densità cumulata FX(x| θ) è definita come FX(x| θ)

f minuscolo esprime la funzione di densità mentre F il concetto di funzione di densità cumulata. F

e f hanno comunque lo stesso dominio, cioè quello specificato sopra del disegno.

Il codomio invece cambia, infatti quello di F è [0,1], quindi i valori sono definiti sulla sua che va da

0 a 1, che produce come esiti delle probabilità di un particolare evento, cioè che la nostra

variabile casuale X assuma valori <= x , che è l’argomento della funzione cumulata.

Tutte le funzioni di densità integrano a 1. Pagina 1 di 5

La funzione quantili

Θ θ

La funzione quantili è la funzione inversa della funzione cumulata, e vedi slide L’argomento della

funzione quantile non è un valore reale qualunque, ma un valore p (che indica probabilità)

condizionata al nostro modello θ. L’argomento sarà un valore di probabilità. Il codomio della

funzione quantile sarà un valore R; un esito della variabile causale X.

La funzione quantile ha argomento p e argomento θ è inversa della funzione cumulata X con

argomento p.

Se la funzione quantile è inversa alla funzione cumulata, allora anche viceversa. Sono invertibili,

infatti: qx(p| θ)=F alla -1 (p| θ)

La funzione di densità cumulata è collegata alla f di densità tramite il processo di integrazione e la

funzione di densità cumulata è collegata alla funzione quantile attraverso il processo di inversione

matematica.

La funzione normale standardizzata ha θ definito da media e sd . Con mean=0 e sd=1.

Nella funzione densità cumulata vediamo che ad ogni x corrisponde un y che esprime la

probabilità di osservare l’evento che x assuma valori <= al valore x che vogliamo calcolare.

Il grafico della funzione quantile ha come p valori da 0 a 1 , mentre ha come codomio tutto lo

spazio R. Vediamo appunto che è la funzione inversa fra un valore di probabilità e il valore del

quantile. Pagina 2 di 5

qnorm(p,mean,sd) p deve essere o uno scalare che continiene un numero fra 0 e 1; oppure può

essere un vettore che contiene un insieme di probabilità . Dunque un valore singolo di probabilità

o un insieme .

rnorm(n,mean,sd) genera numeri casuali estratti da una distribuzione normale. n è il numero di

osservazioni che vogliamo campionarie.

Esempio Questi pallini sono valori di densità, cioè sono i valori che

ottengo calcolando l’integrale da -inf a un tot, nel primo

caso dino a 3, poi fino a 8, ecc..

Se un valore sta sopra o sotto alla media, in questo caso

vediamo 8 e 12, il valore di densità è comunque positivo.

Questi due (8 e 12) hanno la stessa distanza assoluta

dalla media 10. E' infatti una distribuzione simmetrica.

In questo caso più il valore della variabile che ci interessa

cresce, più il valore di densità cumulata andrà a crescere.

Notare che il valore dei quantili sono i risultati dei rispettivi

punti in F.

NB: se voglio sapere il valore di f(8) avendo il risultato di f(12) basta fare 1- f(12). E viceversa,

infatti quei due punti sono simmetrici e hanno gli stessi punti di densità.

<=12.

f(12) calcola la probabilità che x assuma valori Dato che x è una variabile continua, lo

spazio campionario va da -inf a 12. Pagina 3 di 5

A sx ci sono 3 possibili funzioni di densità associate al modello della coppia di parametri m=0 ,

var=3 ; poi m=5 var=5 e poi m=8 var=10.

Ora usiamo R Studio.

Apriamo il file di dati scaricato “disegnoNormaleR”, dove gli ordini sono preimpostati.

Permette di visualizzare gli integrali associati alla funzione di densità cumulata. Dato il punto in

ascissa, 2, che è associato alla funzione quantile 2, ci mostra l’integrale associato al punto 2.

Se cambiamo con 10, cambia chiaramente il grafico.

Per calcolare il valore di tali integrali tratteggiati con R, nel nostro esempio possiamo fare

pnorm(2,Media,Ds). Inoltre vediamo la differenza dei grafici se usiamo pnorm(10,Media,Ds)

Pagina 4 di 5

Invece facendo partire entrambi i quantili 10 e 8 come si vede già sotto, ci esce:

Questa è un’area evento particolare. Qual è la probabilità che x assuma valori sull’intervallo 8-10?

Se devo calcolare l’intervallo da 8 a13 posso fare:

pnorm(13,10,5) — pnorm(8,10,5)

Se invece devo fare da 8 a 10, dove 10, il limite superiore, corrisponde la media, basta fare 0,5

(integrale da -inf alla media) — l’integrale che va fino a 8.

In definitiva basta fare pnorm dell’intervallo più ampio - quello che si trova nella parte inferiore, a

sx. Ricordiamo infatti che gli integrali partono da sinistra, da -inf. Pagina 5 di 5

14/11/17

Oggi vediamo la distribuzione t di student, la distribuzione del chi2 e altre

FUNZIONE t DI STUDENT

E' una distribuzione che caratterizza il comportamento di una variabile causale continua che ha D

in R e come la normale, anche la distribuzione t di student è simmetrica.

Nella normale i parametri governano tramite la media anche la posizione delle cose, invece la

distribuzione t student è sempre centrata attorno al valore 0. 0 è l’unico valore di media.

La t di student è caratterizzata anche dai gdl che dipendono dalla grandezza, numero del

campione di osservazioni (N).

L’unico argomento è quindi caratterizzato dai gdl (df) che sono valori sempre positivi che variano

in funzione della numerosità campionaria.

dt(x,df)

d x df

sta per densità ; è un numero oppure un vettore ; è appunto il gdl. Ci da uno scalare se x è

solo un numero, oppure un vettore di valori di densità se x è un vettore di numeri reali.

pt(x,df) è la funzione per il calcolo della funzione cumulata della distribuzione t student e gli

argomenti sono uguali ai precedenti. Ci da i valori di densità cumulata associati al vettore x.

qt(p,df) p

è la funzione del quantile. Qui abbiamo che esprime probabilità. p può essere un

numero/scalare oppure un vettore. Ci da tot valori di quantili.

rt(n,df) è la funzione per avere un vettore casuale di tot osservazioni. Pagina 1 di 5

Sono esempi di distribuzioni t che

variano in base ai gradi di libertà (df).

Entrambe sono centrate attorno a 0.

Al diminuire dei gdl le code sono più

estese, e accumula maggiore varianza

sulle estremità della code.

All’aumentare dei gdl la distribuzione di

restringe.

Usiamo il t student con un campione, con campioni indipendenti, con campioni appaiati.

Lo usiamo anche coi modelli id regressione.

DISTRIBUZIONE CHI2

A differenza della normale e della t student, NON è una rappresentazione simmetrica.

La distribuzione chi2 è definita su una variabile casuale continua che assume valori NON negativi.

Perciò la variabile casuale associata al chi2 non ha D in R, ma il D di riferimento, cioè l’ascissa,

sarà R+.

Dato che non è simmetrica non possiamo lavorare su complementazione.

Definita dai gdl (df), calcolati secondo la regola: N righe della tc -1 X N colonne della tc -1.

Pagina 2 di 5

Sulla sx c'è la funzione densità, a dx

densità cumulate.

La relazione fra forma e il variare dei gdl,

è che tenedenzialmente la distribuzione

di densità chi2 ha questo

comportamento:

Maggiori sono i gdl, più c'è uno

spostamento verso destra.

Mettiamo che abbiamo 1 variabile categoriale A che contiene 3 classi (3 professioni).

Quando table viene usata su categoriali, diventa una tabella unidimensionale.

Se applichiamo table come argomento del chi2 su variabili categoriali, il risultato sarà un modello

di chi2 che va a testare un’ipotesi specifica, ma dato che manca l’altra variabile, va solo a vedere

se le frequenze relative delle tre classi sono uguali o no.

Di solito comunque il chi2 viene applicato su coppie di variabili categoriali.

Abbiamo gdl=2 in caso di tabella contingenza 3x2 , o tc di ordine 2x3 o nel caso di un’unica

variabile categoriale a tre livelli, dunque gdl=3-1 = 2.

Funzione points: In R come facciamo a disegnare 3 grafici sovrapposti dobbiamo usare points e

non plot. Hanno argomenti uguali ma points permette di sovrascrivere su grafici precedentemente

costruiti. Dunque si usa plot per il primo mentre si usa points per eventuali altri.

La seguente tabella non fa parte dell’esame - Il primo blocco riguarda la

distribuzione uniforme, che

campiona valori numerici, con

minimo a e massimo b. E' una

funzione perfettamente uniforme,

tutti i valori compresi tra a e b

hanno la stessa probabilità di

essere estratti.

- il secondo blocco è una

distribuzione esponenziale. Tale

funzione ha lambda come

parametro. E' un parametro positivo

e più tale valore cresce, più la

distribuzione si sposta a destra.

- La funzione gamma

NB: La funzione F di Fisher-Snedecor è una distribuzione teorica di probabilità da usare per

l’analisi della varianza. E' una distribuzione di probabilità continua che ha 2 gdl (df1 e df2).

Pagina 3 di 5


ACQUISTATO

1 volte

PAGINE

109

PESO

62.84 MB

AUTORE

30elodee

PUBBLICATO

8 mesi fa


DETTAGLI
Corso di laurea: Corso di laurea in scienze e tecniche di psicologia cognitiva (ROVERETO)
SSD:
Università: Trento - Unitn
A.A.: 2018-2019

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher 30elodee di informazioni apprese con la frequenza delle lezioni di Analisi dei dati e tecnologie informatiche e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Trento - Unitn o del prof Lombardi Luigi.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!