Campionamento Stratificato

Carmen Belardo, Giovanni De Francesco, Carmela Uccello

Obiettivi della Presentazione

In questa presentazione, verrà illustrata la risoluzione di un problema utilizzando il metodo del campionamento stratificato.

L’esposizione sarà divisa in due fasi:

1)Scrittura della funzione generale.

2)Applicazione della funzione al dataset.

Cos’è il Campionamento Stratificato?

Il campionamento stratificato è una tecnica di campionamento in cui la popolazione N viene suddivisa in L gruppi omogenei o strati, e poi viene selezionato un campione casuale da ciascuno di questi strati.

Ogni sotto-campione viene estratto tramite il campionamento casuale semplice senza reimmissione, dunque il numero totale dei possibili campioni è pari al prodotto del numero dei possibili campioni estraibili in ogni strato.

Vantaggi:

  • possibilità di dividere una popolazione altamente eterogenea in sotto-popolazioni basando la stratificazione su deteminate informazioni ausiliari;

  • maggiore precisione nelle stime, minor variabilità;

  • dimensione campionaria contenuta a parità di efficienza.

Caricamento Del Dataset

library(readr)
studenti <- read_table("C:/Users/Admin/Downloads/studenti.txt", 
    comment = "#")

Il dataset riguarda il numero degli studenti presenti in aula durante la lezione di statistica, svolta al primo anno del corso di laurea in Scienze Politiche all’Università Federico II.

Gli anni oggetto di studio sono quelli tra il 1988 e il 1995.

Creazione Sottopopolazioni

Suddividiamo la popolazione in alcune sottopopolazioni distinte, all’interno delle quali le unità sono omogenee secondo qualche criterio.

In questo caso suddividiamo la nostra popolazione in base alla tipologia di diploma conseguito.

library(tidyverse)
stusci<-studenti%>%
  filter(dipsci==1)
stucla<-studenti%>%
  filter(dipcla==1)
stutec<-studenti%>%
  filter(diptec==1)
stualt<-studenti%>%
  filter(dipalt==1)

Scelta Variabile Indipendente

Dopo aver diviso la popolazione in 4 strati, dobbiamo selezionare la nostra variabile indipendente in ogni sottopopolazione. Successivamente uniamo tutto in un unica lista.

stusci<-stusci[,6]
stucla<-stucla[,6]
stutec<-stutec[,6]
stualt<-stualt[,6]
poplista<-list(stusci$altezza, stucla$altezza, stutec$altezza, stualt$altezza)

Determinazione della nh (Funzione)

Stabiliamo la numerosità campionaria per ciascuno strato.

nhp<-function(pop, N, h, C, SP){
  dem=0
  n=round((((1.96*SP)/5)^2)/(1+1/N*((((1.96*SP)/5)^2)-1)),)
  W=list()
  S=list()
  med=list()
  nh=list()
  t=0
  for (i in 1:h){
    W[i]<-(length(pop[[i]])/N)
    med[i]<-sum(pop[[i]])/length(pop[[i]])
    S[i]<-(sum((pop[[i]]-med[[i]])^2)/(length(pop[[i]])-1))
  }
  for(i in 1:h){
    t<-t+((W[[i]]*S[[i]])/sqrt(C))
  }
  for (i in 1:h){
    nh[i]<-round(n*(((W[[i]]*S[[i]])/sqrt(C))/t),)
  }
  print(nh)
}

Determinazione della nh (Applicazione)

Applichiamo quindi la nostra funzione al dataset. Prima però occorre trovare Sp.

SP<-(sum((studenti$altezza-mean(studenti$altezza))^2))/(nrow(studenti)-1)
nh<-nhp(poplista, 2759, 4, 1, SP)
[[1]]
[1] 142

[[2]]
[1] 152

[[3]]
[1] 246

[[4]]
[1] 25

Quindi otteniamo il numero di elementi da estrarre per ogni strato.

Estrazione Campione dallo strato (Funzione)

estraz<-function(n,dataloc){
 c<-sample(length(dataloc),n,replace = FALSE)
 dataloc[c]
}

Estrazione campione dallo strato (Applicazione)

Applico la funzione e unisco tutti i campioni in un unica lista.

campsci<-estraz(142,poplista[[1]])
campcla<-estraz(152,poplista[[2]])
camptec<-estraz(246,poplista[[3]])
campalt<-estraz(25,poplista[[4]])
camp<-list(campsci,campcla,camptec,campalt)

