• Non ci sono risultati.

Alcune istruzioni R per le tabelle di contingenza

N/A
N/A
Protected

Academic year: 2021

Condividi "Alcune istruzioni R per le tabelle di contingenza"

Copied!
10
0
0

Testo completo

(1)

Alcune istruzioni R

per le tabelle di contingenza

Eva Riccomagno, Maria Piera Rogantin

DIMA – Universit`a di Genova

(2)

(esempio delle dispense)

pulse=read.table("C:/DATA/pulse.txt",header=T,row.name=1)

##Lettura dati

• (ai livelli delle variabili ACTIVITY e SEX sono state assegnate opportune etichette)

pulse$ACTIVITY=ordered(pulse$ACTIVITY, levels=c(0,1,2,3), labels=c("no","poca", "media","molta") )

pulse$SEX=factor(pulse$SEX, levels=c(1,2), labels=c("M","F") )

• tabelle “a una via” - frequenze assolute (o conteggi) e relative

tab=table(ACTIVITY)

freq=prop.table(tab) ## distribuzione

cbind(tab,round(freq,4),round(freq*100,2))

• diagrammi a barre della distribuzione di una var. qualitativa

barplot(freq,cex.names=2,cex.axis=2) ## cex definisce la dimensione

(3)

• tabelle “a due vie” - frequenze assolute e relative

SA=table(SEX,ACTIVITY) ## in riga SEX, in colonna ACTIVITY round(prop.table(SA)*100,2)

AS=table(ACTIVITY,SEX) ## in riga ACTIVITY, in colonna SEX colnames(AS); rownames(AS)

## vettori contenenti le etichette delle variabili riga e colonna rownames(AS)[1]; rownames(AS)[2]

dim(AS) ## vettore con due elementi dim(AS)[2]

• marginali nelle tabelle “a due vie”

margin.table(SA,1) ## marginale riga assoluto margin.table(SA,2) ## marginale colonna assoluto

• visualizzare la tabella con i marginali

rbind(cbind(SA,margin.table(SA,1)),c(margin.table(SA,2),sum(SA)))

(4)

• profili riga

row_pr=prop.table(SA,1)

round(row_pr*100,2) # ciascuna riga somma a 100

row_pr[1,] # visualizza il primo profilo riga row_pr[2,] # visualizza il secondo profilo riga

• barplot dei profili riga

barplot(row_pr[1,],ylim=c(0,1),main="Maschi", cex.names=2,cex.axis=2,cex.main=2)

## main = definisce il titolo del grafico

abline(h=0) ## aggiunge una riga orizzontale in corrispondenza d 0 barplot(row_pr[2,],ylim=c(0,1),main="Femmine",

cex.names=2,cex.axis=2,cex.main=2) abline(h=0)

## ylim definisce i limiti dell’asse verticale

## uguali nei due grafici per confrontarli

per avere sulla stessa finestra i due grafici

par(mfrow=c(1,2))

#suddivide la finestra grafica in una riga e due colonne barplot(row_pr[1,],ylim=c(0,1),main="Maschi")

abline(h=0)

barplot(row_pr[2,],ylim=c(0,1),main="Femmine") abline(h=0)

par(mfrow=c(1,1)) #ripristina la finestra grafica

(5)

• profili colonna

col_pr=prop.table(SA,2)

round(col_pr*100,2) # ciascuna colonna somma a 100 col_pr[,1]; col_pr[,2]; col_pr[,3]; col_pr[,4]

• barblot dei profili colonna

par(mfrow=c(1,4))

barplot(col_pr[,1],ylim=c(0,1),main=colnames(col_pr)[1]) abline(h=0)

barplot(col_pr[,2],ylim=c(0,1),main=colnames(col_pr)[2]) abline(h=0)

barplot(col_pr[,3],ylim=c(0,1),main=colnames(col_pr)[3]) abline(h=0)

barplot(col_pr[,4],ylim=c(0,1),main=colnames(col_pr)[4]) abline(h=0)

par(mfrow=c(1,1))

oppure - uso del ciclo for

par(mfrow=c(1,4)) for (j in 1:4) {

barplot(col_pr[,j],ylim=c(0,1),main=colnames(col_pr)[j]) abline(h=0)

}

par(mfrow=c(1,1))

(6)

• deviazioni dei profili riga dal totale colonna

rel_marg_col=prop.table(margin.table(SA,2))

## costruzione di una tabella/matrice con ciascuna riga

## uguale al marginale colonna

t_rel_marg_col=matrix(rep(rel_marg_col,dim(SA)[1]), byrow=T,ncol=dim(SA)[2]) row_dev=row_pr-t_rel_marg_col

round(row_dev*100,1)

• barplot delle deviazioni dei profili riga dal totale colonna

par(mfrow=c(1,2))

for (i in 1:dim(SA)[1]) {

barplot(row_dev[i,],ylim=c(min(row_dev),max(row_dev)),main=rownames(SA)[i]) abline(h=0)

}

par(mfrow=c(1,1))

(7)

• aggiungere un titolo generale nella finestra grafica

par(mfrow=c(1,2),oma=c(0,0,2,0)) for (i in 1:dim(SA)[1])

{

barplot(row_dev[i,],ylim=c(min(row_dev),max(row_dev)),main=rownames(SA)[i]) abline(h=0)

}

mtext("Deviazioni profili riga dal marginale colonna", outer = TRUE,cex=2) par(mfrow=c(1,1))

(8)

• profili colonna - attenzione a che cosa cambia

rel_marg_row=prop.table(margin.table(SA,1))

## costruzione di una tabella/matrice con ciascuna colonna

## uguale al marginale riga

t_rel_marg_row=matrix(rep(rel_marg_row,dim(SA)[2]), byrow=F,ncol=dim(SA)[2]) col_dev=col_pr-t_rel_marg_row

round(col_dev*100,1)

par(mfrow=c(1,4),oma=c(0,0,2,0)) for (j in 1:dim(SA)[2])

{

barplot(col_dev[,j],ylim=c(min(col_dev),max(col_dev)),main=colnames(SA)[j]) abline(h=0)

}

## aggiunge testo in alto (oma=c(0,0,2,0) indica la posizione)

mtext("Deviazioni profili riga dal marginale colonna", outer = TRUE,cex=2) par(mfrow=c(1,1))

(9)

• Leggere e usare i dati gi` a in formato di tabella di contingenza

