Anteprima
Vedrai una selezione di 13 pagine su 59
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 1 Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 2
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 6
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 11
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 16
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 21
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 26
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 31
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 36
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 41
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 46
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 51
Anteprima di 13 pagg. su 59.
Scarica il documento per vederlo tutto.
Disegni di ricerca e analisi dei dati in psicologia clinica Pag. 56
1 su 59
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

A B C

18 19 21

Quindi ci viene detto quali elementi abbiamo e quante volte sono ripetuti.

Funzione subset (nome del database di partenza, regola di sottocampionamento = in base a

che cosa vogliamo sottocampionare). Al posto di prova quello che otteniamo si chiamerà

bar_a.

bar_a <- subset(prova, Bar==“A”)

e otteniamo una tabella nuova in cui ora abbiamo solo elementi A nella colonna Bar con la

rispettiva riga di riferimento (quindi avremo solo gli elementi A, non tutti).

Subset su più condizioni: vogliamo avere un bar_ac che contenga o A o C. La linea verticale

corrisponde a or = |.

bar_ac <- subset(prova, c(Bar==“A”|Bar==“C”))

Oppure possiamo ottenere lo stesso identico dataframe eliminando B:

bar_ac2 <- subset(prova, Bar!= “B”)

Come esportare un database? Usiamo la funzione write.table. Il secondo elemento è il nome

che gli diamo. Mettiamo l’estensione, ovvero csv. Infine abbiamo header che però si chiama

diversamente, ovvero col.names. A noi ci interessa il numero delle righe? No, allora mettiamo

falso. Se no avremmo una prima colonna con il numero delle righe e chiamata con il nome che

abbiamo dato alla prima colonna.

LEZIONE 4.

str(dati_2)

nrow(dati_2) e otteniamo 100 che sono le righe;

ncol(dati_2) e otteniamo 5 che sono le colonne;

dim(dati_2) e otteniamo 100 5 = ci permette di ottenere le dimensioni di un oggetto (in questo

caso un data frame ha righe e colonne);

colnames(dati_2) ci permette di richiamare tutti i nomi delle colonne;

Dentro la colonna genere quanti sono gli 1 e quanti sono i 2?

dati_2$genere otteniamo tutti i numeri, sia gli 1 che i 2

table(dati_2$genere) otteniamo che gli 1 sono 54 e i 2 46.

Come modificare il nome della colonna genere in SB?

colnames(dati_2)[1] <- “SB”

colnames(dati_2)

Ifelse: condizione che vogliamo che si avveri, valori in caso di if, valori in caso di else.

Vogliamo sostituire gli 1 con il carattere F e i 2 con il carattere M. Se gli elementi di dati_2-SB

sono uguali uguali a 1 mettere F, altrimenti M.

dati_2$SB

ifelse(dati_2$SB==1,”F”,”M”)

Come fare se abbiamo tre condizioni e non più due? Usiamo which.

which(dati_2$SB==1)

dati_2[which(dati_2$SB==1),1] <- “F”

dati_2[which(dati_2$SB==1),1] mi dice character (0) perchè abbiamo sostituito gli 1 con F

quindi gli 1 non esistono più.

dati_2$SB dati_2[which(dati_2$SB==“2”),1]<-“M” R quando ha caratteri e numeri nel dubbio

mette anche i numeri come caratteri, quindi in questo caso il 2 va messo tra virgolette.

*se non avessimo messo le virgolette in F perché se no significherebbe false, quindi zero. Con

la funzione attach diciamo a R che stiamo lavorando sempre con quel data frame, fino a che

non mettiamo detach (a questo punto dovremo utilizzare il dollaro). È utile se si lavora con un

solo data frame mentre con più di uno è meglio di no.

attach(dati_2)

SB

detach(dati_2)

Creiamo una nuova colonna che si chiama item. Le prime venti celle sono il numero 1, poi 2, poi

3, poi 4, poi 5 (in totale 100 items). Come fare l’inversione di un punteggio? Per invertire un

punteggio, data una scala, si prendono gli estremi (1 e 5), si sommano e basta sottrarre

qualunque valore della scala in questione.

dati_2$item <- rep(1:5,each=20)

dati_2$item_invertiti <- 6-dati_2$item

dati_2$item_invertiti

Così mi compaiono due nuove colonne, la prima con i dati come sopra descritto mentre la

