R工作中未配对但未配对的ttest循环
Unpaired but not paired ttest loop in R working
我有一个遍历数据帧的循环,运行s ttests 并将每个 ttest 的结果 p 值存储在另一个数据帧中。
这是循环,其中 'mydata' 是 ttest 运行 所在的数据帧。 'mydata' 是一个包含 4 列的数据框:
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
这是我的 mydf 未配对 (paired=FALSE) ttest 的输出:
c.1.4.
density 0.3569670
clust 0.9715987
Pre 3.0000000
HC 4.0000000
但是,当我将 paired=FALSE 更改为 paired=TRUE(运行 配对测试)时,这里是 mydf:
c.1.4.
density 1
clust 2
Pre 3
HC 4
我使用数据框的第一列(双括号中的“1”)(对于 paired=TRUE)单独检查了循环的这一行,它确实输出了一个 p 值:
ttest <- t.test(df[df$Pre==1,][[1]], df[df$Pre==2,][[1]], paired=TRUE)
ttest$p.value
[1] 0.356967
下面是一个示例数据集,您可以使用它来重现错误:
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
您可以通过执行以下操作导入它:
复制数据并将其粘贴在下面代码的引号内到 R:
zz <- ""
现在,将数据分配给 data.frame:
mydata <- read.table(text=zz, header=TRUE)
我不知道为什么将 'paired' 参数更改为 TRUE 会导致这种情况发生。任何 help/advice 将不胜感激。谢谢 - 保罗
您在此处使用值 1:4 初始化 mydf
data.frame
mydf <- data.frame(c(1:4))
基本上循环什么都不做,因为当你做 PAIRED=TRUE
时 t.test
会抛出一个错误,因为你的两组值的长度不一样(而且他们需要在做成对的时候t 检验。你有 22 个值,其中 Pre==1 和 13 个值,其中 Pre==2。你不能用这样的不平衡进行配对测试。
我有一个遍历数据帧的循环,运行s ttests 并将每个 ttest 的结果 p 值存储在另一个数据帧中。
这是循环,其中 'mydata' 是 ttest 运行 所在的数据帧。 'mydata' 是一个包含 4 列的数据框:
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
这是我的 mydf 未配对 (paired=FALSE) ttest 的输出:
c.1.4.
density 0.3569670
clust 0.9715987
Pre 3.0000000
HC 4.0000000
但是,当我将 paired=FALSE 更改为 paired=TRUE(运行 配对测试)时,这里是 mydf:
c.1.4.
density 1
clust 2
Pre 3
HC 4
我使用数据框的第一列(双括号中的“1”)(对于 paired=TRUE)单独检查了循环的这一行,它确实输出了一个 p 值:
ttest <- t.test(df[df$Pre==1,][[1]], df[df$Pre==2,][[1]], paired=TRUE)
ttest$p.value
[1] 0.356967
下面是一个示例数据集,您可以使用它来重现错误:
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
您可以通过执行以下操作导入它:
复制数据并将其粘贴在下面代码的引号内到 R:
zz <- ""
现在,将数据分配给 data.frame:
mydata <- read.table(text=zz, header=TRUE)
我不知道为什么将 'paired' 参数更改为 TRUE 会导致这种情况发生。任何 help/advice 将不胜感激。谢谢 - 保罗
您在此处使用值 1:4 初始化 mydf
data.frame
mydf <- data.frame(c(1:4))
基本上循环什么都不做,因为当你做 PAIRED=TRUE
时 t.test
会抛出一个错误,因为你的两组值的长度不一样(而且他们需要在做成对的时候t 检验。你有 22 个值,其中 Pre==1 和 13 个值,其中 Pre==2。你不能用这样的不平衡进行配对测试。