Questa è la prima volta che pubblico questo forum e voglio dire fin dall'inizio che non sono un abile programmatore. Quindi, per favore fatemi sapere se la domanda o il codice non erano chiari!Come eseguire il bootstrap rispettando le informazioni interne?
Sto cercando di ottenere l'intervallo di confidenza del 95% (CI) per un'interazione (ovvero la statistica del test) eseguendo il bootstrap. Sto usando il pacchetto "boot". Il mio problema è che per ogni ricampionamento, vorrei che la randomizzazione fosse fatta all'interno dei soggetti, in modo che le osservazioni di soggetti diversi non venissero mischiate. Ecco il codice per generare un dataframe simile al mio. Come potete vedere, ho due fattori entro soggetti ("Num" e "Gram" e sono interessato nell'interazione tra entrambi):
Subject = rep(c("S1","S2","S3","S4"),4)
Num = rep(c("singular","plural"),8)
Gram = rep(c("gram","gram","ungram","ungram"),4)
RT = c(657,775,678,895,887,235,645,916,930,768,890,1016,590,978,450,920)
data = data.frame(Subject,Num,Gram,RT)
Questo è il codice che ho usato per ottenere il valore dell'interazione empirica :
summary(lm(RT ~ Num*Gram, data=data))
Come si può vedere, l'interazione tra i miei due fattori è -348. Voglio ottenere un intervallo di confidenza di bootstrap per questa statistica, che posso generare utilizzando il "boot" pacchetto:
# You need the following packages
install.packages("car")
install.packages("MASS")
install.packages("boot")
library("car")
library("MASS")
library("boot")
#Function to create the statistic to be boostrapped
boot.huber <- function(data, indices) {
data <- data[indices, ] #select obs. in bootstrap sample
mod <- lm(RT ~ Num*Gram, data=data)
coefficients(mod) #return coefficient vector
}
#Generate bootstrap estimate
data.boot <- boot(data, boot.huber, 1999)
#Get confidence interval
boot.ci(data.boot, index=4, type=c("norm", "perc", "bca"),conf=0.95) #4 gets the CI for the interaction
mio problema è che credo che le ricampiona dovrebbero essere generati senza mescolare i singoli soggetti osservazioni: questo è , per generare i nuovi campioni, le osservazioni del soggetto 1 (S1) dovrebbero essere mescolate all'interno del soggetto 1, non mescolandole con le osservazioni dei soggetti 2, ecc ... Non so come "boot" sta facendo il ricampionamento (Ho letto la documentazione ma non capisco come funziona la funzione)
Qualcuno sa come posso verificare che la procedura di ricampionamento utilizzata da "boot" rispetti le informazioni a livello di soggetto?
Grazie mille per il vostro aiuto/consiglio!
+1 per una prima domanda molto bella, ma è necessario eliminare anche l'altra versione che è stata [migrata da CrossValidated] (http://stackoverflow.com/questions/17473321/how-to-bootstrap-respecting-subject -level-informazione). – Thomas
@Thomas. Ops, l'ho dimenticato! Adesso è cancellato :) – Sol