纵向重复测量的平均值,SD,ANOVA

时间:2013-08-03 01:18:17

标签: r mean anova standard-deviation

三个测量(时间)嵌套在Networkpartners(NP)中,它们嵌套在人员(ID)中。变量NP.T(根据提到的答案here创建)表示特定人(ID)对特定测量(1到3)的Networkpartners(在结果上没有缺失值)的数量。

这是我的数据集的一个例子,真正的数据集虽然有数千行。

   ID NP   Time Outcome  NP.T
1   1 11    1       4    2
2   1 12    1       2    2
3   1 11    2       3    2
4   1 12    2       3    2
5   1 11    3      NA    1
6   1 12    3       3    1
7   2 21    1       2    2
8   2 22    1       4    2
9   2 21    2      NA    1
10  2 22    2       4    1
11  2 21    3      NA    1
12  2 22    3       4    1

我想计算以下内容并且不知道如何正确地做到这一点:

a)每次测量时网络伙伴数量的平均值,SD(NP.T)。

此外,我对每次测量至少命名一个Networkpartner的人数(ID)感兴趣。

T1 - > 2个ID至少命名为一个Networkpartner

T2 - > 2个ID至少命名为一个NP

T3 - > 2个ID至少命名为一个NP

在这个例子中听起来可能微不足道,但它不在我的样本中。用于计算均值,sds ect。每次我只想考虑那个在特定时间实际命名至少一个networkpartner的ID。在该特定时间未指定任何NP的ID不应该是该时间点的描述性统计数据的一部分。 澄清:如果输出变量上有一个NA,则意味着NP在该时间点没有用它的ID命名。

b)重新测量ANOVA以确定网络伙伴的平均数量是否随时间变化

一些预期结果:

Mean.T1 = 2< - 因为两个ID在T1

处命名了两个NP

Mean.T2 = 1.5< - 一个ID命名为2,另一个ID为T2

Mean.T3 = 1< - 因为两个ID在T3处命名了一个NP

n.T1 = 2

n.T2 = 2

n.T3 = 2

问题是,在真实数据集中,所有人都命名了不同数量的Networkpartners,因此我不知道在这种情况下如何计算描述性统计数据。

1 个答案:

答案 0 :(得分:1)

A部分(1& 2)

library(plyr)
mydata3<-ddply(mydata1,.(Time),summarize,mean=mean(NP.T),sd=sd(NP.T),nobs=length(unique(ID)))


 > mydata3
  Time mean        sd nobs
1    1  2.0 0.0000000    2
2    2  1.5 0.5773503    2
3    3  1.0 0.0000000    2

B部分:

  

myaov&lt; - aov(意思是〜时间,数据= mydata3)

> myaov

    Call:
       aov(formula = mean ~ Time, data = mydata3)

    Terms:
                    Time Residuals
    Sum of Squares   0.5       0.0
    Deg. of Freedom    1         1

    Residual standard error: 1.17148e-16 
    Estimated effects may be unbalanced

Uodated:对于错误Error in is.list(by) : 'by' is missing,请查看here了解详情。如网站所述,这个问题不是RStudio的问题,而是Hmisc库从包'plyr'屏蔽函数summarize的问题。

因此,您需要在早期代码中添加library(Hmisc)

library(plyr)
library(Hmisc)
    mydata3<-ddply(mydata1,.(Time),summarize,mean=mean(NP.T),sd=sd(NP.T),nobs=length(unique(ID)))