我有一个实验,其中我测量了少于200个变量,一式三份。换句话说,我有三个向量〜200个值。三重矢量数据的平均值和标准偏差
我想要一个快速的方法来确定我是否应该使用平均值或中位数来计算。我可以很容易地做到这一点((v1 + v2 + v3)/3
),但是如何计算SD以使其达到〜200 SD的矢量?那么中位数呢? 有了这些值后,我需要做生长曲线(测量是在一段时间内进行的)。
我有一个实验,其中我测量了少于200个变量,一式三份。换句话说,我有三个向量〜200个值。三重矢量数据的平均值和标准偏差
我想要一个快速的方法来确定我是否应该使用平均值或中位数来计算。我可以很容易地做到这一点((v1 + v2 + v3)/3
),但是如何计算SD以使其达到〜200 SD的矢量?那么中位数呢? 有了这些值后,我需要做生长曲线(测量是在一段时间内进行的)。
这里是一个dplyr
解决方案:
require(dplyr)
d <- data.frame(
x1 = rnorm(10),
x2 = rnorm(10),
x3 = rnorm(10)
)
d %>%
rowwise() %>%
mutate(
mean = mean(c(x1, x2, x3)),
median = median(c(x1, x2, x3)),
sd = sd(c(x1, x2, x3))
)
这听起来像你也有关于纵向数据的实质性问题。如果是这样,交叉验证将是这个问题的一个很好的平台。
谢谢!它工作(我安装了dplyr后) – Turtle23 2014-11-05 00:34:49
apply
是你要做的。把你的矢量放在一个矩阵中,例如
mydat <- matrix(rnorm(600), ncol = 3)
means <- apply(mydat, MARGIN = 1, mean) # MARGIN = 1 is rows, MARGIN = 2 would be columns...
sds <- apply(mydat, MARGIN = 1, sd)
medians <- apply(mydat, MARGIN = 1, median)
虽然我不得不说,每3个值,使用中位数听起来很可疑。
传统的 'for' 循环也可以使用,尽管这不是优选:
for(i in 1:nrow(d)) d[i,4]=mean(unlist(d[i,1:3]))
for(i in 1:nrow(d)) d[i,5]=sd(unlist(d[i,1:3]))
for(i in 1:nrow(d)) d[i,6]=median(unlist(d[i,1:3]))
names(d)[4:6]=c('meanval', 'sdval', 'medianval')
d
x1 x2 x3 meanval sdval medianval
1 -1.3230176 0.6956100 -0.7210798 -0.44949580 1.0363556 -0.7210798
2 -1.8931166 0.9047873 -1.0378874 -0.67540558 1.4337404 -1.0378874
3 -0.2137543 0.1846733 0.6410478 0.20398893 0.4277283 0.1846733
4 0.1371915 -1.0345325 -0.2260038 -0.37444827 0.5998009 -0.2260038
5 -0.8662465 -0.8229465 -0.2230030 -0.63739866 0.3595296 -0.8229465
6 -0.2918697 -1.3543493 1.3025262 -0.11456426 1.3372826 -0.2918697
7 -0.4931936 1.7186173 1.3757156 0.86704643 1.1904138 1.3757156
8 0.3982403 -0.3394208 1.9316059 0.66347514 1.1585131 0.3982403
9 -1.0332427 -0.3045905 1.1513260 -0.06216908 1.1122775 -0.3045905
10 -1.5603811 -0.1709146 -0.5409815 -0.75742575 0.7195765 -0.5409815
从@ DMC的答案使用d。
您的意思是3次测量是在时间1,时间2,时间3进行的,现在您想分析这3个时间段内200个不同变量的变化?那么为什么你想要平均数或中位数?还是你在200个时间段(时间1,时间2 ...时间200)中每一个都进行了3次测量(准确性)? – rnso 2014-11-04 02:35:48
不,实验一式三份(600份样本,每份3份)。我需要对它们进行平均(如果标准偏差不是很大)或者只取中间值。这是因为,有时在生物体的生物实验中,本身存在很大的变异(虫会聚集在一起,因此不均匀分布,多孔板中存在一些蒸发等的边界效应)。对于一组,我们必须重复整个实验(我们有4套这种分析方法,这意味着我们要处理3个(一式三份)x 200个(变量)x 4个物种。 – Turtle23 2014-11-04 16:28:39
因此,增长(您在问题中提到的)是超过200个时间段 – rnso 2014-11-04 17:16:56