seconda con i dati invertiti rispetto a tale colonna (quindi anziché 1 avremo 5, anziché 2 avremo

4, etc).

ESERCIZI A CASA:

table(prova$Bar)

summary(prova$Spritz)

summary(prova$Ore_studio)

Creare un subset “sub1” in cui c’è solo chi studia più di 10 ore.

sub1 = subset(prova, Ore_studio> 10)

dim(sub1)

Creare un subset “sub2” in cui c’è solo chi beve più di 4 spritz e studia meno di 4 ore.

sub2 = subset(dati, Spritz > 4 & Ore_studio < 4)

dim(sub2)

Usando il dataset originale, in media quanti spritz si bevono nel bar C?

barc = subset(dati, Bar == “C”)

mean(barc$Spritz) # 5.095238

Creare una variabile “corso” che contenga il corso di studio. Nelle prime 13 righe inserire

psicologia, nelle seconde 13 inserire ingegneria, nelle 13 successive inserire biologia, nelle ultime

13 inserire statistica.

prova$corso = c(rep(“psico”,13),rep(“ing”,13),rep(“bio”,13),rep(“stat”,13),rep(“NA”,6))

table(dati$corso)

In quale corso si bevono più spritz in media?

psico = subset(prova, corso ==“psico”)

ing = subset(prova, corso ==“ing”)

bio = subset(prova, corso ==“bio”)

stat = subset(prova, corso ==“stat”)

mean(psico$Spritz) # 6.53 a psicologia

mean(ing$Spritz)

mean(bio$Spritz)

mean(stat$Spritz)

boxplot(prova$Spritz ~ prova$corso) e otteniamo il grafico

Creare una matrice 4X4 che contenga i numeri da 10 a 25 ordinati per riga.

M = matrix(10:25), 4, 4, byrow = T)

M

LEZIONE 5.

Vogliamo calcolare l’alpha di Cronbach. Per importare un pacchetto utilizziamo library

(psych). All’interno di psych abbiamo la funzione alpha. Otteniamo: Some items were

negatively correlated with the total scale and probably should be reversed. Intervalli di

confidenza: intervallo di valore in cui è ragionevole trovare il nostro valore, estraendolo a

caso. C’è un lower e un upper.

Affidabilità se un item è tolto: vediamo sempre raw alpha e s alpha se togliessimo uno

specifico item. Togliendo pre7 e pre11 l’alpha cresce ma noi prima di eliminarli dobbiamo

girarli, perchè sono negativamente correlati. In items statistics vediamo che in 39 hanno

risposto. Dopo vediamo varie colonne con r dove r è la correlazione. Conviene prendere r

core. Come possiamo tenere solo quello che ci serve, eliminando le altre colonne?

Indicizzazione. Alpha però non è un vettore. Possiamo assegnarlo a un oggetto, che dopo

conterrà tutte le tabelle da cui poi estrarre.

library(psych)

alpha(Ansia)

risultati<-alpha(Ansia)

Otteniamo una lista “risultati”, che è un contenitore di tanti oggetti. Ogni oggetto avrà il suo

spazio che potremo recuperare indicizzando. Cliccando nella tabellina accanto otteniamo

nella console il modo per recuperare quell’elemento; facendo invio poi otteniamo il risultato.

risultati[[“total”]][[“raw_alpha”]]

[1] 0.4696922

Oppure possiamo anche scrivere: risultati[[1]][[1]] perchè sono i primi elementi

Oppure: risultati$total$raw_alpha

Come richiamare nella condizione reliability if an item is dropped: raw_alpha e std.alpha.

utilizziamo la funzione cbind che ci mette i valori in colonna mentre c li metterebbe in riga.

cbind(risultati[[“alpha.drop”]][[“std.alpha”]],risultati[[“alpha.drop”]][[“raw_alpha”]])

Possiamo anche usare:

risultati$alpha.drop[,1:2]

risultati[[“alpha.drop”]][,1:2]

Come richiamare r core?

risultati$item.stats$r.cor

cbind(risultati$item.stats$r.cor)

Per avere tutte e tre le colonne vicine facciamo:

cbind(risultati[[“alpha.drop”]][,1:2],cbind(risultati$item.stats$r.cor)) oppure

cbind(risultati[[“alpha.drop”]][,1:2],(risultati$item.stats$r.cor))

Sommare valore minimo e massimo della scala (1 e 4 = 5) e sottrarre tutti i valori della

