在处理分层/多级/面板数据集时,采用一个包可以返回可用变量的组内和组之间标准偏差可能非常有用 .
这可以通过命令轻松完成 Stata
中的以下数据
xtsum, i(momid)
我做了一个研究,但我找不到任何 R
包可以做到这一点..
edit:
只是为了解决问题,分层数据集的一个例子可能是这样的:
son_id mom_id hispanic mom_smoke son_birthweigth
1 1 1 1 3950
2 1 1 0 3890
3 1 1 0 3990
1 2 0 1 4200
2 2 0 1 4120
1 3 0 0 2975
2 3 0 1 2980
“多级”结构由每个母亲(较高级别)具有两个或更多个儿子(较低级别)的事实给出 . 因此,每个母亲定义一组观察 .
因此,每个数据集变量可以在母亲之间和母亲之间变化,或者仅在母亲之间变化 . birtweigth
因母亲而异,但也在同一位母亲中 . 相反, hispanic
对于同一位母亲是固定的 .
例如, son_birthweigth
的母内方差为:
# mom1 means
bwt_mean1 <- (3950+3890+3990)/3
bwt_mean2 <- (4200+4120)/2
bwt_mean3 <- (2975+2980)/2
# Within-mother variance for birthweigth
((3950-bwt_mean1)^2 + (3890-bwt_mean1)^2 + (3990-bwt_mean1)^2 +
(4200-bwt_mean2)^2 + (4120-bwt_mean2)^2 +
(2975-bwt_mean3)^2 + (2980-bwt_mean3)^2)/(7-1)
而母亲之间的差异是:
# overall mean of birthweigth:
# mean <- sum(data$son_birthweigth)/length(data$son_birthweigth)
mean <- (3950+3890+3990+4200+4120+2975+2980)/7
# within variance:
((bwt_mean1-mean)^2 + (bwt_mean2-mean)^2 + (bwt_mean3-mean)^2)/(3-1)
2 回答
我不知道你的stata命令应该重现什么,但是为了回答关于层次结构的问题的第二部分,用
list
很容易做到这一点 . 例如,您定义如下结构:要创建这个
lapply
很有意义使用list你可以用
str
查看他的结构OP澄清后编辑
我认为包
reshape2
就是你想要的 . 我将在这里证明这一点 .这里的想法是为了进行我们需要重新整形数据的多级分析 .
首先将变量分为两组:标识符和测量变量 . library(reshape2)dat.m < - melt(dat,id.vars = c('son_id','mom_id'))##其他列被测量
一旦你有“moten”形式的数据,你可以“施放”以你想要的形状重新排列它:
我知道这个问题已经有四年了,但是最近我想在R中做同样的事情并提出以下功能 . 这取决于
dplyr
和tibble
. 其中:df是数据框,列是数据框的子集的数字向量,而个体是具有个体的列 .