> DF_esempio=read.table(text=

+ " B1 B2 B3 + A1 35 10 5 + A2 30 150 20

+ A3 35 90 125",header=T,row.names=1)

> prop.table(DF_esempio) B1 B2 B3

A1 0.07 0.02 0.01 A2 0.06 0.30 0.04 A3 0.07 0.18 0.25

> margin.table(DF_esempio,1)

Error in margin.table(DF_esempio,1) : ’x’ is not an array

> esempio=as.matrix(DF_esempio)

> margin.table(esempio,1) A1 A2 A3

50 200 250

oppure

es1=matrix(c(35,10,5,30,150,20,35,90,125),byrow=T,ncol=3)

colnames(es1)=c("B1","B2","B3");rownames(es1)=c("A1","A2","A3")

(10)

• Tabelle a tre vie

> t1=table(SEX,ACTIVITY,SMOKES)

> t1

La prima variabile ` e scritta sulle righe, la seconda sulle colonne e la terza su diverse tabelle a due vie.

, , SMOKES = 1

ACTIVITY

SEX 0 1 2 3 1 1 2 13 4 2 0 1 6 1

, , SMOKES = 2

ACTIVITY

SEX 0 1 2 3 1 0 3 22 12 2 0 3 20 4 margin.table(t,n) e prop.table(t,n)

sono riferiti alla tabella t per la variabile n-esima.

margin.table(t1, 1) SEX

1 2 57 35

margin.table(t1, 2) ACTIVITY

0 1 2 3 1 9 61 21

margin.table(t1, 3) SMOKES

1 2

28 64

Riferimenti

Documenti correlati

=⇒ Non serve specificare la dimensione del vettore nel parametro formale ( `e un puntatore al tipo degli elementi del vettore).. Quando passiamo una matrice ad una funzione, per

In Fisica, per gruppo di simmetria interna (o gruppo di gauge) di una teoria si intende, in generale, un gruppo nel quale gli elementi si possono rappresentare (mediante

Per provare che i vettori di˚ sono linearmente indipendenti supponiamo di avere una combinazione lineare uguale al vettore nullo e proviamo che allora i coefficienti della

Judging from the contents of their book, the authors probably would not see the more qualitative methods derived from ethnography and social anthropology as highly useful in

From these studies, Hnatowich and his group concluded that biodis- tribution of intravenously administered oligonucleotides depends on the method for radiolabeling the

The increased efficiency of the conditioned heart to deliver more blood to the body and the redistribution of that blood with exercise enables the muscles of the body to do work

Il teorema di Pitagora puo’ essere espresso nella forma seguente: se due vettori v e w sono fra loro ortogonali, allora il quadrato della... Lunghezza di un vettore

Audizione CNA 31 agosto 2020.. MISURE PER IL LAVORO ... Sostegno al reddito ... Proroga blocco licenziamenti ... Esoneri contributivi ... Contratti a tempo determinato ... Fondo