J'ai une boucle qui traverse une trame de données, exécute ttests et stocke la valeur p résultante de chaque test dans une autre trame de données.La boucle ttest non appariée mais non appariée en R fonctionne
Voici la boucle où 'mydata' est l'espace de données sur lequel les tests sont exécutés. 'Mydata' est une trame de données avec 4 colonnes:
df <- mydata
mydf <- data.frame(c(1:4))
# this is the new dataframe being initialized to store my p-values
row.names(mydf) <- names(df)
for(i in names(df)){
if(sd(df[[i]]) == 0) {
# this prevents the loop from terminating and returning an error when ttests
# are run on columns with binary values
} else {
ttest <- t.test(df[df$Pre==1,][[i]], df[df$Pre==2,][[i]], paired=FALSE)
# 'Pre' is the column that groups my data into
# distinct cohorts. I am comparing the Pre cohort versus the Post cohort
# in these ttests.
mydf[i,1] <- ttest$p.value
}
}
mydf
Voici ma sortie de mydf pour un non apparié (apparié = FAUX) TTEST:
c.1.4.
density 0.3569670
clust 0.9715987
Pre 3.0000000
HC 4.0000000
Cependant, quand je change apparié = FALSE à apparié = TRUE (pour exécuter un test t apparié), voici mydf:
c.1.4.
density 1
clust 2
Pre 3
HC 4
je suis arrivé cette ligne de ma boucle dans l'isolement en utilisant la première colonne de ma trame de données, « 1 » entre crochets doubles (par paires = TRUE) et il semble produire une valeur p :
ttest <- t.test(df[df$Pre==1,][[1]], df[df$Pre==2,][[1]], paired=TRUE)
ttest$p.value
[1] 0.356967
est Ci-dessous un ensemble de données de l'échantillon que vous pouvez utiliser pour reproduire l'erreur:
density clust Pre HC
RDHC008A_13 0.47991 0.676825 1 1
RDHC009A_13 0.49955 0.696441 1 1
RDHC010A_16 0.491454 0.706507 1 1
RDHC013A_13 0.442879 0.689118 1 1
RDHC014A_13 0.453823 0.691603 1 1
RDHC016A_16 0.481259 0.706978 1 1
RDHC019A_06 0.515442 0.699514 1 1
RDHC021A_15 0.449925 0.685202 1 1
RDHC022A_12 0.461319 0.705446 1 1
RDHC023A_11 0.468816 0.667698 1 1
RDHC024A_12 0.515142 0.719474 1 1
RDHC025A_13 0.496702 0.710877 1 1
RDHC026A_12 0.477061 0.695061 1 1
RDHC027A_12 0.515442 0.722269 1 1
RDHC029A_12 0.406747 0.669998 1 1
RDHC030A_12 0.476162 0.69219 1 1
RDHC032B_13 0.50075 0.685474 1 1
RDHC034B_07 0.525487 0.725558 1 1
RDHC036B_07 0.468816 0.698904 1 1
RDHC038B_07 0.470015 0.706668 1 1
RDHC039B_07 0.511544 0.712818 1 1
RDHC041A_14 0.551574 0.732983 1 1
RDHC004C_12 0.486207 0.695121 2 1
RDHC005C_12 0.505997 0.695598 2 1
RDHC006C_13 0.487406 0.697044 2 1
RDHC013C_12 0.41979 0.685518 2 1
RDHC015C_13 0.297751 0.69632 2 1
RDHC016C_16 0.463718 0.700011 2 1
RDHC019C_14 0.508096 0.690071 2 1
RDHC021C_12 0.448426 0.688265 2 1
RDHC022C_12 0.468816 0.700968 2 1
RDHC024C_12 0.515292 0.70664 2 1
RDHC025C_13 0.473163 0.704231 2 1
RDHC027C_12 0.518741 0.732939 2 1
RDHC030C_11 0.489205 0.708174 2 1
Vous pouvez l'importer en procédant comme suit:
copier les données et le coller dans le guillemets du code ci-dessous dans R:
zz <- ""
maintenant, affecter les données à un data.frame:Je n'ai aucune idée pourquoi le changement du paramètre 'paired' à TRUE provoquerait que cela se produise. Toute aide/conseil serait très apprécié. Merci - Paul
Ceci semble très inhabituel, vous devriez fournir un [exemple reproductible] (https://stackoverflow.com/questions/5963269/how-to-make-a -great-r-reproducible-example) avec des exemples de données d'entrée que nous pouvons exécuter pour vérifier (il ne doit pas être vos données réelles). On dirait qu'il y a peut-être une faute de frappe ailleurs. – MrFlick
@MrFlick - ok, merci, je vais travailler sur la fourniture de cet exemple – user8271479
Selon [t.test] (https://stat.ethz.ch/R-manual/R-devel/library/stats/html/ t.test.html), quand 'paired = TRUE'' x' et 'y' doivent avoir la même longueur. Il semble que votre test isolé a échoué et que «ttest» ne faisait que montrer une ancienne valeur. – Marcelo