Funzione di Costo (Funzione)

Cost<- function(C0,Ch,camplist,h){
  z=0
  c=c()
  for (i in 1:h){
    c[i]=Ch*length(camplist[[i]])
    z=z+c[i]
  }
  C<-C0+z
  C
}

Funzione di Costo (Applicazione)

Come costo fisso ho assunto 450, mentre come costo variabile 1.

Costo<-Cost(450,1,camp,4)
Costo
[1] 1015

Stima della Media Campionaria(Funzione)

La media campionaria viene ottenuta come media aritmetica ponderata di tutte le medie yh in ogni strato del campione

stimed<-function(camplist,h){
  y<-0
  n<-0
  for(i in 1:h){
    n=n+(sum(length(camplist[[i]])))
  }
  for (i in 1:h){
    y<-y+(length(camplist[[i]])/n)*mean(camplist[[i]])
  }
  print(y)
}

Stima della Media Campionaria (Applicazione)

StimaMedia<-stimed(camp,4)
[1] 168.6549

Stima della media Campionaria (yst) (Funzione)

Invece qui la media campionaria la otteniamo tenendo conto della numerosità dello strato nella popolazione.

yst<- function(pop,camplist,h){
  N<-0
  for (i in 1:h){
    N<-N+(length(pop[[i]]))
  }
  y<-0
  for(i in 1:h){
    y=y+((length(pop[[i]])/N)*(mean(camplist[[i]])))
  }
  print(y)
}

Stima della media campionaria (yst) (Applicazione)

YST<-yst(poplista,camp,4)
[1] 168.5063

Stima Varianza della Media (Funzione)

varmed<-function(pop,camplist,h){
  N<-0
  for (i in 1:h){
    N<-N+(length(pop[[i]]))
  }
  V<-0
  for(i in 1:h){
    V<-V+(((length(pop[[i]])/N)^2)*((sum((camplist[[i]]-mean(camplist[[i]]))^2))/(length(camplist[[i]])-1)))
  }
  print(V)
}

Stima Varianza della Media (Applicazione)

VarMedia<-varmed(poplista,camp,4)
[1] 21.36011

Stima del totale (Funzione)

StimTot<-function(pop,Yst,h){
   N<-0
  for (i in 1:h){
    N<-N+(length(pop[[i]]))
  }
   t<-(N*Yst)
}

Stima del Totale (Applicazione)

Stimiamo il totale poichè stiamo studiando una variabile quantitativa.

StimaTotale<-StimTot(poplista,YST,4)
StimaTotale
[1] 464908.9

Varianza del Totale (Funzione)

Vartot<- function(pop,camplist,h){
  V<-0
  for (i in 1:h){
    V=V+((length(pop[[i]])*(length(pop[[i]])-length(camplist[[i]]))*((sum((camplist[[i]]-mean(camplist[[i]]))^2)/(length(pop[[i]])-1)))))/length(camplist[[i]])
  }
  print(V)
}

Varianza del Totale(Applicazione)

VarianzaTotale<-Vartot(poplista,camp,4)
[1] 146805.1

Campionamento Sistematico

Campionamento Sistematico

Il campione sistematico è particolarmente utilizzato se vi sono archivi da cui estrarre il campione.

Come nel campione casuale semplice, tutte le unità hanno la stessa probabilità di inclusione.

Per costruire un campione sistematico prima di tutto si procede con l’estrazione casuale tra le prime k unità della popolazione.

Successivamente a partire dall’unità estratta si procede con passo k per la selezione di tutte le altre.

Estrazione della Prima unità del Campione (Funzione)

NumCampMedia<-function(s,N,data) {
  n<-round((((1.96*s)/5)^2)/(1+1/N*((((1.96*s)/5)^2)-1)),)
  K<-round(N/n,)
  x<-data[0:K]
  print(x)
  y<-sample(x,1)
  print(y)
  z=c()
  for (i in seq(from=y,to=N,by=K)){
    z[i]=data[i]
  }
  z
}

Estrazione della prima unità dal Campione (Applicazione)

s<-(sum((studenti$altezza-mean(studenti$altezza))^2))/(nrow(studenti)-1)
n<-NumCampMedia(s,2759,studenti$id)
[1] 1 2 3 4 5
[1] 3
n<-na.omit(n)

Campionamento Stratificato VS Campionamento Sistematico

Rispetto al campionamento stratificato, in quello sistematico non vi è indipendenza tra le estrazioni nelle varie sottoliste