colonna ansia pre7. Pre7_inv è la dodicesima colonna.

Ansia$PRE_7_inv <- 5-Ansia$PRE_7

Togliamo poi la colonna 7 nell’andare a ricalcolare alpha.

alpha(Ansia[,c(1:6,8:12)])

Invertiamo anche l’11 ora:

Ansia$PRE_11_inv <- 5-Ansia$PRE_11

alpha(Ansia[,c(1:6,8:10,12,13)])

Se avessimo avuto una sola sequenza: alpha(Ansia[,3:17])

L’alpha migliora e non abbiamo più il warning; nessuna alpha migliora se diminuiamo items.

Il PRE_11 ha una correlazione di 0.10, per cui potremmo pensare di eliminarlo. Se vogliamo

conservare il maggior numero di item, li terrò anche se la correlazione è bassa (maggiore

di 0.10). Se ne voglio tenere di meno, alzo il valore di correlazione a 0.20. All’esame

possiamo usare entrambe le soglie, basta dichiararlo. Un questionario con 10 items a cui

ne togliamo 4 è però troppo invasivo e conviene preferire la legge della parsimonia

(seguire una regola ragionando).

LEZIONE 6.

Vogliamo calcolare il K di Cohen. Questi sono tutti modi diversi per recuperare i dati in

una matrice:

table(dati$Opa,dati$Opb) dati è il nome del database.

tab <- matrix(c(18,2,3,26),2,2,byrow = T)

tab

tab1 <- table(dati$Opa,dati$Opb)

tab1

tab2 <- matrix(table(dati$Opa,dati$Opb),2,2,byrow = T)

tab2

Ora vogliamo calcolare i marginali di riga e di colonna: rowSums e colSums sono le

funzioni e basta metterci dentro il nome della matrice. Nel primo caso otteniamo i

marginali in riga mentre nei casi sotto li aggiungiamo direttamente alla matrice.

colSums(tab2)

tab2<-rbind(tab2,colSums(tab2)) la associamo a tab2 perché così sovrascriviamo e

aggiorniamo tab2

tab2 <- cbind(tab2,rowSums(tab2))

tab2

Calcoliamo gli accordi osservati, N e gli accordi attesi:

a_oss <- 18+26

N <- 49

aa0 <- (21*20)/N primo marginale di riga x primo marginale di colonna

aa0

Possiamo fare anche così per calcolare gli accordi attesi utilizzando l’indicizzazione:

elemento nella riga 1 e colonna 3 ed elemento nella riga 3 e colonna 1.

aa0 <- (tab2[1,3]*tab2[3,1])/N

aa0

aa1 <- (28*29)/N

aa1

aa1 <- (tab2[2,3]*tab2[3,2])/N

aa1

aa <- aa0+aa1

aa

Ora abbiamo tutti gli elementi per calcolare il K di cohen:

cohen_kappa= (a_oss-aa)/(N-aa)

round(cohen_kappa,2) per arrotondare e terniamo 0.79 (accordo eccellente)

Secondo modo per calcolare il k di Cohen utilizzando una funzione. Dobbiamo però

sbloccare il pacchetto irr. Dentro questo pacchetto abbiamo la funzione kappa2. Inseriamo

le colonne che ci interessano, in questo caso sono solo due le colonne.

library(irr)

kappa2(cbind(dati$Opa,dati$Opb))

kappa2(cbind(dati$Opa,dati$Opb))$value

round(kappa2(cbind(dati$Opa,dati$Opb))$value,2)

Metodo usato negli esercizi:

table(kappa_2)

M = as.matrix(table(kappa_2))

M

+ uno dei due procedimenti

Esercizio fatto in classe con dati di “benessere”:

library(psych)

# calcolo l’alpha per la prima volta

alpha(dati[,3:17])

# identifico il valore minimo di tutti gli items

min(dati[,3:17])

# identifico il valore massimo di tutti gli items

max(dati[,3:17])

#inverto l’item PRE12

dati$PRE12_inv <- 5-dati$PRE12

# ricalcolo l’alpha

alpha(da

Dettagli
Publisher
A.A. 2023-2024
59 pagine
SSD Scienze storiche, filosofiche, pedagogiche e psicologiche M-PSI/08 Psicologia clinica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher DalilaPane di informazioni apprese con la frequenza delle lezioni di Disegni di ricerca e analisi dei dati in psicologia clinica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Granziol Umberto.