探索数据
先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。
anova
browse
另有 9 个示例及替代实现
选中、观察某些变量
Stata
browse x1 x3-x5R 包:tidystata
browse(data, x1, x3:x5)变量范围用冒号(x3:x5),而不是减号。
根据某些变量取值,选中、观察数据特定行
Stata
browse if x1 == 1 & x2 == 2R 包:dplyr
filter(data, x1 == 1 & x2 == 2)ci
codebook
correlate
describe
描述数据结构
Stata
describeR 包:tidystata
variables(data)glimpse(data) 可以紧凑地显示每个变量的前几个取值。
ds
dtable
factor
因子分析
Stata
factor x1 x2 x3R 包:stats
factanal(na.omit(select(data, x1, x2, x3)), factors = 1)与 Stata 有差异 factanal() 使用最大似然法;psych::fa(…, fm = “pa”) 对应 Stata 默认的主因子法。
fre
inspect
ksmirnov
Kolmogorov-Smirnov 分布相等性检验
Stata
ksmirnov x, by(group)R 包:stats
ks.test(data$x[data$group == 0], data$x[data$group == 1])与 Stata 有差异 R 代码假设分组编码为 0 和 1;精确或渐近推断和并列值处理可能与 Stata ksmirnov 不同。
ktau
Kendall tau 相关
Stata
ktau x yR 包:stats
cor.test(data$x, data$y, method = "kendall")与 Stata 有差异 秩相关系数含义相同,但精确或渐近 p 值的选择和并列值校正可能不同;需另行匹配推断选项。
kwallis
levelsof
变量的所有不同取值
Stata
levelsof xR 包:base
sort(unique(data$x))与 Stata 有差异 可以存起来用于循环:levels <- sort(unique(data$x)),然后 for (v in levels) { … }。 sort(unique()) 默认排除 NA,但字符串按 R 排序规则排列,可能与 Stata 不同。
list
打印数据表
Stata
listR 包:tidystata
print_all(data)打印所有行和列。直接输入数据名只显示前几行;print_headtail(data) 显示首尾若干行。
lookfor
mean
均值及其标准误
Stata
mean xR 包:tidystata
summ(data, x, .stat = c("mean", "se"))与 Stata 有差异 t.test(data$x) 还会给出置信区间。 R 代码仅返回点汇总(mean 另含标准误);Stata 还报告置信区间并保存估计结果。
oneway
单因素方差分析
Stata
oneway y groupR 包:stats
summary(aov(y ~ factor(group), data = data))与 Stata 有差异 bartlett.test(y ~ group, data = data) 给出 oneway 报告的方差齐性检验。 aov() 给出方差分析表,但不含 oneway 打印的 Bartlett 等方差检验;该检验须另用 bartlett.test()。
pca
主成分分析
Stata
pca x1 x2 x3R 包:stats
prcomp(na.omit(select(data, x1, x2, x3)), scale. = TRUE)与 Stata 有差异 Stata 基于相关矩阵进行分析,因此 scale. = TRUE 与之一致。 scale. = TRUE 对应相关矩阵主成分分析;特征向量正负号可任意翻转,保存的旋转向量和打印载荷的归一化规则不同。
proportion
各类别的比例
Stata
proportion xR 包:base
prop.table(table(data$x))与 Stata 有差异 tab(data, x) 给出同样的百分比;prop.test() 可以给出单个比例的置信区间。 R 代码仅返回点汇总(mean 另含标准误);Stata 还报告置信区间并保存估计结果。
prtest
比例检验
Stata
prtest x == 0.5R 包:stats
prop.test(sum(data$x == 1, na.rm = TRUE), sum(!is.na(data$x)), p = 0.5, correct = FALSE)与 Stata 有差异 correct = FALSE 对应 Stata 不做连续性校正的正态近似检验。 关闭校正后检验统计量对应正态近似,但 prop.test() 置信区间使用得分反演,而 prtest 使用 Wald 区间。
pwcorr
两两相关系数
Stata
pwcorr x1 x2 x3R 包:tidystata
pwcorr(data, x1, x2, x3)与 Stata 有差异 每对变量给出 r、n 和 p;.wide = TRUE 给出相关矩阵。base R:cor(select(data, x1, x2, x3), use = “pairwise.complete.obs”)。 pwcorr() 用整洁表返回配对数和 p 值;Stata 默认打印相关矩阵,其他报告内容需额外选项。
ranksum
Wilcoxon 秩和检验(Mann-Whitney 检验)
Stata
ranksum x, by(group)R 包:stats
wilcox.test(x ~ group, data = data)与 Stata 有差异 R 对小样本可能使用精确推断,正态近似默认作连续性校正;Stata 默认不同。应明确指定 exact 和 correct。
signrank
Wilcoxon 符号秩检验
Stata
signrank x = yR 包:stats
wilcox.test(data$x, data$y, paired = TRUE)与 Stata 有差异 R 对小样本可能使用精确推断,正态近似默认作连续性校正;Stata 默认不同。应明确指定 exact 和 correct。
sktest
spearman
Spearman 秩相关
Stata
spearman x yR 包:stats
cor.test(data$x, data$y, method = "spearman")与 Stata 有差异 秩相关系数含义相同,但精确或渐近 p 值的选择和并列值校正可能不同;需另行匹配推断选项。
stem
summarize
用统计量描述所有变量
Stata
summarizeR 包:tidystata
summ(data)与 Stata 有差异 base R 的 summary(data) 也可以,但输出格式不够整齐。 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
另有 4 个示例及替代实现
用统计量描述单个变量
Stata
summarize xR 包:tidystata
summ(data, x)与 Stata 有差异 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
用统计量分组描述变量
Stata
bysort group: summarize xR 包:tidystata
summ(data, x, .by = group)与 Stata 有差异 group_by(data, group) |> summ(x) 结果相同。 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
加权描述统计
Stata
summarize x [aweight = w]R 包:tidystata
summ(data, x, .wt = w, .wt_type = "analytic")与 Stata 有差异 默认是频数权重:summ(data, x, .wt = w)。 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
详细统计量(含分位数)
Stata
summarize x, detailR 包:tidystata
summ(data, x, .detail = TRUE)与 Stata 有差异 用 .stat 选择个别统计量,例如 summ(data, x, .stat = “p25”)。 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
swilk
Shapiro-Wilk 正态性检验
Stata
swilk xR 包:stats
shapiro.test(data$x)与 Stata 有差异 shapiro.test() 接受 3 至 5000 个非缺失观测;Stata swilk 的样本量限制和报告方式不同。
tab1
逐个描述变量
Stata
tab1 x1 x2 x3R 包:tidystata
tab1(data, x1, x2, x3)与 Stata 有差异 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
tab2
两个变量的交叉表
Stata
tab2 x1 x2R 包:tidystata
tab2(data, x1, x2)与 Stata 有差异 三个或更多变量时,tab2(data, x1, x2, x3) 会像 Stata 一样返回每一对变量的交叉表。 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
table
tabstat
用统计量分组描述若干变量
Stata
tabstat x1 x2, by(group) stat(mean sd)R 包:tidystata
tabstat(data, x1, x2, .by = group, .stat = c("mean", "sd"))与 Stata 有差异 R 保留缺失分组键;Stata tabstat by() 和 tabulate summarize() 默认排除缺失分组类别。应核对分组样本。
tabulate
用表格描述单个类别变量取值分布
Stata
tabulate xR 包:tidystata
tab(data, x)与 Stata 有差异 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
另有 8 个示例及替代实现
用表格描述两个类别变量取值分布
Stata
tabulate x1 x2R 包:tidystata
tab2(data, x1, x2)与 Stata 有差异 fre2(data, x1, x2) 会加上行合计和列合计。 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
分组频数表
Stata
bysort g: tabulate xR 包:tidystata
tab(data, x, .by = g)与 Stata 有差异 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
带分析权重(抽样权重)的频数表
Stata
tabulate x [aweight = w]R 包:tidystata
tab(data, x, .wt = w, .wt_type = "analytic")与 Stata 有差异 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
带频数权重的频数表
Stata
tabulate x [fweight = n]R 包:tidystata
tab(data, x, .wt = n)与 Stata 有差异 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
按 x 的类别描述 y
Stata
tabulate x, summarize(y)R 包:tidystata
summ(data, y, .by = x)与 Stata 有差异 R 保留缺失分组键;Stata tabstat by() 和 tabulate summarize() 默认排除缺失分组类别。应核对分组样本。
卡方独立性检验
Stata
tabulate x1 x2, chi2R 包:tidystata
tab2(dplyr::filter(data, !is.na(x1), !is.na(x2)), x1, x2, .chi2 = TRUE)与 Stata 有差异 为匹配不带missing选项的Stata tabulate, chi2,先剔除任一变量缺失的观测;否则tab2将显示的缺失类别也纳入Pearson检验。 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
ttest
两样本 t 检验
Stata
ttest x, by(group)R 包:stats
t.test(x ~ group, data = data)与 Stata 有差异 R 默认使用 Welch 检验;加上 var.equal = TRUE 即为 Stata 默认的等方差检验。