Skip to contents

English version

需要按章节浏览、搜索或展开替代实现时,请打开 Stata 转 R 参考手册。 手册提供中英文两个版本,每章均可切换语言。本页继续保留完整的单页对照表。

熟悉 Stata 的用户已经知道自己想做什么,需要的只是知道在 R 中怎么写。本页把 Stata 命令和完成同样任务的 R 代码并列:tidystata 中有 Stata 风格函数的,使用 tidystata;其他情况使用常用的 R 包。

在 R 中直接查询

findit() 在 R 中查询同一份列表。单个 Stata 命令可以不加引号,更长的内容需要加引号;支持 Stata 的标准缩写。说明文字随 R 的语言设置显示为中文或英文,两种语言的查询都可使用。

findit(reg)
#> # Linear regression [stats]
#> Stata: regress y x1 x2
#> R:     fit <- lm(y ~ x1 + x2, data = data)
#> # Note: summary(fit) shows the coefficient table; broom::tidy(fit) returns it as a data frame.
#> 
#> # 17 more examples. To see them all: findit(reg) |> print(n = Inf)
findit("merge 1:1 id, keep(match)")
#> # Keep matched rows only [dplyr]
#> Stata: merge 1:1 id using data2, keep(match)
#> R:     inner_join(data1, data2, by = "id")
#> # Note: dplyr retains overlapping non-key columns with suffixes instead of Stata master values, creates no _merge, and does not enforce a declared 1:1 key constraint.
#> 
#> # merge() [base]: Merge two data frames (base R)
#>   Related Stata: merge
#> 
#> # 17 more examples. To see them all: findit("merge 1:1 id, keep(match)") |> print(n = Inf)

也可以查询 R 函数(findit(left_join)),或直接提问(findit("如何删除重复行"))。 控制台显示最相关的结果,返回的表保留全部匹配项;不带参数的 findit() 返回完整列表。

逗号分隔的变量名会填入兼容的示例,例如 findit(tab, sex, region)。任务明确时默认只显示 一个优先推荐的答案;findit(tab) |> print(n = Inf) 展开全部变体、精选的 R 实现、 差异说明和参考链接。findit(dplyr::filter) 这样的包限定查询可以区分同名函数。

本指南包含 514 个命令族、181 个 Stata 函数和 3 个运算符,共有 1716 个不同的 Stata 示例和 1782 条 R 对照示例。缩写及同一任务的其他 R 实现不会增加命令数量。 R 函数索引包含 949 个函数与包的组合。

使用命令对照表

下表涵盖 tidystata 和其他常用 R 包,包括建模、长宽转换、调查分析和作图。 面板滞后、超前和差分可使用 tidystata 的 stata_lag()、stata_lead() 和 stata_diff();指定时间列,并用 .by 区分面板。

索引按字母顺序排列,对照表按主题分组,并依次按命令、推荐顺序和示例排序。 运行某个示例需要其标注的 R 包;findit() 本身不会加载或安装这些参考包。 包标签只列出主要实现包,并不列出所有辅助依赖;R 函数索引标明其他函数及其所属包。

以 与 Stata 有差异 开头的说明表示 R 代码完成相同任务,但默认设置、缺失值处理、 估计方法或输出形式有所不同,说明会列出具体差异。其余说明是使用提示。多数 R 示例在构建目录时 运行核验,检查的是 R 代码本身,并非与 Stata 的数值一致性检验。缺失值比较、权重、因子参照组、连接规则和标准误修正尤其需要核对。 已知缺口会明确说明,相关搜索结果不代表已经实现查询中尚未支持的语法。

下表中,data 是你的数据,data1 和 data2 是合并时的主数据和被合并数据,fit 是已估计的模型。大部分条目使用 dplyr,请先用 library(dplyr) 或 library(tidyverse) 加载。

命令字母索引

F · Fden · Ftail · about · ac · ado · adopath · alpha · ameans · anova · append · arch · areg · arfima · arfimasoc · args · arima · arimasoc · assert · assertnested · avplots · bayesboot · bayesmh · bayespredict · bayesreps · bayesstats · bayestest · betaden · betareg · binomial · binomialp · binomialtail · binormal · binreg · binscatter · biprobit · bitest · bitesti · bootstrap · boottest · boxcox · brier · browse · bsample · bsqreg · bstat · ca · camat · candisc · canon · capture · carryforward · cauchy · cauchyden · cauchytail · cc · cci · cd · ceil · cem · centile · cf · changeeol · char · checksum · chi2 · chi2den · chi2tail · ci · cii · ciwidth · clear · clock · cloglog · clonevar · cls · cluster · clustermat · cnsreg · codebook · coefplot · cofd · collapse · compare · compress · cond · confirm · constraint · continue · contract · contrast · copy · corr2data · correlate · corrgram · count · cpoisson · creturn · cross · cs · csdid · csi · cumsp · cumul · d. · dataex · datasignature · date · day · daysinmonth · decode · describe · destring · dfbeta · dfgls · dfuller · did_imputation · didregress · dir · discrim · display · distinct · do · dofc · dofm · dofq · dofy · dotplot · dow · doy · drawnorm · drdid · drop · ds · dstdize · dtable · duplicates · ebalance · egen · eivreg · elasticnet · encode · ereturn · error · esize · esizei · estat · estimates · eststo · esttab · etable · eventstudyinteract · exit · expand · expandcl · exponential · exponentialden · exponentialtail · export · f. · factor · factormat · fcast · fcollapse · file · filefilter · fillin · findfile · findit · firstdayofmonth · flevelsof · floor · fmerge · foreach · forecast · format · forvalues · fracreg · fralias · frame · fre · frget · frlink · frunalias · ftools · gammaden · gammap · gammaptail · gcollapse · gcontract · gdistinct · gduplicates · gegen · gencohort · generate · getmata · gettoken · gisid · glevelsof · glm · global · gquantiles · graph · greshape · gsort · gstats · gtoplevelsof · gunique · halfyear · hashsort · hausman · heatplot · heckman · help · hetregress · hexdump · hh · histogram · hotelling · hypergeometric · hypergeometricp · ibeta · ibetatail · icc · if · import · include · infile · infix · inlist · input · inrange · insobs · inspect · intreg · invF · invFtail · invbinomial · invbinomialtail · invcauchy · invcauchytail · invchi2 · invchi2tail · invexponential · invexponentialtail · invgammap · invgammaptail · invibeta · invibetatail · invlogistic · invlogistictail · invnF · invnFtail · invnbinomial · invnbinomialtail · invnchi2 · invnchi2tail · invnibeta · invnormal · invnt · invnttail · invpoisson · invpoissontail · invt · invttail · invtukeyprob · invweibull · invweibullph · invweibullphtail · invweibulltail · ipolate · iqreg · ir · irf · iri · isid · istdize · ivlpirf · ivreg2 · ivreghdfe · ivregress · jackknife · jdbc · joinby · kap · kdensity · keep · kmatch · ksmirnov · ktau · kwallis · l. · label · labelbook · labmask · lasso · levelsof · lincom · line · linktest · list · ln · lncauchyden · lnigammaden · lnmvnormalden · lnnormal · lnnormalden · local · log · logistic · logisticden · logistictail · logit · lookfor · lower · lowess · lpirf · lrtest · ltable · macro · manova · manovatest · margins · marginsplot · mark · markin · markout · marksample · matlist · matname · matrix · mca · mcc · mcci · mdesc · mds · mdsmat · mdy · mean · mecloglog · median · meglm · melogit · memory · menbreg · menl · meologit · meoprobit · mepoisson · meprobit · merge · meta · mhodds · mi · missing · missings · misstable · mixed · mkdir · mkmat · mlexp · mlogit · mm · mofd · month · mvdecode · mvencode · mvreg · mvtest · nF · nFden · nFtail · nbetaden · nbinomial · nbinomialp · nbinomialtail · nbreg · nchi2 · nchi2den · nchi2tail · nestreg · net · newey · nibeta · nl · nlcom · normal · normalden · notes · npnF · npnchi2 · npnt · nptrend · nt · nttail · numlabel · numlist · oaxaca · odbc · ologit · oneway · oprobit · order · orthog · orthpoly · outfile · outreg2 · pac · pca · pcamat · pchi · pcorr · pctile · pergram · permute · pnorm · poisson · poissonp · poissontail · post · postclose · postfile · power · pperron · ppmlhdfe · predict · predictnl · preserve · probit · program · proportion · prtest · prtesti · psdensity · psmatch2 · pstest · putdocx · putexcel · putmata · pwcompare · pwcorr · pwd · pwmean · qchi · qnorm · qofd · qqplot · qreg · quadchk · quantile · quarter · query · quietly · range · rangestat · ranksum · rbeta · rbinomial · rcauchy · rchi2 · rdbwdensity · rdbwselect · rddensity · rdrobust · real · recast · recode · regexm · regexr · regexreplaceall · regexs · reghdfe · regress · rename · replace · require · reshape · return · rexponential · rgamma · rhypergeometric · rlogistic · rnbinomial · rnormal · robvar · roccomp · roctab · rolling · rotate · rotatemat · round · rpoisson · rreg · rt · runiform · runtest · rvfplot · rweibull · sample · save · saveold · savespss · scalar · scatter · sdtest · sdtesti · search · sem · separate · seqvar · serrbar · set · setroot · signrank · signtest · simulate · sktest · sleep · slogit · snapshot · snapspan · sort · spbalance · spdistance · spearman · spgenerate · spikeplot · split · splitsample · spmatrix · spset · sqreg · ss · ssc · sspace · stack · stbase · stci · stcox · stcrreg · stdescribe · stem · stfill · stgen · stintreg · stir · stjoin · stmh · stptime · strate · streg · string · stritrim · strlen · strlower · strltrim · strmatch · strofreal · strpos · strproper · strreverse · strrtrim · strtoname · strtrim · strupper · sts · stset · stsplit · stsum · sttocc · stvary · subinstr · subinword · substr · sum · summarize · svmat · svy · svydescribe · svyset · swilk · symmetry · symmi · symplot · syntax · synth · sysdir · sysuse · t · tab1 · tab2 · tabdisp · tabi · table · tabodds · tabstat · tabulate · tden · tebalance · teffects · tempfile · tempname · tempvar · teoverlap · test · testnl · testparm · tetrachoric · timer · tnbreg · tobit · tokenize · tostring · tpoisson · truncreg · tsfill · tsfilter · tsline · tsreport · tsset · tssmooth · ttail · ttest · ttesti · tukeyprob · twoway · type · uchar · ucm · unab · unabcmd · unicode · univar · unzipfile · upper · use · uselabel · ustrlen · ustrlower · ustrnormalize · ustrpos · ustrregexm · ustrregexra · ustrregexrf · ustrreverse · ustrtrim · ustrupper · usubstr · var · vargranger · varstable · vec · vecrank · version · viewsource · vif · vioplot · webuse · weibull · weibullden · weibullph · weibullphden · weibullphtail · weibulltail · which · while · winsor2 · wntestq · word · wordcount · xcorr · xi · xpose · xtabond · xtcloglog · xtdescribe · xtdidregress · xtdpd · xtdpdsys · xtgee · xtgls · xthtaylor · xtile · xtivreg · xtline · xtlogit · xtologit · xtoprobit · xtpcse · xtpoisson · xtprobit · xtrc · xtreg · xtregar · xtscc · xtset · xtsum · xttest0 · xtunitroot · year · ym · yq · zinb · zip · zipfile · ztest · ztesti

基础功能

Stata R 用途、差异及来源
cd "path/to/folder"
setwd("path/to/folder")
base
更换工作文件夹
使用 RStudio 项目(Project)会自动设定工作文件夹,脚本中可以只写相对路径。
Stata 参考 · R 参考
clear
rm(data)
base
清除掉数据
一般不需要:R 可以同时保存多个数据表,各有自己的名字。
Stata 参考 · R 参考
dir
dir()
base
查看工作文件夹中内容
Stata 参考 · R 参考
display 2 + 2
2 + 2
base
计算并显示结果
Stata 参考 · R 参考
do analysis.do
source("analysis.R")
base
运行脚本文件
Stata 参考 · R 参考
export delimited data.csv
readr::write_csv(data, "data.csv")
readr
导出 CSV 文件
Stata 参考 · R 参考
export excel data.xlsx
writexl::write_xlsx(data, "data.xlsx")
writexl
导出 Excel 文件
Stata 参考 · R 参考
findit command
findit(command)
tidystata
查找 Stata 命令对应的 R 函数
单个词和逗号分隔的变量名都可以不加引号,例如 findit(tab, sex, region)。可以加入 findit(tab, gen) 这样的提示,完整 Stata 语法仍可放在引号内。默认显示一个明确的例子;print(n = Inf) 显示所有匹配项。不带参数的 findit() 返回完整列表。
Stata 参考 · R 参考
global path "path/to/folder"
path <- "path/to/folder"
base
存储全局宏变量
R 中任何对象都可以像宏一样使用:赋值一次,之后直接用名字,例如 setwd(path)。
Stata 参考 · R 参考
help command
help(function_name)
utils
查看函数的帮助文档
也可以输入 ?函数名,或在 RStudio 的 Help 窗口搜索。
Stata 参考 · R 参考
import delimited data.csv
data <- readr::read_csv("data.csv")
readr
导入 CSV 文件
RStudio 的 File > Import Dataset 菜单可以导入数据,并自动生成相应代码。
Stata 参考 · R 参考
import excel data.xlsx, firstrow
data <- readxl::read_excel("data.xlsx")
readxl
导入 Excel 文件
Stata 参考 · R 参考
import sas data.sas7bdat
data <- haven::read_sas("data.sas7bdat")
haven
导入 SAS 文件
Stata 参考 · R 参考
import spss data.sav
data <- haven::read_sav("data.sav")
haven
导入 SPSS 文件
Stata 参考 · R 参考
log using results.log
sink("results.log")
base
把输出记录到文件
R 用户通常用 R Markdown 或 Quarto 生成报告,而不是记录日志。
Stata 参考 · R 参考
net install package, from(url)
remotes::install_github("user/package")
remotes
下载用户发布在 GitHub 的包
Stata 参考 · R 参考
pwd
getwd()
base
查看工作文件夹
Stata 参考 · R 参考
save data.dta, replace
haven::write_dta(data, "data.dta")
haven
保存为 Stata 数据
saveRDS(data, "data.rds") 可以完整保留因子、日期等 R 数据类型。
Stata 参考 · R 参考
saveold data.dta, version(13)
haven::write_dta(data, "data.dta", version = 13)
haven
保存为旧版 Stata 格式
Stata 参考 · R 参考
search keyword
help.search("keyword")
utils
搜索所有已安装的帮助文档
??关键词 是简写。若要查找 Stata 命令对应的 R 函数,请使用 findit()。
Stata 参考 · R 参考
ssc install package
install.packages("package")
utils
下载用户自定义的包
与 Stata 不同,安装后的包需要在每次会话中用 library(package) 加载。
Stata 参考 · R 参考
sysuse auto
data("mtcars")
datasets
加载内置的示例数据
Stata 参考 · R 参考
use data.dta
data <- haven::read_dta("data.dta")
haven
打开 Stata 数据
变量标签和数值标签会被保留。R 原生格式的数据用 readRDS("data.rds") 或 load("data.RData") 载入。
Stata 参考 · R 参考
webuse nlswork
data <- haven::read_dta("https://www.stata-press.com/data/r18/nlswork.dta")
haven
从 Stata 网站载入示例数据
Stata 参考 · R 参考

探索数据

Stata R 用途、差异及来源
anova y group
summary(aov(y ~ factor(group), data = data))
stats
方差分析
Stata 参考 · R 参考
browse
browse(data)
tidystata
观察数据表
Stata 参考 · R 参考
browse x1 x3-x5
browse(data, x1, x3:x5)
tidystata
选中、观察某些变量
变量范围用冒号(x3:x5),而不是减号。
Stata 参考 · R 参考
browse *x
select(data, ends_with("x"))
dplyr
找到所有以某些字符结尾的变量
Stata 参考 · R 参考
browse *x*
select(data, contains("x"))
dplyr
找到所有包含某些字符的变量
Stata 参考 · R 参考
browse if x1 == 1 & x2 == 2
filter(data, x1 == 1 & x2 == 2)
dplyr
根据某些变量取值,选中、观察数据特定行
Stata 参考 · R 参考
browse in -10/-1
tail(data, 10)
base
选中、观察数据后几行
Stata 参考 · R 参考
browse in 1/10
head(data, 10)
base
选中、观察数据前几行
Stata 参考 · R 参考
browse in 7/12
slice(data, 7:12)
dplyr
选中、观察数据某几行
Stata 参考 · R 参考
browse x*
select(data, starts_with("x"))
dplyr
找到所有以某些字符开头的变量
Stata 参考 · R 参考
browse x* y*
browse(data, varlist("x* y*"))
tidystata
选中、观察某些变量(批量选择)
varlist() 支持 Stata 的 * 和 ? 通配符,可用于 select() 等任何选择变量的函数。
Stata 参考 · R 参考
ci mean x
t.test(data$x)$conf.int
stats
均值的置信区间
加上 conf.level = 0.99 相当于 ci mean x, level(99)。
Stata 参考 · R 参考
codebook
codebook(data)
tidystata
详细描述每个变量
Stata 参考 · R 参考
codebook, compact
summ(data)
tidystata
每个变量一行的简要统计
Stata 参考 · R 参考
correlate x1 x2 x3
corr(data, x1, x2, x3)
tidystata
Pearson 相关系数(仅用完整个案)
与 Stata 有差异: 与 Stata correlate 一样使用同一完整个案样本。用整洁表返回 r 和 n;.wide = TRUE 返回下三角表。未实现 Stata 的 covariance、means 和显示格式选项。
Stata 参考 · R 参考
describe
variables(data)
tidystata
描述数据结构
glimpse(data) 可以紧凑地显示每个变量的前几个取值。
Stata 参考 · R 参考
describe using data.dta
haven::read_dta("data.dta", n_max = 0)
haven
不载入数据,查看文件中的变量
Stata 参考 · R 参考
ds
ds(data)
tidystata
查看变量名列表
ds(data, .type = "table") 以单列数据表返回变量名;base R 中可用 names(data)。
Stata 参考 · R 参考
dtable x1 x2, by(group)
gtsummary::tbl_summary(data, by = group, include = c(x1, x2))
gtsummary
描述统计表("表 1",Stata 18 及以上)
modelsummary::datasummary_skim(data) 可以快速概览所有变量,不需要分组变量。
Stata 参考 · R 参考
factor x1 x2 x3
factanal(na.omit(select(data, x1, x2, x3)), factors = 1)
stats
因子分析
与 Stata 有差异: factanal() 使用最大似然法;psych::fa(..., fm = "pa") 对应 Stata 默认的主因子法。
Stata 参考 · R 参考
fre x
fre(data, x)
tidystata
带合计的频数表
与 Ben Jann 的 fre 命令类似,即带合计行的 tab()。
Stata 参考 · R 参考
inspect x
summ(data, x, .detail = TRUE)
tidystata
变量的分布、零值和缺失值
hist(data$x) 可以画出 inspect 显示的简易直方图。
Stata 参考 · R 参考
ksmirnov x, by(group)
ks.test(data$x[data$group == 0], data$x[data$group == 1])
stats
Kolmogorov-Smirnov 分布相等性检验
与 Stata 有差异: R 代码假设分组编码为 0 和 1;精确或渐近推断和并列值处理可能与 Stata ksmirnov 不同。
Stata 参考 · R 参考
ktau x y
cor.test(data$x, data$y, method = "kendall")
stats
Kendall tau 相关
与 Stata 有差异: 秩相关系数含义相同,但精确或渐近 p 值的选择和并列值校正可能不同;需另行匹配推断选项。
Stata 参考 · R 参考
kwallis x, by(group)
kruskal.test(x ~ group, data = data)
stats
Kruskal-Wallis 检验
Stata 参考 · R 参考
levelsof x
sort(unique(data$x))
base
变量的所有不同取值
与 Stata 有差异: 可以存起来用于循环:levels <- sort(unique(data$x)),然后 for (v in levels) { ... }。 sort(unique()) 默认排除 NA,但字符串按 R 排序规则排列,可能与 Stata 不同。
Stata 参考 · R 参考
list
print_all(data)
tidystata
打印数据表
打印所有行和列。直接输入数据名只显示前几行;print_headtail(data) 显示首尾若干行。
Stata 参考 · R 参考
list x
pull(data, x)
dplyr
选中、观察某个变量
data$x 效果相同;select(data, x) 则保留为只有一列的数据表。
Stata 参考 · R 参考
lookfor income
variables_search(data, "income")
tidystata
根据变量名或标签查找变量
Stata 参考 · R 参考
mean x
summ(data, x, .stat = c("mean", "se"))
tidystata
均值及其标准误
与 Stata 有差异: t.test(data$x) 还会给出置信区间。 R 代码仅返回点汇总(mean 另含标准误);Stata 还报告置信区间并保存估计结果。
Stata 参考 · R 参考
oneway y group
summary(aov(y ~ factor(group), data = data))
stats
单因素方差分析
与 Stata 有差异: bartlett.test(y ~ group, data = data) 给出 oneway 报告的方差齐性检验。 aov() 给出方差分析表,但不含 oneway 打印的 Bartlett 等方差检验;该检验须另用 bartlett.test()。
Stata 参考 · R 参考
pca x1 x2 x3
prcomp(na.omit(select(data, x1, x2, x3)), scale. = TRUE)
stats
主成分分析
与 Stata 有差异: Stata 基于相关矩阵进行分析,因此 scale. = TRUE 与之一致。 scale. = TRUE 对应相关矩阵主成分分析;特征向量正负号可任意翻转,保存的旋转向量和打印载荷的归一化规则不同。
Stata 参考 · R 参考
proportion x
prop.table(table(data$x))
base
各类别的比例
与 Stata 有差异: tab(data, x) 给出同样的百分比;prop.test() 可以给出单个比例的置信区间。 R 代码仅返回点汇总(mean 另含标准误);Stata 还报告置信区间并保存估计结果。
Stata 参考 · R 参考
prtest x == 0.5
prop.test(sum(data$x == 1, na.rm = TRUE), sum(!is.na(data$x)), p = 0.5, correct = FALSE)
stats
比例检验
与 Stata 有差异: correct = FALSE 对应 Stata 不做连续性校正的正态近似检验。 关闭校正后检验统计量对应正态近似,但 prop.test() 置信区间使用得分反演,而 prtest 使用 Wald 区间。
Stata 参考 · R 参考
pwcorr x1 x2 x3
pwcorr(data, x1, x2, x3)
tidystata
两两相关系数
与 Stata 有差异: 每对变量给出 r、n 和 p;.wide = TRUE 给出相关矩阵。base R:cor(select(data, x1, x2, x3), use = "pairwise.complete.obs")。 pwcorr() 用整洁表返回配对数和 p 值;Stata 默认打印相关矩阵,其他报告内容需额外选项。
Stata 参考 · R 参考
ranksum x, by(group)
wilcox.test(x ~ group, data = data)
stats
Wilcoxon 秩和检验(Mann-Whitney 检验)
与 Stata 有差异: R 对小样本可能使用精确推断,正态近似默认作连续性校正;Stata 默认不同。应明确指定 exact 和 correct。
Stata 参考 · R 参考
signrank x = y
wilcox.test(data$x, data$y, paired = TRUE)
stats
Wilcoxon 符号秩检验
与 Stata 有差异: R 对小样本可能使用精确推断,正态近似默认作连续性校正;Stata 默认不同。应明确指定 exact 和 correct。
Stata 参考 · R 参考
sktest x
summ(data, x, .stat = c("skew", "kurtosis"))
tidystata
偏度和峰度
正式的正态性检验可用 shapiro.test(data$x)。
Stata 参考 · R 参考
spearman x y
cor.test(data$x, data$y, method = "spearman")
stats
Spearman 秩相关
与 Stata 有差异: 秩相关系数含义相同,但精确或渐近 p 值的选择和并列值校正可能不同;需另行匹配推断选项。
Stata 参考 · R 参考
stem x
stem(data$x)
graphics
茎叶图
Stata 参考 · R 参考
summarize
summ(data)
tidystata
用统计量描述所有变量
与 Stata 有差异: base R 的 summary(data) 也可以,但输出格式不够整齐。 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
Stata 参考 · R 参考
summarize x
summ(data, x)
tidystata
用统计量描述单个变量
与 Stata 有差异: summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
Stata 参考 · R 参考
bysort group: summarize x
summ(data, x, .by = group)
tidystata
用统计量分组描述变量
与 Stata 有差异: group_by(data, group) |> summ(x) 结果相同。 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
Stata 参考 · R 参考
summarize x [aweight = w]
summ(data, x, .wt = w, .wt_type = "analytic")
tidystata
加权描述统计
与 Stata 有差异: 默认是频数权重:summ(data, x, .wt = w)。 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
Stata 参考 · R 参考
summarize x, detail
summ(data, x, .detail = TRUE)
tidystata
详细统计量(含分位数)
与 Stata 有差异: 用 .stat 选择个别统计量,例如 summ(data, x, .stat = "p25")。 summ() 还报告缺失数量,并有自己的默认统计量布局;匹配 Stata 输出时应明确指定 .stat。
Stata 参考 · R 参考
swilk x
shapiro.test(data$x)
stats
Shapiro-Wilk 正态性检验
与 Stata 有差异: shapiro.test() 接受 3 至 5000 个非缺失观测;Stata swilk 的样本量限制和报告方式不同。
Stata 参考 · R 参考
tab1 x1 x2 x3
tab1(data, x1, x2, x3)
tidystata
逐个描述变量
与 Stata 有差异: tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
Stata 参考 · R 参考
tab2 x1 x2
tab2(data, x1, x2)
tidystata
两个变量的交叉表
与 Stata 有差异: 三个或更多变量时,tab2(data, x1, x2, x3) 会像 Stata 一样返回每一对变量的交叉表。 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
Stata 参考 · R 参考
table x1 x2 x3
tab(data, x1, x2, x3)
tidystata
用表格描述多个类别变量取值分布(长表)
Stata 参考 · R 参考
table x, statistic(mean y)
summ(data, y, .by = x, .stat = "mean")
tidystata
按类别列出统计量(Stata 17 及以上的 table)
Stata 参考 · R 参考
tabstat x1 x2, by(group) stat(mean sd)
tabstat(data, x1, x2, .by = group, .stat = c("mean", "sd"))
tidystata
用统计量分组描述若干变量
与 Stata 有差异: R 保留缺失分组键;Stata tabstat by() 和 tabulate summarize() 默认排除缺失分组类别。应核对分组样本。
Stata 参考 · R 参考
tabulate x
tab(data, x)
tidystata
用表格描述单个类别变量取值分布
与 Stata 有差异: tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
Stata 参考 · R 参考
tabulate x1 x2
tab2(data, x1, x2)
tidystata
用表格描述两个类别变量取值分布
与 Stata 有差异: fre2(data, x1, x2) 会加上行合计和列合计。 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
Stata 参考 · R 参考
bysort g: tabulate x
tab(data, x, .by = g)
tidystata
分组频数表
与 Stata 有差异: tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
Stata 参考 · R 参考
tabulate x [aweight = w]
tab(data, x, .wt = w, .wt_type = "analytic")
tidystata
带分析权重(抽样权重)的频数表
与 Stata 有差异: tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
Stata 参考 · R 参考
tabulate x [fweight = n]
tab(data, x, .wt = n)
tidystata
带频数权重的频数表
与 Stata 有差异: tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
Stata 参考 · R 参考
tabulate x, missing
tab(data, x)
tidystata
包含缺失值的频数表
tab() 总会把缺失值单独列为一行。
Stata 参考 · R 参考
tabulate x, summarize(y)
summ(data, y, .by = x)
tidystata
按 x 的类别描述 y
与 Stata 有差异: R 保留缺失分组键;Stata tabstat by() 和 tabulate summarize() 默认排除缺失分组类别。应核对分组样本。
Stata 参考 · R 参考
tabulate x1 x2, chi2
tab2(dplyr::filter(data, !is.na(x1), !is.na(x2)), x1, x2, .chi2 = TRUE)
tidystata
卡方独立性检验
与 Stata 有差异: 为匹配不带missing选项的Stata tabulate, chi2,先剔除任一变量缺失的观测;否则tab2将显示的缺失类别也纳入Pearson检验。 tidystata 默认保留缺失类别;Stata tabulate 仅在指定 missing 时保留。使用 .missing = FALSE 可匹配 Stata。
Stata 参考 · R 参考
tabulate x1 x2, exact
fisher.test(data$x1, data$x2)
stats
Fisher 精确检验
Stata 参考 · R 参考
ttest x, by(group)
t.test(x ~ group, data = data)
stats
两样本 t 检验
与 Stata 有差异: R 默认使用 Welch 检验;加上 var.equal = TRUE 即为 Stata 默认的等方差检验。
Stata 参考 · R 参考
univar x1 x2
summ(data, x1, x2, .detail = TRUE)
tidystata
详细的单变量统计量
Stata 参考 · R 参考

检查数据

Stata R 用途、差异及来源
assert x > 0
assert(data, x > 0)
tidystata
条件不成立时报错停止
与 Stata 有差异: 报告矛盾的观测数并返回数据,可用于管道中。缺失的 x 视为矛盾,与 Stata 不同(Stata 中缺失值大于任何数);要得到 Stata 的行为,写 assert(data, is.na(x) | x > 0)。
Stata 参考 · R 参考
confirm variable x
stopifnot("x" %in% names(data))
base
检查变量是否存在
Stata 参考 · R 参考
count
nrow(data)
base
数据的行数
Stata 参考 · R 参考
count if x > 0
sum(data$x > 0, na.rm = TRUE)
base
计算满足条件的行数
与 Stata 有差异: Stata 数值缺失比较时大于所有有限数;R 比较返回 NA。应先明确处理缺失,再使用条件。
Stata 参考 · R 参考
distinct x1 x2, joint
nrow(distinct(data, x1, x2))
dplyr
查看某些变量未重复行的数目
Stata 参考 · R 参考
duplicates list x1 x2
duplicates_list(data, x1, x2)
tidystata
列出重复个案
Stata 参考 · R 参考
duplicates report x1 x2
duplicates_report(data, x1, x2)
tidystata
报告重复个案
Stata 参考 · R 参考
duplicates tag x1 x2, generate(dup)
duplicates_tag(data, x1, x2, .name = "dup")
tidystata
标记重复个案
Stata 参考 · R 参考
isid id wave
isid(data, id, wave)
tidystata
检查变量能否唯一识别个案
Stata 参考 · R 参考
mdesc
summ(data, .stat = "missing")
tidystata
每个变量的缺失值数目
Stata 参考 · R 参考
misstable patterns
misstable(data, .patterns = TRUE)
tidystata
缺失值模式
与 Stata 相同,1 表示有观测值,0 表示缺失。
Stata 参考 · R 参考
misstable summarize
misstable(data)
tidystata
每个变量的缺失值数目
base R:colSums(is.na(data))。
Stata 参考 · R 参考

变量和数值标签

Stata R 用途、差异及来源
decode x, generate(str_x)
mutate(data, str_x = decode(x))
tidystata
把带标签的数值变量转换成文本变量
Stata 参考 · R 参考
encode str_x, generate(x)
mutate(data, x = factor(str_x))
dplyr
把文本变量转换成带标签的数值变量
与 Stata 有差异: factor() 创建带 R 类别的整数水平编号;encode 创建数值编码和独立值标签定义。排序规则可能改变编号顺序。
Stata 参考 · R 参考
label define gender 1 "male" 2 "female"
mutate(data, gender = factor(gender, levels = 1:2, labels = c("male", "female")))
dplyr
给数值变量的所有取值贴上标签
R 中带标签的类别变量通常用因子(factor)存储。请明确写出 levels,确保每个取值对应正确的标签。
Stata 参考 · R 参考
label drop yesno
mutate(data, x = haven::zap_labels(x))
haven
删除数值标签
Stata 参考 · R 参考
label list x
levels(data$x)
base
查看取值标签
对于用 haven 读入的带标签数据,可用 haven::print_labels(data$x)。
Stata 参考 · R 参考
label values x yesno
mutate(data, x = haven::labelled(x, yesno))
haven
把数值标签加到变量上
先定义一次标签,例如 yesno <- c(No = 0, Yes = 1),再加到任意变量上;R 中更常用的做法是 factor()。
Stata 参考 · R 参考
label variable x "Variable name"
labelled::set_variable_labels(data, x = "Variable name")
labelled
贴上变量标签
从 Stata 文件读入的变量标签会被保留;variables() 和 codebook() 会显示它们。
Stata 参考 · R 参考
label define x 9 "Unknown" 10 "Refused"
mutate(data, x = haven::labelled(x, c(Unknown = 9, Refused = 10)))
haven
给数值变量的部分取值贴上标签
R 中很少只给部分取值贴标签;haven 可以保留这类标签,便于与 Stata 互通。tab() 和 codebook() 会显示这些标签。
Stata 参考 · R 参考
notes x: Collected in wave 2
attr(data$x, "note") <- "Collected in wave 2"
base
给变量添加注释
R 没有 notes 功能;通常用属性或脚本中的注释代替。
Stata 参考 · R 参考

构造和修改变量

Stata R 用途、差异及来源
generate y = ceil(x)
mutate(data, y = ceiling(x))
base
向上取整
Stata 参考 · R 参考
clonevar x2 = x
mutate(data, x2 = x)
dplyr
克隆一个变量
与 Stata 有差异: mutate(x2 = x) 复制 R 向量和属性,但不完整复现 Stata clonevar 的变量特征及注释。
Stata 参考 · R 参考
collapse (mean) x1 x2, by(group)
summarise(data, across(c(x1, x2), ~ mean(.x, na.rm = TRUE)), .by = group)
dplyr
用统计量分组描述若干变量,并替换原数据
与 Stata 有差异: 像 collapse 一样替换数据需要赋值:data <- summarise(...)。summ(data, x1, x2, .by = group) 则只显示汇总表。 R 保留缺失分组键;Stata tabstat by() 和 tabulate summarize() 默认排除缺失分组类别。应核对分组样本。
Stata 参考 · R 参考
collapse (count) n = x (sum) total = y, by(group)
summarise(data, n = sum(!is.na(x)), total = sum(y, na.rm = TRUE), .by = group)
dplyr
对不同变量使用不同的统计量
Stata 参考 · R 参考
generate y = cond(x > 0, 1, 0)
mutate(data, y = if_else(x > 0, 1, 0))
dplyr
按条件取不同的值
与 Stata 有差异: x 缺失时,Stata 的 cond() 取第一个值(缺失值视为很大);if_else() 返回 NA。 Stata 数值缺失比较时大于所有有限数;R 比较返回 NA。应先明确处理缺失,再使用条件。
Stata 参考 · R 参考
destring str_x, generate(num_x)
mutate(data, num_x = destring(str_x))
tidystata
把文本变量转换成数值变量
与 Stata 有差异: 不是数字的文本会变为 NA 并给出警告,相当于 force 选项。destring(str_x, ignore = "kg") 会先删除这些字符,相当于 ignore(),因此 "10 kg" 得到 10。 无效数字文本在此变为 NA 并警告;Stata destring 未指定 force 时拒绝转换含此类文本的变量。
Stata 参考 · R 参考
egen bins = cut(x), group(10)
mutate(data, bins = xtile(x, 10))
tidystata
根据分位数,将连续变量均等地分成类别变量
与 Stata 有差异: egen cut(), group() 有自己的分组规则;xtile() 遵循 Stata 的 xtile,这是分位数分组的常用命令。
Stata 参考 · R 参考
egen first = tag(group)
mutate(data, first = is_first(group))
tidystata
标记每组的第一行
与 Stata 有差异: 返回 TRUE/FALSE;与 Stata 相同,分组变量缺失的行为 FALSE,除非设置 .missing = TRUE。 R 结果为逻辑值 TRUE/FALSE,而非数值 1/0;需要一致存储类型时使用 as.integer()。
Stata 参考 · R 参考
egen id = group(g1 g2)
data |> group_by(g1, g2) |> mutate(id = cur_group_id()) |> ungroup()
dplyr
给组编号
与 Stata 有差异: cur_group_id() 也为缺失键分组编号;egen group() 未指定 missing 时排除这些行。字符串排序也可能改变编号顺序。
Stata 参考 · R 参考
egen x_avg = mean(x)
mutate(data, x_avg = mean(x, na.rm = TRUE))
dplyr
通过计算函数生成新变量
与 Stata 有差异: R 函数默认不忽略缺失值,需要 na.rm = TRUE;Stata 的 egen 会自动忽略。 全缺失组的 mean(..., na.rm = TRUE) 返回 NaN;Stata egen mean() 返回数值缺失。需要区分时应统一 NaN。
Stata 参考 · R 参考
egen x_sum = rowtotal(x1-x5)
mutate(data, x_sum = row_sum(x1:x5))
tidystata
多个变量逐行求和
Stata 参考 · R 参考
bysort group: egen med = median(x)
mutate(data, med = median(x, na.rm = TRUE), .by = group)
dplyr
分组中位数
Stata 参考 · R 参考
bysort group: egen mn = min(x)
dplyr::mutate(data, mn = if (all(is.na(x))) NA_real_ else min(x, na.rm = TRUE), .by = group)
dplyr
分组最小值
与 Stata 有差异: 全缺失组返回NA,不对空集合调用min()。 全缺失组的 R max/min 在 na.rm = TRUE 时返回 -Inf/Inf 并警告;Stata egen max()/min() 返回缺失。
Stata 参考 · R 参考
bysort group: egen mx = max(x)
dplyr::mutate(data, mx = if (all(is.na(x))) NA_real_ else max(x, na.rm = TRUE), .by = group)
dplyr
分组最大值
与 Stata 有差异: 全缺失组返回NA,不对空集合调用max()。 全缺失组的 R max/min 在 na.rm = TRUE 时返回 -Inf/Inf 并警告;Stata egen max()/min() 返回缺失。
Stata 参考 · R 参考
bysort group: egen n = count(x)
mutate(data, n = sum(!is.na(x)), .by = group)
dplyr
每组非缺失值的个数
Stata 参考 · R 参考
bysort group: egen s = sd(x)
mutate(data, s = sd(x, na.rm = TRUE), .by = group)
dplyr
分组标准差
Stata 参考 · R 参考
bysort group: egen tot = total(x)
mutate(data, tot = sum(x, na.rm = TRUE), .by = group)
dplyr
分组求和
Stata 参考 · R 参考
bysort group: egen x_avg = mean(x)
mutate(data, x_avg = mean(x, na.rm = TRUE), .by = group)
dplyr
分组计算统计量
与 Stata 有差异: 全缺失组的 mean(..., na.rm = TRUE) 返回 NaN;Stata egen mean() 返回数值缺失。需要区分时应统一 NaN。
Stata 参考 · R 参考
egen bins = cut(x), at(0(10)100)
mutate(data, bins = cut(x, breaks = seq(0, 100, 10), right = FALSE))
base
根据给定的切点分组
与 Stata 有差异: right = FALSE 使每个区间包含下限,与 egen cut() 一致。cut_length(x, 10) 则把取值范围等宽地分成 10 组。 cut() 返回带区间标签的因子;egen cut() 即使区间开闭一致,仍存储数值下界。
Stata 参考 · R 参考
egen first = rowfirst(x1-x5)
mutate(data, first = coalesce(x1, x2, x3, x4, x5))
dplyr
多个变量中第一个非缺失值
Stata 参考 · R 参考
egen id = concat(a b), punct(_)
mutate(data, id = paste(a, b, sep = "_"))
base
把多个变量拼接成一个字符串
与 Stata 有差异: paste() 将 NA 转成文本 "NA";egen concat() 使用 Stata 缺失值及数值显示规则。
Stata 参考 · R 参考
egen last = rowlast(x1-x5)
mutate(data, last = coalesce(x5, x4, x3, x2, x1))
dplyr
多个变量中最后一个非缺失值
Stata 参考 · R 参考
egen n9 = anycount(x1-x5), values(9)
mutate(data, n9 = rowSums(across(x1:x5, ~ .x %in% 9)))
dplyr
计算等于某个值的变量个数
Stata 参考 · R 参考
egen p = pc(x)
mutate(data, p = pc(x))
tidystata
占总数的百分比
pc(x, prop = TRUE) 给出比例,即 prop 选项。
Stata 参考 · R 参考
egen r = rank(x)
mutate(data, r = rank(x, na.last = "keep"))
base
排序(相同取值取平均秩)
rank() 与 egen rank() 一样给相同取值平均秩;dplyr::min_rank() 则给最小秩。
Stata 参考 · R 参考
egen s = seq(), from(1) to(3)
mutate(data, s = rep_len(1:3, n()))
dplyr
生成循环序列
Stata 参考 · R 参考
egen x_avg = rowmean(x1-x5)
mutate(data, x_avg = row_mean(x1:x5))
tidystata
多个变量逐行求均值
Stata 参考 · R 参考
egen x_max = rowmax(x1-x5)
mutate(data, x_max = row_max(x1:x5))
tidystata
多个变量逐行求最大值
Stata 参考 · R 参考
egen x_med = rowmedian(x1-x5)
mutate(data, x_med = row_median(x1:x5))
tidystata
多个变量逐行求中位数
Stata 参考 · R 参考
egen x_mi = rowmiss(x1-x5)
mutate(data, x_mi = row_miss(x1:x5))
tidystata
逐行计算缺失值个数
Stata 参考 · R 参考
egen x_min = rowmin(x1-x5)
mutate(data, x_min = row_min(x1:x5))
tidystata
多个变量逐行求最小值
Stata 参考 · R 参考
egen x_n = rownonmiss(x1-x5)
mutate(data, x_n = row_non_miss(x1:x5))
tidystata
逐行计算非缺失值个数
Stata 参考 · R 参考
egen x_nv = rownvals(x1-x5)
mutate(data, x_nv = row_nvals(x1:x5))
tidystata
每行不同取值的个数
来自 egenmore(SSC)。默认忽略缺失值;.missing = TRUE 相当于 missing 选项。
Stata 参考 · R 参考
egen x_sd = rowsd(x1-x5)
mutate(data, x_sd = row_sd(x1:x5))
tidystata
多个变量逐行求标准差
Stata 参考 · R 参考
egen z = std(x)
mutate(data, z = std(x))
tidystata
标准化变量
base R:as.vector(scale(x))。加 .by = g 即 by g: egen。
Stata 参考 · R 参考
generate y = floor(x)
mutate(data, y = floor(x))
base
向下取整
Stata 参考 · R 参考
format x %9.2f
mutate(data, x_text = sprintf("%.2f", x))
base
以两位小数显示数值
R 不改变存储的数值,只在显示时设定格式,例如 round(x, 2) 或 sprintf()。
Stata 参考 · R 参考
generate x2 = x^2
mutate(data, x2 = x^2)
dplyr
生成新变量
需要把结果赋值回去才能保留:data <- mutate(data, ...)。R 不区分 generate 和 replace。
Stata 参考 · R 参考
generate N = _N
mutate(data, N = n())
dplyr
生成总行数变量
加上 .by = group 即为每组的行数,相当于 bysort group: generate N = _N。
Stata 参考 · R 参考
generate n = _n
mutate(data, n = row_number())
dplyr
生成第几行变量
Stata 参考 · R 参考
generate days = d2 - d1
mutate(data, days = as.numeric(d2 - d1))
base
两个日期之间的天数
Stata 参考 · R 参考
generate dummy = (x1 == 1 & x2 == 2)
dplyr::mutate(data, dummy = as.integer(x1 %in% 1 & x2 %in% 2))
dplyr
根据条件生成逻辑变量/虚拟变量
与 Stata 有差异: Stata的数值等式对缺失值返回假;%in%使任一输入缺失时虚拟变量为零。 R 结果为逻辑值 TRUE/FALSE,而非数值 1/0;需要一致存储类型时使用 as.integer()。
Stata 参考 · R 参考
generate lag_x = x[_n-1]
mutate(data, lag_x = lag(x))
dplyr
生成滞后变量
这与 x[_n-1] 一样按行移动,不考虑时间上的间隔。面板数据的滞后请查看 L.。
Stata 参考 · R 参考
generate lead_x = x[_n+2]
mutate(data, lead_x = lead(x, 2))
dplyr
生成前定变量
Stata 参考 · R 参考
generate x2 = x^2 if x > 0
mutate(data, x2 = if_else(x > 0, x^2, NA))
dplyr
根据条件生成新变量
Stata 中缺失值大于任何数,所以缺失的 x 满足 x > 0;R 中该条件为 NA,结果也为 NA。
Stata 参考 · R 参考
generate x2 = x^2 in 11/20
mutate(data, x2 = if_else(row_number() %in% 11:20, x^2, NA))
dplyr
根据位置生成新变量
Stata 参考 · R 参考
generate y = inlist(x, 1, 3, 5)
mutate(data, y = x %in% c(1, 3, 5))
base
x 是否等于列出的某个值
与 Stata 有差异: x 缺失时 %in% 返回 FALSE,与 inlist() 一致。 R 返回逻辑指示值,而 Stata generate 存储数值 1/0;需要一致存储类型时使用 as.integer()。
Stata 参考 · R 参考
generate y = inrange(x, 1, 5)
mutate(data, y = between(x, 1, 5))
dplyr
x 是否在某个范围内
与 Stata 有差异: x 缺失时 between() 返回 NA,而 Stata 的 inrange() 返回 0。
Stata 参考 · R 参考
generate y = ln(x)
mutate(data, y = log(x))
base
自然对数
与 Stata 有差异: log10() 对应 Stata 的 log10()。R 中 log(0) 为 -Inf,而不是缺失值。 R log(0) 返回 -Inf,负输入返回 NaN 并警告;Stata ln() 对这些无效输入返回数值缺失。
Stata 参考 · R 参考
generate m = missing(x)
mutate(data, m = is.na(x))
base
是否为缺失值
与 Stata 有差异: R 返回逻辑指示值,而 Stata generate 存储数值 1/0;需要一致存储类型时使用 as.integer()。
Stata 参考 · R 参考
mvdecode x, mv(-9)
mutate(data, x = mvdecode(x, -9))
tidystata
把缺失值代码改为缺失值
mvdecode(x, c(-8, -9)) 可同时处理多个代码,如 mv(-8 -9)。
Stata 参考 · R 参考
mvencode x, mv(-9)
mutate(data, x = mvencode(x, -9))
tidystata
把缺失值改为特定取值
Stata 参考 · R 参考
pctile p = x, nquantiles(4)
summ(data, x, .stat = c("p25", "median", "p75"))
tidystata
分位数切点
与 Stata 有差异: summ() 使用 Stata 的百分位数规则。quantile(x, type = 2) 与之接近,但会把某些整数位置(如 100 * 0.3)当作非整数。 summ() 在汇总表中返回百分位数;pctile 创建包含切点的数据列。
Stata 参考 · R 参考
recast double x
mutate(data, x = as.double(x))
base
更改存储类型
R 自动选择存储类型,因此也不需要 compress。
Stata 参考 · R 参考
recode x (1/5 = 1) (6/10 = 2) (11/15 = 3) (else = .), generate(x3g)
mutate(data, x3g = case_when(between(x, 1, 5) ~ 1, between(x, 6, 10) ~ 2, between(x, 11, 15) ~ 3))
dplyr
重编码变量
不满足任何条件的取值为 NA,相当于 Stata 的 else = .。
Stata 参考 · R 参考
recode x (9 = .)
mutate(data, x = na_if(x, 9))
dplyr
把某个取值改为缺失值
Stata 参考 · R 参考
rename x x2
rename(data, x2 = x)
dplyr
重命名变量
注意顺序:新名字 = 旧名字。
Stata 参考 · R 参考
rename (a b) (c d)
rename(data, c = a, d = b)
dplyr
同时重命名多个变量
Stata 参考 · R 参考
rename * *_old
rename_with(data, ~ paste0(.x, "_old"))
dplyr
给所有变量名加后缀
Stata 参考 · R 参考
rename *, lower
rename_with(data, tolower)
dplyr
批量重命名变量到小写
Stata 参考 · R 参考
rename x*, upper
rename_with(data, toupper, starts_with("x"))
dplyr
把部分变量名改为大写
Stata 参考 · R 参考
replace x = x^2
mutate(data, x = x^2)
dplyr
修改旧变量
Stata 参考 · R 参考
replace x = x^2 if x > 0
mutate(data, x = if_else(x > 0, x^2, x))
dplyr
根据条件修改旧变量
与 Stata 有差异: Stata 数值缺失比较时大于所有有限数;R 比较返回 NA。应先明确处理缺失,再使用条件。
Stata 参考 · R 参考
replace x = x^2 in 11/20
mutate(data, x = if_else(row_number() %in% 11:20, x^2, x))
dplyr
根据位置修改旧变量
Stata 参考 · R 参考
generate z = rnormal()
mutate(data, z = rnorm(n()))
stats
正态分布随机数
与 Stata 有差异: R 与 Stata 使用不同随机数流;相同数值种子不会复现相同随机数或抽样行。
Stata 参考 · R 参考
generate y = round(x, 0.1)
mutate(data, y = round(x, 1))
base
四舍五入
与 Stata 有差异: R 的第二个参数是小数位数。R 对 .5 采用四舍六入五成双(round(0.5) 为 0);Stata 则向上取整。
Stata 参考 · R 参考
generate u = runiform()
mutate(data, u = runif(n()))
stats
均匀分布随机数
与 Stata 有差异: R 与 Stata 使用不同随机数流;相同数值种子不会复现相同随机数或抽样行。
Stata 参考 · R 参考
generate cs = sum(x)
mutate(data, cs = cumsum(coalesce(x, 0)))
dplyr
累计求和
Stata 的 sum() 函数把缺失值当作 0,因此这里用 coalesce(x, 0)。
Stata 参考 · R 参考
tabulate x, generate(x_)
as_dummy(data, x)
tidystata
生成(类别变量)x 所有取值的虚拟变量
与 Stata 有差异: as_dummy(data, x, .names = "index") 像 Stata 一样把新列编号为 x_1、x_2……。也可用 fastDummies::dummy_cols(data, "x")。 as_dummy() 默认按取值命名列;.names = "index" 可生成 Stata 式编号后缀。还须核对缺失类别指示列规则。
Stata 参考 · R 参考
tostring num_x, generate(str_x)
mutate(data, str_x = tostring(num_x))
tidystata
把数值变量转换成文本变量
与 Stata 有差异: 带标签的变量保留数值代码;decode() 则返回数值标签。 格式和保留精度可能与 Stata tostring 不同;需要精确文本或往返精度时须明确格式。
Stata 参考 · R 参考
winsor2 x, cuts(1 99)
mutate(data, x_w = datawizard::winsorize(x, threshold = 0.01))
datawizard
在第 1 和第 99 百分位缩尾
与 Stata 有差异: datawizard 使用 R 分位数切点,winsor2 使用 Stata 百分位规则;小样本和并列值可能产生不同截尾边界。
Stata 参考 · R 参考
xtile q = x, nquantiles(4)
mutate(data, q = xtile(x, 4))
tidystata
根据分位数分组
xtile() 遵循 Stata 的规则,相同取值总在同一组。
Stata 参考 · R 参考
xtile q = x [aweight = w], nquantiles(4)
mutate(data, q = xtile(x, 4, wt = w))
tidystata
根据加权分位数分组
Stata 参考 · R 参考

筛选变量或个案

Stata R 用途、差异及来源
drop if x == 1
filter(data, x != 1 | is.na(x))
dplyr
删除满足条件的行
Stata 会保留 x 缺失的行;R 中用 | is.na(x) 达到相同效果。
Stata 参考 · R 参考
drop in 1/4
slice(data, -(1:4))
dplyr
按位置删除行
Stata 参考 · R 参考
drop x
select(data, -x)
dplyr
删除单个变量
Stata 参考 · R 参考
drop if missing(x)
filter(data, !is.na(x))
dplyr
删除 x 缺失的行
Stata 参考 · R 参考
drop x1 x3-x5
select(data, -c(x1, x3:x5))
dplyr
删除多个变量
也可以按位置删除:select(data, -c(1, 3:5))。
Stata 参考 · R 参考
duplicates drop
duplicates_drop(data)
tidystata
删除完全重复的行
Stata 参考 · R 参考
duplicates drop x1 x2, force
duplicates_drop(data, x1, x2, .force = TRUE)
tidystata
只保留某些变量未重复行
dplyr 中的对应写法是 distinct(data, x1, x2, .keep_all = TRUE)。
Stata 参考 · R 参考
keep if x1 == 1 & x2 == 2
filter(data, x1 == 1 & x2 == 2)
dplyr
根据某些变量取值,保留数据特定行
filter() 会删除条件为 NA 的行,因此含缺失值的行不会被保留。
Stata 参考 · R 参考
keep in 1/10
head(data, 10)
base
保留数据前几行
Stata 参考 · R 参考
keep x1 x3-x5
select(data, x1, x3:x5)
dplyr
保留多个变量
也可以按位置选择:select(data, 1, 3:5)。select_or_transmute() 还可以同时计算新变量。
Stata 参考 · R 参考
keep if !missing(x)
filter(data, !is.na(x))
dplyr
保留 x 未缺失行
Stata 参考 · R 参考
keep if inlist(x, 1, 3, 5)
filter(data, x %in% c(1, 3, 5))
dplyr
保留取值在列表中的行
Stata 参考 · R 参考
keep if inrange(x, 5000, 10000)
filter(data, between(x, 5000, 10000))
dplyr
保留取值在某个范围内的行
Stata 参考 · R 参考
keep in -10/-1
tail(data, 10)
base
保留数据后几行
Stata 参考 · R 参考
keep in 7/12
slice(data, 7:12)
dplyr
保留数据某几行
Stata 参考 · R 参考
keep x*
select(data, varlist("x*"))
tidystata
按通配符保留变量
Stata 参考 · R 参考
set seed 2024; sample 10
data |> slice_sample(prop = 0.1) |> set_seed(2024)
tidystata
抽取 10% 的随机样本,并确保可重复
与 Stata 有差异: R 与 Stata 使用不同随机数流;相同数值种子不会复现相同随机数或抽样行。
Stata 参考 · R 参考
set seed 2024; sample 1000, count
data |> slice_sample(n = 1000) |> set_seed(2024)
tidystata
抽取 1000 条个案的随机样本,并确保可重复
与 Stata 有差异: set_seed() 会在抽样之前设定种子,因此可以写在同一条管道中。 R 与 Stata 使用不同随机数流;相同数值种子不会复现相同随机数或抽样行。
Stata 参考 · R 参考

排列变量或个案

Stata R 用途、差异及来源
gsort x1 -x2
arrange(data, x1, desc(x2))
dplyr
根据 x1 和 x2 升序或降序排列数据
Stata 参考 · R 参考
order x1-x4
relocate(data, x1:x4)
dplyr
把一些变量移到最前面
Stata 参考 · R 参考
order x1-x4, before(x5)
relocate(data, x1:x4, .before = x5)
dplyr
把一些变量移到其他位置
Stata 参考 · R 参考
sort x1 x2
arrange(data, x1, x2)
dplyr
根据 x1 和 x2 升序排列数据
Stata 参考 · R 参考

合并数据

Stata R 用途、差异及来源
append using data2
bind_rows(data1, data2)
dplyr
垂直合并两个数据
与 Stata 有差异: bind_rows() 使用 R 类型提升和属性规则;.id 创建字符串来源标记,而 append, generate() 使用数值码。
Stata 参考 · R 参考
append using data2, generate(source)
dplyr::bind_rows(data1, data2, .id = "source") |> dplyr::mutate(source = as.integer(source) - 1L)
dplyr
垂直合并并记录每行的来源
与 Stata 有差异: 采用数值来源编码:主数据为零,第一个using数据为一,与Stata append, generate()一致。 bind_rows() 使用 R 类型提升和属性规则;.id 创建字符串来源标记,而 append, generate() 使用数值码。
Stata 参考 · R 参考
cross using data2
cross_join(data1, data2)
dplyr
两个数据所有行的组合
与 Stata 有差异: cross_join() 为重名列加后缀;Stata cross 对重名列保留主数据值。获得相同列前须先处理重名。
Stata 参考 · R 参考
joinby id using data2
inner_join(data1, data2, by = "id", relationship = "many-to-many")
dplyr
在每个 id 内形成所有配对
与 Stata 有差异: dplyr 为重名非键列加后缀而非保留 Stata 主数据值,不创建 _merge,也不执行声明的 1:1 键约束。
Stata 参考 · R 参考
merge 1:1 _n using data2
bind_cols(data1, data2)
dplyr
根据行的位置,水平合并两个数据
与 Stata 有差异: bind_cols() 要求行数相同(或可回收单行)并修复重名列;merge 1:1 _n 可保留未匹配行。
Stata 参考 · R 参考
merge 1:1 id using data2
stata_merge(data1, data2, "1:1", by = "id")
tidystata
根据 id 一对一合并,并报告匹配结果
与 Stata 一样保留所有个案,并生成记录匹配结果的 .merge 变量。full_join(data1, data2, by = "id") 合并但不报告。
Stata 参考 · R 参考
merge 1:m id using data2
stata_merge(data1, data2, "1:m", by = "id")
tidystata
根据 id 一对多合并
Stata 参考 · R 参考
merge m:1 id using data2
stata_merge(data1, data2, "m:1", by = "id")
tidystata
根据 id 多对一合并
Stata 参考 · R 参考
merge 1:1 id using data2, keep(master match)
left_join(data1, data2, by = "id")
dplyr
只保留 data1 中的个案
与 Stata 有差异: dplyr 为重名非键列加后缀而非保留 Stata 主数据值,不创建 _merge,也不执行声明的 1:1 键约束。
Stata 参考 · R 参考
merge 1:1 id using data2, keep(master) keepusing(id) nogenerate
anti_join(data1, data2, by = "id")
dplyr
在 data1 中只保留 id 不在 data2 中的个案
与 Stata 有差异: semi_join()/anti_join() 按键成员关系选择行,但不执行 Stata merge 1:1 的唯一键要求;须另行验证唯一性。
Stata 参考 · R 参考
merge 1:1 id using data2, keep(match)
inner_join(data1, data2, by = "id")
dplyr
只保留 data1 和 data2 匹配成功的个案
与 Stata 有差异: dplyr 为重名非键列加后缀而非保留 Stata 主数据值,不创建 _merge,也不执行声明的 1:1 键约束。
Stata 参考 · R 参考
merge 1:1 id using data2, keep(match) keepusing(id) nogenerate
semi_join(data1, data2, by = "id")
dplyr
在 data1 中只保留 id 出现在 data2 中的个案
与 Stata 有差异: semi_join()/anti_join() 按键成员关系选择行,但不执行 Stata merge 1:1 的唯一键要求;须另行验证唯一性。
Stata 参考 · R 参考
merge 1:1 id using data2, keep(using match)
right_join(data1, data2, by = "id")
dplyr
只保留 data2 中的个案
与 Stata 有差异: dplyr 为重名非键列加后缀而非保留 Stata 主数据值,不创建 _merge,也不执行声明的 1:1 键约束。
Stata 参考 · R 参考
merge 1:1 id1 id2 using data2, nogenerate
full_join(data1, data2, by = c("id1", "id2"))
dplyr
根据 id1 和 id2 合并两个数据
与 Stata 有差异: 两个数据中同名的变量会加上后缀,可用 suffix = c("_data1", "_data2") 指定。 dplyr 为重名非键列加后缀而非保留 Stata 主数据值,不创建 _merge,也不执行声明的 1:1 键约束。
Stata 参考 · R 参考

转换长、宽数据

Stata R 用途、差异及来源
reshape long var, i(id) j(year)
tidyr::pivot_longer(data, tidyselect::starts_with("var"), names_to = "year", names_prefix = "var", names_transform = list(year = as.integer), values_to = "var")
tidyr
宽数据到长数据
与 Stata 有差异: 将数值后缀转换为整数year,对应未指定string的reshape long。 pivot_longer() 未设 names_transform 时返回文本 year,也不执行 reshape i()/j() 唯一性约束。
Stata 参考 · R 参考
reshape wide var, i(id) j(year)
pivot_wider(data, names_from = year, values_from = var, names_prefix = "var")
tidyr
长数据到宽数据
与 Stata 有差异: 重复键可使 pivot_wider() 生成列表列;Stata reshape wide 拒绝重复 i()/j() 组合。应先验证键。
Stata 参考 · R 参考
reshape long var, i(id) j(year)
stats::reshape(data, direction = "long", varying = list(c("var2000", "var2001")), v.names = "var", timevar = "year", times = c(2000, 2001), idvar = "id")
stats
使用基础 R 将重复测量转为长格式
与 Stata 有差异: 需要明确列出宽格式列和时间取值。本固定工作流程使用 var2000 和 var2001,请按实际数据修改列名。
Stata 参考 · R 参考
reshape wide var, i(id) j(year)
stats::reshape(data, direction = "wide", v.names = "var", timevar = "year", idvar = "id", sep = "")
stats
使用基础 R 将重复测量转为宽格式
与 Stata 有差异: 每个 id/year 组合需要恰有一行。R 的行顺序和属性可能与 Stata 不同,应按键和取值核对结果。
Stata 参考 · R 参考
xpose, clear
tibble::as_tibble(t(data), .name_repair = "unique")
tibble
转置数据(很少用到)
Stata 参考 · R 参考

构造数据

Stata R 用途、差异及来源
expand n
uncount(data, n)
tidyr
每行复制 n 次
与 Stata 有差异: uncount() 默认删除 n 变量;加上 .remove = FALSE 可以保留。 uncount() 默认删除计数列且零计数会删除行;Stata expand 保留计数变量,计数小于一时仍保留观测。
Stata 参考 · R 参考
fillin x1 x2
complete(data, x1, x2)
tidyr
补齐若干变量取值的所有组合,并保留其他变量
与 Stata 有差异: expand(data, x1, x2) 只返回取值组合;expand_grid(x1 = 1:5, x2 = c("a", "b")) 可以从零生成所有组合。 complete() 补齐组合但不创建 Stata fillin 的 _fillin 标记;因子水平和缺失键组合也需明确设置。
Stata 参考 · R 参考
input x y
tibble(x = c(1, 2), y = c(3, 4))
tibble
手动输入数据
Stata 参考 · R 参考
set obs 100
data <- tibble(id = 1:100)
tibble
生成指定行数的数据
Stata 参考 · R 参考

字符串与日期

Stata R 用途、差异及来源
generate z = char(code)
data$z <- vapply(data$code,intToUtf8,character(1))
base
从 ASCII 编码创建字符
与 Stata 有差异: 仅限 ASCII 编码 1–127;扩展字节编码不是 Unicode 码点。
Stata 参考 · R 参考
generate t = clock(s, "YMDhms")
mutate(data, t = lubridate::ymd_hms(s))
lubridate
把文本转换成日期时间
与 Stata 有差异: R 使用 Date/POSIXct 或 tsibble 日历类别,而非 Stata 以 1960 年为起点的数值日期时间计数;交换底层数值须转换纪元和时区。
Stata 参考 · R 参考
generate double z = clock(s, "YMDhms")
data$z <- as.POSIXct(data$s,format='%Y-%m-%d %H:%M:%S',tz='UTC')
base
使用显式 UTC 时区解析日期时间
与 Stata 有差异: POSIXct 是带时区的自 1970 年起的秒数;Stata clock 是不带时区的自 1960 年起的毫秒数。
Stata 参考 · R 参考
generate double z = cofd(d)
data$z <- as.numeric(data$d-as.Date('1960-01-01'))*86400000
base
将 R 日期转换为 Stata 午夜毫秒编码
与 Stata 有差异: 返回自 1960 年起的普通 Stata %tc 毫秒数,而非 POSIXct 对象。
Stata 参考 · R 参考
generate d = date(s, "YMD")
mutate(data, d = lubridate::ymd(s))
lubridate
把文本转换成日期
与 Stata 有差异: R 使用 Date/POSIXct 或 tsibble 日历类别,而非 Stata 以 1960 年为起点的数值日期时间计数;交换底层数值须转换纪元和时区。
Stata 参考 · R 参考
generate z = date(s, "DMY")
data$z <- as.Date(data$s,format='%d/%m/%Y')
base
解析日月年日期字符串
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
generate z = date(s, "MDY")
data$z <- as.Date(data$s,format='%m/%d/%Y')
base
解析月日年日期字符串
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
generate z = date(s, "YMD")
data$z <- as.Date(data$s,format='%Y-%m-%d')
base
解析年月日日期字符串
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
generate dd = day(d)
mutate(data, dd = lubridate::day(d))
lubridate
提取日
Stata 参考 · R 参考
generate z = day(d)
data$z <- as.integer(format(data$d,'%d'))
base
提取月内日期编号
与 Stata 有差异: 接收 R Date 列并返回所示日历要素;原始 Stata 日期编码须先转换。
Stata 参考 · R 参考
generate z = daysinmonth(d)
data$z <- as.integer(lubridate::days_in_month(data$d))
lubridate
获取各日历月的天数
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
display c(current_date)
Sys.Date()
base
今天的日期
Stata 参考 · R 参考
generate z = dofc(milliseconds)
data$z <- as.Date(as.POSIXct(data$milliseconds/1000,origin='1960-01-01',tz='UTC'),tz='UTC')
base
将 Stata 毫秒日期时间转换为日期
与 Stata 有差异: 用于不含闰秒编码的普通 Stata %tc 值;UTC 用于保证时区确定。
Stata 参考 · R 参考
generate d = dofm(m)
mutate(data, d = as.Date(m))
tsibble
月度时期的第一天
与 Stata 有差异: 这里的 m 是 tsibble::yearmonth() 生成的月度时期。 R 使用 Date/POSIXct 或 tsibble 日历类别,而非 Stata 以 1960 年为起点的数值日期时间计数;交换底层数值须转换纪元和时区。
Stata 参考 · R 参考
generate z = dofm(m)
data$z <- as.Date(sprintf('%04d-%02d-01',1960L+data$m%/%12L,data$m%%12L+1L))
base
将 Stata 月度编码转换为月初日期
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
generate z = dofq(q)
data$z <- as.Date(sprintf('%04d-%02d-01',1960L+data$q%/%4L,(data$q%%4L)*3L+1L))
base
将 Stata 季度编码转换为季度首日
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
generate z = dofy(year)
data$z <- as.Date(sprintf('%04d-01-01',data$year))
base
构建各年份首日
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
generate w = dow(d)
mutate(data, w = lubridate::wday(d) - 1)
lubridate
星期几
wday() 把星期日记为 1;Stata 的 dow() 把星期日记为 0。
Stata 参考 · R 参考
generate z = dow(d)
data$z <- as.integer(format(data$d,'%w'))
base
提取星期并以零表示星期日
与 Stata 有差异: 接收 R Date 列并返回所示日历要素;原始 Stata 日期编码须先转换。
Stata 参考 · R 参考
generate z = doy(d)
data$z <- as.integer(format(data$d,'%j'))
base
提取年内日期编号
与 Stata 有差异: 接收 R Date 列并返回所示日历要素;原始 Stata 日期编码须先转换。
Stata 参考 · R 参考
generate z = firstdayofmonth(d)
data$z <- as.Date(format(data$d,'%Y-%m-01'))
base
查找各日历月的首日
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
format d %td
format(data$d, "%d%b%Y")
base
显示日期
日期保持其类型不变;format() 只改变显示方式。
Stata 参考 · R 参考
generate age = (d2 - d1) / 365.25
mutate(data, age = lubridate::time_length(lubridate::interval(d1, d2), "years"))
lubridate
以年计的年龄或时长
与 Stata 有差异: time_length(interval(...), "years") 使用日历年长度;天数除以 365.25 是固定年长近似,年龄结果可能不同。
Stata 参考 · R 参考
generate z = halfyear(d)
data$z <- (as.integer(format(data$d,'%m'))-1L)%/%6L+1L
base
提取半年编号
与 Stata 有差异: 接收 R Date 列并返回所示日历要素;原始 Stata 日期编码须先转换。
Stata 参考 · R 参考
generate z = hh(t)
data$z <- as.integer(format(data$t,'%H',tz='UTC'))
base
从 UTC 时间戳提取小时
与 Stata 有差异: 输入为 R POSIXct 时间戳;原始 Stata %tc 数值需先转换再提取。
Stata 参考 · R 参考
generate s = lower(name)
mutate(data, s = str_to_lower(name))
stringr
转为小写
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate d = mdy(m, d, y)
mutate(data, d = lubridate::make_date(y, m, d))
lubridate
由年、月、日生成日期
与 Stata 有差异: R 使用 Date/POSIXct 或 tsibble 日历类别,而非 Stata 以 1960 年为起点的数值日期时间计数;交换底层数值须转换纪元和时区。
Stata 参考 · R 参考
generate z = mdy(month, day, year)
data$z <- as.Date(sprintf('%04d-%02d-%02d',data$year,data$month,data$day))
base
从年、月、日列构建日期
与 Stata 有差异: R Date 对象的数值原点不同于 Stata;请用对象进行日历操作,不直接比较原始编码。
Stata 参考 · R 参考
generate z = mm(t)
data$z <- as.integer(format(data$t,'%M',tz='UTC'))
base
从 UTC 时间戳提取分钟
与 Stata 有差异: 输入为 R POSIXct 时间戳;大写 %M 为分钟,小写 %m 为月份。
Stata 参考 · R 参考
generate m = mofd(d)
mutate(data, m = tsibble::yearmonth(d))
tsibble
由日期生成月度时期
与 Stata 有差异: tsibble::yearquarter() 为季度版本,相当于 qofd()。 R 使用 Date/POSIXct 或 tsibble 日历类别,而非 Stata 以 1960 年为起点的数值日期时间计数;交换底层数值须转换纪元和时区。
Stata 参考 · R 参考
generate z = mofd(d)
data$z <- (as.integer(format(data$d,'%Y'))-1960L)*12L+as.integer(format(data$d,'%m'))-1L
base
将 Date 日期转换为 Stata 月度编码
与 Stata 有差异: 返回自 1960 年 1 月以来的月数,显式使用 Stata 月度单位。
Stata 参考 · R 参考
generate m = month(d)
mutate(data, m = lubridate::month(d))
lubridate
提取月份
Stata 参考 · R 参考
generate z = month(d)
data$z <- as.integer(format(data$d,'%m'))
base
提取月份编号
与 Stata 有差异: 接收 R Date 列并返回所示日历要素;原始 Stata 日期编码须先转换。
Stata 参考 · R 参考
generate q = qofd(d)
mutate(data, q = tsibble::yearquarter(d))
tsibble
由日期生成季度时期
与 Stata 有差异: R 使用 Date/POSIXct 或 tsibble 日历类别,而非 Stata 以 1960 年为起点的数值日期时间计数;交换底层数值须转换纪元和时区。
Stata 参考 · R 参考
generate z = qofd(d)
data$z <- (as.integer(format(data$d,'%Y'))-1960L)*4L+(as.integer(format(data$d,'%m'))-1L)%/%3L
base
将 Date 日期转换为 Stata 季度编码
与 Stata 有差异: 返回自 1960q1 以来的季度数,显式使用 Stata 季度单位。
Stata 参考 · R 参考
generate z = quarter(d)
data$z <- (as.integer(format(data$d,'%m'))-1L)%/%3L+1L
base
提取日历季度编号
与 Stata 有差异: 接收 R Date 列并返回所示日历要素;原始 Stata 日期编码须先转换。
Stata 参考 · R 参考
generate x = real(s)
mutate(data, x = as.numeric(s))
base
文本转为数值
与 Stata 有差异: tidystata 的 destring() 还会去掉数值标签。 as.numeric() 对无效文本警告,与 Stata real() 不同;因子须先转为文本水平再转数字。
Stata 参考 · R 参考
generate z = real(s)
valid <- grepl('^[+-]?[0-9]+([.][0-9]+)?$',data$s); data$z <- rep(NA_real_,length(valid)); data$z[valid] <- as.numeric(data$s[valid])
base
解析限定十进制格式并将无效文本设为缺失
与 Stata 有差异: 特意限制格式以避免意外警告;科学计数法与带标记缺失需扩展处理。
Stata 参考 · R 参考
generate has = regexm(name, "^A")
mutate(data, has = str_detect(name, "^A"))
stringr
匹配正则表达式
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = regexm(s, "^[0-9]+$")
data$z <- as.integer(grepl('^[0-9]+$',data$s))
base
标记仅包含 ASCII 数字的字符串
与 Stata 有差异: 此简单共有正则可移植;高级模式下 Stata 与 R 正则引擎不同。
Stata 参考 · R 参考
generate s = regexr(name, "[0-9]+", "")
mutate(data, s = str_replace(name, "[0-9]+", ""))
stringr
替换第一个正则匹配
与 Stata 有差异: str_replace_all() 替换所有匹配,相当于 ustrregexra()。 R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = regexr(s, "[0-9]+", "#")
data$z <- sub('[0-9]+','#',data$s)
base
替换文本中的首段数字
与 Stata 有差异: 首个正则匹配替换;高级正则功能因引擎而异。
Stata 参考 · R 参考
generate z = regexreplaceall(s, "[0-9]+", "#")
data$z <- gsub('[0-9]+','#',data$s)
base
替换文本中的全部数字段
与 Stata 有差异: 使用简单 ASCII 模式对应 StataNow regexreplaceall;旧版 Stata 使用其他函数。
Stata 参考 · R 参考
generate d = regexs(1) if regexm(name, "([0-9]+)")
mutate(data, d = str_extract(name, "[0-9]+"))
stringr
提取匹配的文本
与 Stata 有差异: str_extract() 对不匹配行返回 NA;Stata generate ... if 留下空字符串。regexs() 还依赖前面的 regexm() 匹配。
Stata 参考 · R 参考
generate z = regexs(1) if regexm(s, "([A-Z]+)-([0-9]+)")
data$z <- stringr::str_match(data$s,'([A-Z]+)-([0-9]+)')[,2]
stringr
提取第一个捕获组
R 直接返回捕获组,无需前一个全局匹配状态;未匹配行返回 NA。
Stata 参考 · R 参考
split name, parse(" ")
separate_wider_delim(data, name, delim = " ", names_sep = "_", too_few = "align_start")
tidyr
把文本拆分成多个变量
Stata 参考 · R 参考
split s, parse("-") destring
data <- tidyr::separate_wider_delim(data,s,delim='-',names=c('s1','s2'),cols_remove=FALSE); data$s1 <- as.integer(data$s1); data$s2 <- as.integer(data$s2)
tidyr
拆分两个数值字段并转换类型
与 Stata 有差异: 要求恰有两个干净整数字段;结果列名 s1、s2 固定。
Stata 参考 · R 参考
split s, parse("-") generate(part)
parts <- strsplit(data$s,'-',fixed=TRUE); data$part1 <- vapply(parts,`[`,character(1),1); data$part2 <- vapply(parts,`[`,character(1),2)
base
拆分两部分分隔字符串
与 Stata 有差异: 固定双字段示例,每行恰有一个分隔符;生成前缀 part 固定。
Stata 参考 · R 参考
generate z = ss(t)
data$z <- as.numeric(format(data$t,'%OS',tz='UTC'))
base
从 UTC 时间戳提取秒
与 Stata 有差异: 输入为 R POSIXct 时间戳;小数秒精度依赖平台与显示设置。
Stata 参考 · R 参考
generate s = string(x)
mutate(data, s = as.character(x))
base
数值转为文本
与 Stata 有差异: tidystata 的 decode() 对带标签的数据会使用数值标签。 as.character() 使用 R 数值格式和 NA 规则;Stata string() 使用数值显示格式并用 "." 表示数值缺失。
Stata 参考 · R 参考
generate s = stritrim(name)
mutate(data, s = str_squish(name))
stringr
把连续空格合并为一个
与 Stata 有差异: str_squish() 同时会去掉首尾空格。
Stata 参考 · R 参考
generate z = stritrim(s)
data$z <- gsub(' +',' ',data$s)
base
合并重复内部 ASCII 空格
Stata 参考 · R 参考
generate n = strlen(name)
mutate(data, n = str_length(name))
stringr
字符串长度
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = strlen(s)
data$z <- nchar(data$s,type='bytes')
base
统计字节数而非 Unicode 字符数
与 Stata 有差异: 字节长度依赖编码;本例显式使用 UTF-8。
Stata 参考 · R 参考
generate s = strlower(name)
mutate(data, s = str_to_lower(name))
stringr
转为小写
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = strlower(s)
data$z <- tolower(data$s)
base
将 ASCII 文本转为小写
Stata 参考 · R 参考
generate z = strltrim(s)
data$z <- sub('^ +','',data$s)
base
仅清除开头 ASCII 空格
Stata 参考 · R 参考
generate m = strmatch(name, "A*")
mutate(data, m = grepl(glob2rx("A*"), name))
utils
匹配通配符模式
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = strmatch(s, "a*")
data$z <- as.integer(grepl(utils::glob2rx('a*'),data$s))
base
匹配简单通配符模式
与 Stata 有差异: 仅演示 * 通配符;更复杂模式需核对转义。
Stata 参考 · R 参考
generate z = strofreal(x, "%06.0f")
data$z <- sprintf('%06.0f',data$x)
base
将数值格式化为补零文本
Stata 参考 · R 参考
generate has = strpos(name, "a") > 0
mutate(data, has = str_detect(name, fixed("a")))
stringr
是否包含某段文本
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = strpos(s, "cat")
position <- regexpr('cat',data$s,fixed=TRUE); data$z <- ifelse(position<0,0L,as.integer(position))
base
定位 ASCII 子串并以零表示未找到
Stata 参考 · R 参考
generate s = strproper(name)
mutate(data, s = str_to_title(name))
stringr
首字母大写
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = strproper(s)
data$z <- stringr::str_to_title(data$s,locale='en')
stringr
将英语地名各单词首字母大写
与 Stata 有差异: 英语区域设置示例;标点与特定语言大小写规则可能不同。
Stata 参考 · R 参考
generate z = strreverse(s)
data$z <- vapply(strsplit(data$s,''),function(z) paste(rev(z),collapse=''),character(1))
base
反转简单 ASCII 文本
Stata 参考 · R 参考
generate z = strrtrim(s)
data$z <- sub(' +$','',data$s)
base
仅清除结尾 ASCII 空格
Stata 参考 · R 参考
generate n = strtoname(s)
mutate(data, n = make.names(s))
base
把文本转为合法的变量名
与 Stata 有差异: janitor::clean_names(data) 可以一次清理所有变量名。 make.names() 允许点号并按 R 规则处理保留词;strtoname() 按 Stata 允许字符和长度限制生成名称。
Stata 参考 · R 参考
generate z = strtoname(s)
data$z <- substr(gsub('[^A-Za-z0-9_]','_',data$s),1,32); data$z <- ifelse(grepl('^[0-9]',data$z),paste0('_',data$z),data$z)
base
将短 ASCII 文本转为 Stata 风格名称
与 Stata 有差异: 仅演示短 ASCII 名称;R 语法名称与 Stata 保留名规则不同。
Stata 参考 · R 参考
generate s = strtrim(name)
mutate(data, s = str_trim(name))
stringr
去掉首尾空格
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = strtrim(s)
data$z <- trimws(data$s,whitespace=' ')
base
清除首尾 ASCII 空格
Stata 参考 · R 参考
generate s = strupper(name)
mutate(data, s = str_to_upper(name))
stringr
转为大写
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = strupper(s)
data$z <- toupper(data$s)
base
将 ASCII 文本转为大写
Stata 参考 · R 参考
generate s = subinstr(name, "a", "b", .)
mutate(data, s = str_replace_all(name, fixed("a"), "b"))
stringr
替换文本
与 Stata 有差异: stringr 默认把模式当作正则表达式;fixed() 按字面匹配,与 subinstr() 一致。 R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = subinstr(s, "cat", "dog", .)
data$z <- gsub('cat','dog',data$s,fixed=TRUE)
base
替换全部字面匹配
Stata 参考 · R 参考
generate z = subinstr(s, "cat", "dog", 1)
data$z <- sub('cat','dog',data$s,fixed=TRUE)
base
仅替换首个字面匹配
Stata 参考 · R 参考
generate z = subinword(s, "cat", "dog", .)
data$z <- gsub('\\bcat\\b','dog',data$s,perl=TRUE)
base
替换简单 ASCII 文本中的完整单词
与 Stata 有差异: 使用正则单词边界;分隔符与 Unicode 规则可能不同于 Stata。
Stata 参考 · R 参考
generate s = substr(name, 1, 3)
mutate(data, s = str_sub(name, 1, 3))
stringr
截取字符串
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = substr(s, -3, .)
data$z <- stringr::str_sub(data$s,-3)
stringr
提取最后三个 ASCII 字符
Stata 参考 · R 参考
generate z = substr(s, 1, 3)
data$z <- substr(data$s,1,3)
base
按长度提取 ASCII 前缀
Stata 参考 · R 参考
generate z = substr(s, 3, 2)
data$z <- substr(data$s,3,4)
base
按起点与长度提取 ASCII 文本
Stata 参数为长度;R substr 参数为包含在内的终点。
Stata 参考 · R 参考
generate z = uchar(code)
data$z <- vapply(data$code,intToUtf8,character(1))
base
从 Unicode 码点创建字符
Stata 参考 · R 参考
generate s = upper(name)
mutate(data, s = str_to_upper(name))
stringr
转为大写
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = ustrlen(s)
data$z <- nchar(data$s,type='chars')
base
统计 Unicode 码点数
统计码点数,不是可见字素簇数。
Stata 参考 · R 参考
generate z = ustrlower(s)
data$z <- stringr::str_to_lower(data$s,locale='en')
stringr
按指定区域设置转换 Unicode 小写
与 Stata 有差异: 显式采用英语区域设置;语言相关大小写需选用适当区域设置。
Stata 参考 · R 参考
generate z = ustrnormalize(s, "nfc")
data$z <- stringi::stri_trans_nfc(data$s)
stringi
规范化 Unicode 规范等价文本
Stata 参考 · R 参考
generate z = ustrnormalize(s, "nfkc")
data$z <- stringi::stri_trans_nfkc(data$s)
stringi
规范化 Unicode 兼容字符
Stata 参考 · R 参考
generate z = ustrpos(s, "猫")
position <- regexpr('\u732b',data$s,fixed=TRUE); data$z <- ifelse(position<0,0L,as.integer(position))
base
按码点位置定位 Unicode 子串
Stata 参考 · R 参考
generate has = ustrregexm(name, "^a", 1)
mutate(data, has = str_detect(name, regex("^a", ignore_case = TRUE)))
stringr
支持 Unicode 的正则表达式(忽略大小写)
与 Stata 有差异: stringr 本身支持 Unicode,因此 Stata 中 u 开头的字符串函数不需要单独的版本。 R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = ustrregexm(s, "\p{L}+")
data$z <- as.integer(stringr::str_detect(data$s,'\\p{L}+'))
stringr
检测 Unicode 字母
与 Stata 有差异: ICU 正则流程;R 缺失字符串保留 NA,而非 Stata 空字符串。
Stata 参考 · R 参考
generate z = ustrregexra(s, "[0-9]+", "#")
data$z <- stringr::str_replace_all(data$s,'[0-9]+','#')
stringr
替换所有 ICU 正则匹配
Stata 参考 · R 参考
generate z = ustrregexrf(s, "[0-9]+", "#")
data$z <- stringr::str_replace(data$s,'[0-9]+','#')
stringr
替换首个 ICU 正则匹配
Stata 参考 · R 参考
generate z = ustrreverse(s)
data$z <- stringi::stri_reverse(data$s)
stringi
反转 Unicode 码点顺序
与 Stata 有差异: 组合符与字素簇可能需要不同的面向用户反转规则。
Stata 参考 · R 参考
generate z = ustrtrim(s)
data$z <- stringr::str_trim(data$s)
stringr
清除首尾 Unicode 空白
Stata 参考 · R 参考
generate z = ustrupper(s)
data$z <- stringr::str_to_upper(data$s,locale='en')
stringr
按指定区域设置转换 Unicode 大写
与 Stata 有差异: 显式采用英语区域设置;特定区域大小写可能不同于 Stata 默认值。
Stata 参考 · R 参考
generate z = usubstr(s, 2, 1)
data$z <- substr(data$s,2,2)
base
按位置提取一个 Unicode 码点
R 字符索引按码点计;不按字素簇计。
Stata 参考 · R 参考
generate w = word(name, 1)
mutate(data, w = stringr::word(name, 1))
stringr
字符串的第一个词
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = word(s, 2)
data$z <- vapply(strsplit(trimws(data$s),' +'),function(z) z[2],character(1))
base
提取第二个简单空白单词
与 Stata 有差异: 要求至少两个不带引号的简单词元;不复刻 Stata 引号词解析。
Stata 参考 · R 参考
generate n = wordcount(name)
mutate(data, n = str_count(name, "\\S+"))
stringr
词的个数
与 Stata 有差异: R 的 Unicode、正则和大小写规则可能不同于非 ustr Stata 函数;Stata 空字符串即缺失,R 则区分空串和 NA。
Stata 参考 · R 参考
generate z = wordcount(s)
data$z <- ifelse(trimws(data$s)=='',0L,lengths(strsplit(trimws(data$s),' +')))
base
统计简单空白分隔词数
与 Stata 有差异: 仅用于无引号 ASCII 单词;带引号的多词短语需要解析器。
Stata 参考 · R 参考
generate y = year(d)
mutate(data, y = lubridate::year(d))
lubridate
提取年份
lubridate::month()、day() 和 wday() 提取其他部分。
Stata 参考 · R 参考
generate z = year(d)
data$z <- as.integer(format(data$d,'%Y'))
base
提取日历年份
与 Stata 有差异: 接收 R Date 列并返回所示日历要素;原始 Stata 日期编码须先转换。
Stata 参考 · R 参考
generate z = ym(year, month)
data$z <- (data$year-1960L)*12L+data$month-1L
base
从年与月构建 Stata 月度编码
与 Stata 有差异: 要求月份为有效整数 1–12;输出使用自 1960 年 1 月起的 Stata 月数。
Stata 参考 · R 参考
generate z = yq(year, quarter)
data$z <- (data$year-1960L)*4L+data$quarter-1L
base
从年与季度构建 Stata 季度编码
与 Stata 有差异: 要求季度为有效整数 1–4;输出使用自 1960q1 起的季度数。
Stata 参考 · R 参考

循环和编程

Stata R 用途、差异及来源
ado update
update.packages()
utils
更新已安装的包
Stata 参考 · R 参考
capture command
capture(expression)
tidystata
运行代码,出错时不中断
与 Stata 有差异: 成功时返回表达式结果;出错时显示失败消息,并不可见地返回 NULL。quiet = TRUE 抑制失败提示、警告和消息,但保留打印输出。使用 capture(data <- update(data)) 可在更新失败时保留原对象;data <- capture(update(data)) 会在出错时赋值为 NULL。代码块中的分步赋值保留最后完成的更新;整条管道只赋值一次时,失败会保留原对象。出错前的副作用不会回滚。这是对 Stata capture 的 R 适配,而 Stata 会抑制所有输出。
Stata 参考 · R 参考
clear all
rm(list = ls())
base
删除所有对象
重启 R(RStudio 中的 Session > Restart R)才是真正干净的开始。
Stata 参考 · R 参考
cls
cat("\014")
base
清空控制台
在 RStudio 中也可以按 Ctrl+L。
Stata 参考 · R 参考
display _b[x]
coef(fit)["x"]
stats
提取某个系数
Stata 参考 · R 参考
display _se[x]
sqrt(diag(vcov(fit)))["x"]
stats
提取某个标准误
Stata 参考 · R 参考
ereturn list
broom::glance(fit)
broom
模型的统计量
broom::tidy(fit) 给出系数表,names(fit) 列出所有存储的内容。
Stata 参考 · R 参考
foreach v of varlist v1-v5 { generate `v'_sq = `v'^2 }
mutate(data, across(v1:v5, ~ .x^2, .names = "{col}_sq"))
dplyr
对一些变量跑循环
across() 可以代替大部分对变量的循环;其他循环可用 for (v in names) { ... }。
Stata 参考 · R 参考
forvalues i = 1/5 { generate v`i'_sq = v`i'^2 if v`i' > 0 }
mutate(data, across(v1:v5, ~ if_else(.x > 0, .x^2, NA), .names = "{col}_sq"))
dplyr
对一些变量跑循环(带有条件语句)
Stata 参考 · R 参考
forvalues i = 6/10 { forvalues j = 3/5 { replace x_`i'_`j' = x_`i'_`j' + 1 } }
mutate(data, across(matches("^x_([6-9]|10)_[3-5]$"), ~ .x + 1))
dplyr
对一些变量跑循环(变量名中有特定数字)
用正则表达式选择变量名。只需要一个数字范围时,可用 varlist("x_[6-10]_*")。
Stata 参考 · R 参考
frame create other
other <- tibble()
tibble
保存另一份数据
R 可以同时保存任意多个数据框,各为独立的对象,相当于自带 frames。
Stata 参考 · R 参考
if `x' > 0 { display "positive" }
if (x > 0) print("positive")
base
条件成立时才运行代码
需要加引号:findit("if"),因为 if 是 R 的保留字。
Stata 参考 · R 参考
local vars x1 x2 x3
vars <- c("x1", "x2", "x3")
base
存储变量名列表
与 all_of() 一起使用:select(data, all_of(vars)) 或 across(all_of(vars), ...)。
Stata 参考 · R 参考
macro list
ls()
base
列出已定义的对象
Stata 参考 · R 参考
matrix A = (1, 2 \ 3, 4)
A <- matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE)
base
生成矩阵
Stata 参考 · R 参考
preserve
backup <- data
base
保存一份数据副本
R 不会原地修改数据,保留原对象、把结果赋给新名字即可;restore 相当于 data <- backup。
Stata 参考 · R 参考
program define myprog
myprog <- function(data) { summ(data) }
base
编写自己的命令
Stata 参考 · R 参考
quietly regress y x
fit <- lm(y ~ x, data = data)
stats
运行但不显示输出
赋值的结果不会打印;之后用 print(fit) 或 summary(fit) 显示。
Stata 参考 · R 参考
return list
str(summ(data, x))
tidystata
查看命令存储的结果
R 的结果是普通对象:赋值后可以提取其中的部分,例如 s <- summ(data, x); s$mean。
Stata 参考 · R 参考
scalar a = 3
a <- 3
base
存储单个数值
Stata 参考 · R 参考
set seed 2024
set.seed(2024)
base
设定随机数种子
与 Stata 有差异: set_seed(.fn, seed) 可以在管道中设定种子;请参阅 sample 的条目。 R 与 Stata 使用不同随机数流;相同数值种子不会复现相同随机数或抽样行。
Stata 参考 · R 参考
set trace on
traceback()
base
查找错误发生的位置
debug(f) 或 browser() 可以逐行运行函数。
Stata 参考 · R 参考
tempfile f
f <- tempfile(fileext = ".rds")
base
临时文件
R 中不需要临时变量:中间结果可以之后删除,或保存为单独的对象。
Stata 参考 · R 参考
timer on 1
timer(expression)
tidystata
计算代码运行时间
Stata 参考 · R 参考
version 18
R.version.string
base
版本控制
renv::snapshot() 记录包的版本,便于以后重现项目。
Stata 参考 · R 参考
which summarize
getAnywhere("summ")
utils
查看命令来自哪里
Stata 参考 · R 参考
while `i' < 10 { local i = `i' + 1 }
while (i < 10) { i <- i + 1 }
base
条件成立时重复执行
Stata 参考 · R 参考

模型和结果表

Stata R 用途、差异及来源
areg y x, absorb(id)
fixest::feols(y ~ x | id, data = data)
fixest
吸收一个类别变量的回归
与 Stata 有差异: 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
Stata 参考 · R 参考
avplots
car::avPlots(fit)
car
偏回归图
Stata 参考 · R 参考
bootstrap, reps(500): regress y x
lmtest::coeftest(fit, vcov = sandwich::vcovBS(fit, R = 500))
sandwich
自助法标准误
与 Stata 有差异: R 代码为已有拟合估计协方差;重抽样单位、中心化和 t 或正态推断须匹配 Stata bootstrap/jackknife 前缀选项。
Stata 参考 · R 参考
cluster kmeans x1 x2, k(3)
kmeans(na.omit(select(data, x1, x2)), centers = 3)
stats
K 均值聚类
与 Stata 有差异: R 默认 Hartigan-Wong k 均值和随机初始中心;Stata 初值和迭代默认不同。比较聚类须控制初始中心。
Stata 参考 · R 参考
csdid y, ivar(id) time(year) gvar(first_treat)
did::att_gt(yname = "y", tname = "year", idname = "id", gname = "first_treat", data = data)
did
多期(交错)双重差分
与 Stata 有差异: 须匹配对照组、预期效应和估计方法;csdid 与 att_gt() 的默认值、聚合和推断不保证一致。
Stata 参考 · R 参考
didregress (y) (treated), group(id) time(year)
fixest::feols(y ~ treated | id + year, data = data)
fixest
双重差分(Stata 17 及以上)
与 Stata 有差异: 仅 TWFE 系数不含 didregress 默认组聚类标准误和诊断;须指定聚类并核对 DID 设计。
Stata 参考 · R 参考
estat hettest
lmtest::bptest(fit, ~ fitted(fit), studentize = FALSE)
lmtest
Breusch-Pagan 异方差检验
这些选项与 Stata 默认的以拟合值为基础的检验一致。
Stata 参考 · R 参考
estat ic
c(AIC = AIC(fit), BIC = BIC(fit))
stats
信息准则
与 Stata 有差异: 须比较相同估计样本和似然常数;R 类别和 Stata 对尺度参数或似然项的计数可能不同。
Stata 参考 · R 参考
estat ovtest
lmtest::resettest(fit, power = 2:4)
lmtest
遗漏变量 RESET 检验
Stata 参考 · R 参考
estat vce
vcov(fit)
stats
方差协方差矩阵
Stata 参考 · R 参考
estimates store m1
m1 <- lm(y ~ x, data = data)
stats
保存模型结果
模型结果是普通的对象,可以用不同的名字保存任意多个。
Stata 参考 · R 参考
estimates table m1 m2
modelsummary::modelsummary(list(m1, m2), output = "markdown")
modelsummary
并列比较多个模型
Stata 参考 · R 参考
eststo m1: regress y x
m1 <- lm(y ~ x, data = data)
stats
保存模型用于制表
Stata 参考 · R 参考
esttab m1 m2
modelsummary::modelsummary(list(m1, m2))
modelsummary
回归结果表
Stata 参考 · R 参考
etable
modelsummary::modelsummary(fit)
modelsummary
最近一个模型的结果表(Stata 17 及以上)
Stata 参考 · R 参考
glm y x, family(binomial)
glm(y ~ x, family = binomial, data = data)
stats
广义线性模型
Stata 参考 · R 参考
heckman y x, select(s = z)
sampleSelection::selection(s ~ z, y ~ x, data = data)
sampleSelection
Heckman 样本选择模型
Stata 参考 · R 参考
ivreg2 y x1 (x2 = z), robust
fixest::feols(y ~ x1 | x2 ~ z, data = data, vcov = "hetero")
fixest
带稳健标准误的工具变量回归
与 Stata 有差异: fixest::fitstat(fit, ~ ivf + ivwald) 报告第一阶段统计量。 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
Stata 参考 · R 参考
ivregress 2sls y x1 (x2 = z)
fixest::feols(y ~ x1 | x2 ~ z, data = data)
fixest
工具变量回归(两阶段最小二乘)
与 Stata 有差异: 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
Stata 参考 · R 参考
jackknife: regress y x
lmtest::coeftest(fit, vcov = sandwich::vcovJK(fit))
sandwich
刀切法标准误
与 Stata 有差异: R 代码为已有拟合估计协方差;重抽样单位、中心化和 t 或正态推断须匹配 Stata bootstrap/jackknife 前缀选项。
Stata 参考 · R 参考
lincom x1 - x2
marginaleffects::hypotheses(fit, "x1 - x2 = 0")
marginaleffects
系数的线性组合
与 Stata 有差异: hypotheses() 使用 R 模型协方差和默认自由度;Stata 可能使用不同 t、F 或正态参照分布。
Stata 参考 · R 参考
logistic y x
broom::tidy(glm(y ~ x, family = binomial, data = data), exponentiate = TRUE, conf.int = TRUE)
broom
以优势比报告的 logit 模型
与 Stata 有差异: broom 置信区间依赖模型;即使优势比相同,glm 剖面似然区间仍可能不同于 Stata 默认 Wald 区间。
Stata 参考 · R 参考
logit y x1 x2
glm(y ~ x1 + x2, family = binomial, data = data)
stats
Logit 模型
Stata 参考 · R 参考
logit y x, or
broom::tidy(glm(y ~ x, family = binomial, data = data), exponentiate = TRUE)
broom
优势比
与 Stata 有差异: broom 置信区间依赖模型;即使优势比相同,glm 剖面似然区间仍可能不同于 Stata 默认 Wald 区间。
Stata 参考 · R 参考
lrtest m1 m2
lmtest::lrtest(m1, m2)
lmtest
似然比检验
与 Stata 有差异: 须比较相同估计样本和似然常数;R 类别和 Stata 对尺度参数或似然项的计数可能不同。
Stata 参考 · R 参考
margins group
marginaleffects::avg_predictions(fit, by = "group")
marginaleffects
分组的预测边际
与 Stata 有差异: by = "group" 在观测组内平均;margins group 将全样本设为各水平后平均。该 Stata 目标须使用反事实预测。
Stata 参考 · R 参考
margins, dydx(*)
marginaleffects::avg_slopes(fit)
marginaleffects
平均边际效应
与 Stata 有差异: avg_slopes() 平均模型导数;因子离散变化、权重和协方差须匹配 margins 及模型上下文。
Stata 参考 · R 参考
marginsplot
marginaleffects::plot_predictions(fit, condition = "x")
marginaleffects
绘制预测边际
Stata 参考 · R 参考
melogit y x || id:
lme4::glmer(y ~ x + (1 | id), data = data, family = binomial)
lme4
多层 logit 模型
与 Stata 有差异: glmer() 默认 Laplace 积分(nAGQ = 1);melogit 默认自适应求积,可能改变估计和似然。
Stata 参考 · R 参考
mi estimate: regress y x
mice::pool(with(imp, lm(y ~ x)))
mice
在多个插补数据上估计并合并结果
与 Stata 有差异: Rubin 合并仍需匹配与 mi estimate 的完整数据自由度和小样本校正。
Stata 参考 · R 参考
mi impute chained (regress) x1 x2 = y
imp <- mice::mice(data, m = 20)
mice
多重插补
与 Stata 有差异: mice() 按 R 列类型选择方法,常用预测均值匹配;默认并非指定的链式线性回归。须明确方法、预测矩阵和 m。
Stata 参考 · R 参考
mixed y x || id:
lme4::lmer(y ~ x + (1 | id), data = data)
lme4
多层(混合)线性模型
与 Stata 有差异: lme4 不报告 p 值;lmerTest::lmer() 会加上。 lmer() 默认 REML,Stata mixed 默认 ML。ML 须设 REML = FALSE,固定效应 p 值还需另选方法。
Stata 参考 · R 参考
mlogit y x1 x2
nnet::multinom(y ~ x1 + x2, data = data)
nnet
多项 logit 模型
与 Stata 有差异: multinom() 的多分类 y 须为因子;结果参照类别和优化器默认值可能与 Stata mlogit 不同。
Stata 参考 · R 参考
nbreg y x
MASS::glm.nb(y ~ x, data = data)
MASS
负二项模型
与 Stata 有差异: fixest::fenegbin() 可以加入固定效应。 glm.nb() 与默认 nbreg 同为 NB2,但 theta 为 Stata alpha 倒数,似然或优化报告规则不同。
Stata 参考 · R 参考
nlcom _b[x1] / _b[x2]
marginaleffects::hypotheses(fit, "x1 / x2 = 0")
marginaleffects
系数的非线性组合
与 Stata 有差异: 标准误使用 delta 方法,与 Stata 一致。 hypotheses() 使用 R 模型协方差和默认自由度;Stata 可能使用不同 t、F 或正态参照分布。
Stata 参考 · R 参考
oaxaca y x1 x2, by(group)
oaxaca::oaxaca(y ~ x1 + x2 | group, data = data)
oaxaca
Blinder-Oaxaca 分解
与 Stata 有差异: oaxaca() 报告多个参照权重分解;须明确选择 Stata oaxaca 使用的参照系数及方差方法。
Stata 参考 · R 参考
ologit y x1 x2
MASS::polr(factor(y) ~ x1 + x2, data = data, Hess = TRUE)
MASS
有序 logit 模型
与 Stata 有差异: Hess = TRUE 使 summary() 能显示标准误。 polr() 使用有序因子水平和阈值参数化;须明确水平顺序并核对与 Stata 的切点符号规则。
Stata 参考 · R 参考
oprobit y x1 x2
MASS::polr(factor(y) ~ x1 + x2, data = data, method = "probit", Hess = TRUE)
MASS
有序 probit 模型
与 Stata 有差异: polr() 使用有序因子水平和阈值参数化;须明确水平顺序并核对与 Stata 的切点符号规则。
Stata 参考 · R 参考
outreg2 using table.doc
modelsummary::modelsummary(list(m1, m2), output = "table.docx")
modelsummary
把回归结果表导出到 Word
Stata 参考 · R 参考
poisson y x1 x2
glm(y ~ x1 + x2, family = poisson, data = data)
stats
泊松模型
Stata 参考 · R 参考
ppmlhdfe y x, absorb(id year)
fixest::fepois(y ~ x | id + year, data = data)
fixest
带固定效应的泊松模型
与 Stata 有差异: 泊松固定效应系数目标一致,但分离或单例组删除和协方差校正可能不同;须核对保留样本和不确定性。
Stata 参考 · R 参考
predict yhat
mutate(data, yhat = predict(fit, newdata = data))
stats
预测值
与 Stata 有差异: residuals(fit) 给出模型所用个案的残差。 predict() 依赖 R 模型;响应或链接尺度、残差定义及预测样本须匹配 Stata 估计后上下文。
Stata 参考 · R 参考
predict p, pr
mutate(data, p = predict(fit, newdata = data, type = "response"))
stats
预测概率
与 Stata 有差异: predict() 依赖 R 模型;响应或链接尺度、残差定义及预测样本须匹配 Stata 估计后上下文。
Stata 参考 · R 参考
predict r, residuals
mutate(data, r = y - predict(fit, newdata = data))
stats
每行的残差
与 Stata 有差异: predict() 依赖 R 模型;响应或链接尺度、残差定义及预测样本须匹配 Stata 估计后上下文。
Stata 参考 · R 参考
probit y x1 x2
glm(y ~ x1 + x2, family = binomial(link = "probit"), data = data)
stats
Probit 模型
Stata 参考 · R 参考
putdocx begin
flextable::save_as_docx(flextable::flextable(results), path = "results.docx")
flextable
把表格写入 Word
officer 可以生成完整的 Word 文档。
Stata 参考 · R 参考
putexcel set results.xlsx
writexl::write_xlsx(results, "results.xlsx")
writexl
把结果写入 Excel
openxlsx2 可以精确控制单元格格式。
Stata 参考 · R 参考
qreg y x
quantreg::rq(y ~ x, tau = 0.5, data = data)
quantreg
中位数(分位数)回归
与 Stata 有差异: rq() 默认标准误方法取决于样本量,可能不同于 Stata qreg;须明确协方差和推断方法。
Stata 参考 · R 参考
rdrobust y x, c(0)
rdrobust::rdrobust(data$y, data$x, c = 0)
rdrobust
断点回归
与 Stata 有差异: R 和 Stata 实现使用相同估计器;有限样本输出还须匹配版本、带宽、质量点和方差设置。
Stata 参考 · R 参考
reghdfe y x, absorb(id year)
fixest::feols(y ~ x | id + year, data = data)
fixest
高维固定效应
与 Stata 有差异: 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
Stata 参考 · R 参考
regress y x1 x2
fit <- lm(y ~ x1 + x2, data = data)
stats
线性回归
summary(fit) 显示系数表;broom::tidy(fit) 以数据表形式返回。
Stata 参考 · R 参考
regress y i.group c.x1##c.x2
lm(y ~ factor(group) + x1 * x2, data = data)
stats
因子变量和交互项
与 Stata 有差异: factor() 相当于 i.;x1 * x2 相当于 c.x1##c.x2,x1:x2 相当于 c.x1#c.x2。 factor() 按 R 水平顺序选择参照;Stata i.group 使用数值基准水平。应明确因子水平和对比编码。
Stata 参考 · R 参考
regress y ib3.group
lm(y ~ relevel(factor(group), ref = "3"), data = data)
stats
指定参照组
Stata 参考 · R 参考
regress y x [pweight = wt]
fixest::feols(y ~ x, data = data, weights = ~wt, vcov = "hetero")
fixest
使用抽样权重的回归
与 Stata 有差异: 若有分层和聚类等完整的抽样设计,请查看 svyset。 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
Stata 参考 · R 参考
regress y x1 x2, robust
fixest::feols(y ~ x1 + x2, data = data, vcov = "hetero")
fixest
异方差稳健标准误
与 Stata 有差异: 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
Stata 参考 · R 参考
regress y x1 x2, vce(cluster id)
fixest::feols(y ~ x1 + x2, data = data, cluster = ~id)
fixest
聚类标准误
与 Stata 有差异: 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
Stata 参考 · R 参考
rreg y x
MASS::rlm(y ~ x, data = data)
MASS
稳健回归
与 Stata 有差异: rlm() 使用 Huber M 估计;Stata 的 rreg 结合了 Huber 和 biweight 权重,因此估计值可能略有不同。 rlm() 默认 Huber M 估计;rreg 筛异常值并结合 Huber 与双权迭代,估计和推断都可能不同。
Stata 参考 · R 参考
rvfplot
plot(fit, which = 1)
stats
残差对拟合值图
Stata 参考 · R 参考
sem (y <- x1 x2)
lavaan::sem("y ~ x1 + x2", data = data)
lavaan
结构方程模型
与 Stata 有差异: lavaan 默认将观测外生预测变量视为固定;须匹配与 Stata sem 的 fixed.x 和缺失数据似然设置。
Stata 参考 · R 参考
synth y x1 x2, trunit(1) trperiod(2000)
Synth::synth(data.prep.obj = prep)
Synth
合成控制法
需要先用 Synth::dataprep() 从面板数据生成 prep;tidysynth 提供更简洁的接口。
Stata 参考 · R 参考
teffects ipw (y) (t x1 x2)
WeightIt::weightit(t ~ x1 + x2, data = data, method = "glm")
WeightIt
逆概率加权
Stata 参考 · R 参考
teffects psmatch (y) (t x1 x2)
MatchIt::matchit(t ~ x1 + x2, data = data, method = "nearest")
MatchIt
倾向得分匹配
在匹配后的数据上估计效应,例如 lm(y ~ t, data = MatchIt::match.data(m), weights = weights)。
Stata 参考 · R 参考
test x1 = x2
marginaleffects::hypotheses(fit, "x1 = x2")
marginaleffects
检验系数的假设
与 Stata 有差异: hypotheses() 使用 R 模型协方差和默认自由度;Stata 可能使用不同 t、F 或正态参照分布。
Stata 参考 · R 参考
tobit y x, ll(0)
AER::tobit(y ~ x, left = 0, data = data)
AER
Tobit 删失回归
Stata 参考 · R 参考
vif
car::vif(fit)
car
方差膨胀因子
与 Stata 有差异: car::vif() 对多自由度项给出广义 VIF;Stata estat vif 给出回归列 VIF,因此因子项表格不同。
Stata 参考 · R 参考
xtabond y x
plm::pgmm(y ~ lag(y, 1) + x | lag(y, 2:99), data = data, index = c("id", "year"))
plm
动态面板(Arellano-Bond)
与 Stata 有差异: pgmm() 须匹配变换、滞后工具、压缩和一步或两步选择;仅公式不能复现 xtabond 默认工具或标准误。
Stata 参考 · R 参考
xtlogit y x, fe
survival::clogit(y ~ x + strata(id), data = data)
survival
条件(固定效应)logit 模型
与 Stata 有差异: fixest::feglm(y ~ x | id, family = binomial) 更快,但估计的是非条件固定效应。 clogit() 对应条件固定效应 logit;精确似然、权重和协方差须匹配 xtlogit, fe,而非含虚拟变量的无条件 logit。
Stata 参考 · R 参考
xtpoisson y x, fe
fixest::fepois(y ~ x | id, data = data)
fixest
固定效应泊松模型
与 Stata 有差异: 泊松固定效应系数目标一致,但分离或单例组删除和协方差校正可能不同;须核对保留样本和不确定性。
Stata 参考 · R 参考
xtreg y x, fe
fixest::feols(y ~ x | id, data = data)
fixest
面板固定效应模型
与 Stata 有差异: 须匹配 fixest 协方差小样本校正和单例组处理;公式相同不能保证标准误或保留观测一致。
Stata 参考 · R 参考
xtreg y x, re
plm::plm(y ~ x, data = data, index = c("id", "year"), model = "random")
plm
面板随机效应模型
与 Stata 有差异: plm 和 xtreg, re 默认方差分量估计法不同;比较结果前须匹配 random.method 和面板样本。
Stata 参考 · R 参考

面板和时间序列

Stata R 用途、差异及来源
arima y, ar(1/2)
arima(data$y, order = c(2, 0, 0))
stats
ARIMA 模型
与 Stata 有差异: R 和 Stata ARIMA 初始化及截距参数化不同;比较系数前须匹配似然方法并转换截距。
Stata 参考 · R 参考
carryforward x, replace
tidyr::fill(data, x, .direction = "down")
tidyr
用上一个非缺失值向下填充
与 Stata 有差异: 先 group_by(data, id) 即可在每个面板个体内填充。 fill() 未先分组时会跨面板单位填补;单位内 carryforward 须先 group_by(id)。
Stata 参考 · R 参考
generate d_x = D.x
mutate(data, d_x = stata_diff(x, time = year), .by = id)
tidystata
面板内的一阶差分
stata_diff(x, 2, time = year) 即 D2.x(差分的差分)。
Stata 参考 · R 参考
generate lead_x = F.x
mutate(data, lead_x = stata_lead(x, time = year), .by = id)
tidystata
面板内的前定变量
与 Stata 相同,year 中断处为缺失值。
Stata 参考 · R 参考
generate lag_x = L.x
mutate(data, lag_x = stata_lag(x, time = year), .by = id)
tidystata
面板内的滞后变量
与 Stata 相同,year 中断处为缺失值;dplyr::lag() 则只是按行移动。L2.x 用 stata_lag(x, 2, time = year),月度日期加 unit = "month"。
Stata 参考 · R 参考
generate lag2_x = L2.x
mutate(data, lag2_x = lag(x, 2, order_by = year), .by = id)
dplyr
面板内的二期滞后
与 Stata 有差异: lag(x, 2, order_by = year) 移动两个观测行;L2.x 移动两个时间单位,遇时间缺口返回缺失。该规则应使用 stata_lag(x, 2, time = year)。
Stata 参考 · R 参考
tsfill
tsibble::fill_gaps(ts_data)
tsibble
补齐缺失的时间点
与 Stata 有差异: fill_gaps() 默认补齐各键观测范围;共同面板边界须明确设 .full,并保证 tsibble 间隔匹配 Stata delta。
Stata 参考 · R 参考
tsline y
ggplot(data, aes(year, y)) + geom_line()
ggplot2
时间序列折线图
Stata 参考 · R 参考
tsset year
tsibble::as_tsibble(data, index = year)
tsibble
声明时间序列数据
Stata 参考 · R 参考
xtdescribe
count(count(data, id, name = "periods"), periods)
dplyr
每个面板个体的期数分布
Stata 参考 · R 参考
xtline y
ggplot(data, aes(year, y)) + geom_line() + facet_wrap(~id)
ggplot2
每个面板个体一张折线图
不分面而使用 aes(group = id) 会把所有个体画在一张图上,相当于 overlay 选项。
Stata 参考 · R 参考
xtset id year
tsibble::as_tsibble(data, key = id, index = year)
tsibble
声明面板数据
tidystata 无需声明:stata_lag(x, time = year) 配合 .by = id;fixest 用 panel.id = ~id + year。
Stata 参考 · R 参考
xtsum x
data |> mutate(m = mean(x, na.rm = TRUE), .by = id) |> summarise(overall = sd(x, na.rm = TRUE), within = sd(x - m, na.rm = TRUE))
dplyr
总体和组内标准差
组间部分是各 id 均值的标准差:先 summarise(data, m = mean(x, na.rm = TRUE), .by = id),再求 sd(m)。
Stata 参考 · R 参考

生存分析

Stata R 用途、差异及来源
estat concordance
survival::concordance(fit)
survival
Cox回归后删失结局一致性
与 Stata 有差异: 固定流程;请明确调整示例列名。删失权重及风险和时间并列处理影响统计量。
Stata 参考 · R 参考
estat phtest, detail
survival::cox.zph(fit, transform = "identity")
survival
Cox比例风险诊断
与 Stata 有差异: 固定流程;请明确调整示例列名。Schoenfeld残差实现及默认时间变换可能不同。
Stata 参考 · R 参考
ltable time event, intervals(0 2 4 6)
{ ends <- c(2, 4, 6); starts <- c(0, 2, 4); n <- vapply(starts, function(t) sum(data$time >= t), integer(1)); d <- vapply(seq_along(ends), function(i) sum(data$time >= starts[i] & data$time < ends[i] & data$event == 1), integer(1)); w <- vapply(seq_along(ends), function(i) sum(data$time >= starts[i] & data$time < ends[i] & data$event == 0), integer(1)); q <- d / (n - w / 2); data.frame(start = starts, end = ends, at_risk = n, failures = d, withdrawals = w, survival = cumprod(1 - q)) }
base
固定区间的精算寿命表生存率
与 Stata 有差异: 固定流程;请明确调整示例列名。使用退出人数减半的精算修正及左闭区间,假设区间内删失均匀;须统一边界规则和分组区间。
Stata 参考 · R 参考
predict baseS, basesurv
{ h <- survival::basehaz(fit, centered = FALSE); data.frame(time = h$time, survival = exp(-h$hazard)) }
survival
根据累积风险计算Cox基线生存率
固定流程;请明确调整示例列名。基线对应零协变量;须核对目标参考特征。Stata basesurv采用乘积极限构造,exp(-累积风险)是替代估计,不保证数值一致。
Stata 参考 · R 参考
predict basehaz, basechazard
survival::basehaz(fit, centered = FALSE)
survival
零协变量处基线累积风险
与 Stata 有差异: 固定流程;请明确调整示例列名。Cox基线明确对应零协变量;Stata按观察存储,R按唯一事件或删失时间返回。
Stata 参考 · R 参考
predict median_time, median
stats::predict(fit, type = "quantile", p = .5)
survival
loglogistic AFT条件中位生存时间
与 Stata 有差异: 固定流程;请明确调整示例列名。预测特定分布的生存时间分位数,并非平均时间。
Stata 参考 · R 参考
predict residual*, deviance
stats::residuals(fit, type = "deviance")
survival
Cox回归偏差残差
与 Stata 有差异: 固定流程;请明确调整示例列名。Schoenfeld残差每个事件一行;得分和影响残差每个观察一行。
Stata 参考 · R 参考
predict residual*, dfbeta
stats::residuals(fit, type = "dfbeta")
survival
Cox系数影响残差
与 Stata 有差异: 固定流程;请明确调整示例列名。Schoenfeld残差每个事件一行;得分和影响残差每个观察一行。
Stata 参考 · R 参考
predict residual*, mgale
stats::residuals(fit, type = "martingale")
survival
Cox回归鞅残差
与 Stata 有差异: 固定流程;请明确调整示例列名。Schoenfeld残差每个事件一行;得分和影响残差每个观察一行。
Stata 参考 · R 参考
predict residual*, scaledsch
stats::residuals(fit, type = "scaledsch")
survival
标准化Schoenfeld残差
与 Stata 有差异: 固定流程;请明确调整示例列名。Schoenfeld残差每个事件一行;得分和影响残差每个观察一行。
Stata 参考 · R 参考
predict residual*, schoenfeld
stats::residuals(fit, type = "schoenfeld")
survival
事件特异Schoenfeld残差
与 Stata 有差异: 固定流程;请明确调整示例列名。Schoenfeld残差每个事件一行;得分和影响残差每个观察一行。
Stata 参考 · R 参考
predict residual*, scores
stats::residuals(fit, type = "score")
survival
Cox得分贡献
与 Stata 有差异: 固定流程;请明确调整示例列名。Schoenfeld残差每个事件一行;得分和影响残差每个观察一行。
Stata 参考 · R 参考
predict value, csnell
stats::predict(fit, type = "expected", reference = "zero")
survival
Cox-Snell期望事件量
与 Stata 有差异: 固定流程;请明确调整示例列名。相对预测明确以零为中心;期望事件量取决于各观察的随访时间。
Stata 参考 · R 参考
predict value, hr
stats::predict(fit, type = "risk", reference = "zero")
survival
Cox相对风险得分
与 Stata 有差异: 固定流程;请明确调整示例列名。相对预测明确以零为中心;期望事件量取决于各观察的随访时间。
Stata 参考 · R 参考
predict value, xb
stats::predict(fit, type = "lp", reference = "zero")
survival
Cox线性预测量
与 Stata 有差异: 固定流程;请明确调整示例列名。相对预测明确以零为中心;期望事件量取决于各观察的随访时间。
Stata 参考 · R 参考
snapspan id time event, generate(start)
{ out <- data[order(data$id, data$time), ]; previous <- ave(out$time, out$id, FUN = function(v) c(NA_real_, head(v, -1))); previous_x <- ave(out$x, out$id, FUN = function(v) c(NA_real_, head(v, -1))); out$start <- previous; out$x <- previous_x; out[!is.na(out$start), ] }
stats
将快照转为协变量向后续区间生效的区间数据
固定流程;请明确调整示例列名。首个快照定义进入时间,事件在区间末发生,普通协变量向后续区间生效;本流程剔除初始零长度行,比较行数时须核对Stata保留的基线行。
Stata 参考 · R 参考
stbase
data[order(data$id, data$start), ][!duplicated(data[order(data$id, data$start), "id"]), ]
base
保留每位受试者的基线记录
固定流程;请明确调整示例列名。仅选择记录;stbase还可能变换生存时间字段。
Stata 参考 · R 参考
stci, median
stats::quantile(survival::survfit(s ~ 1), probs = .5)
survival
中位生存时间及置信限
与 Stata 有差异: 固定流程;请明确调整示例列名。中位数插值和置信限约定可能不同。
Stata 参考 · R 参考
stci, rmean
summary(survival::survfit(s ~ 1), rmean = "common")$table
survival
截断于时间九的限制平均生存时间
与 Stata 有差异: rmean="common"将生存曲线积分限制在最大观测随访时间,与Stata的stci, rmean一致,不向随访期外推。须统一分析样本和删失声明。
Stata 参考 · R 参考
stcox x1 x2
survival::coxph(survival::Surv(time, died) ~ x1 + x2, data = data)
survival
Cox 比例风险模型
与 Stata 有差异: exp(coef(fit)) 给出 stcox 报告的风险比。 coxph() 默认用 Efron 处理并列事件;Stata stcox 默认 Breslow。设 ties = "breslow" 可匹配并列事件似然。
Stata 参考 · R 参考
stcox c.x##i.group
survival::coxph(survival::Surv(time, event) ~ x * factor(group), ties = "breslow", data = data)
survival
Cox模型的组别协变量交互
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcox x z
survival::coxph(survival::Surv(time, event) ~ x + z, data = data, ties = "breslow")
survival
Breslow结点处理的Cox回归
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcox x z [pw=w], vce(robust)
survival::coxph(survival::Surv(time, event) ~ x + z, ties = "breslow", data = data, weights = w, robust = TRUE)
survival
加权Cox模型与三明治协方差
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcox x z, efron
survival::coxph(survival::Surv(time, event) ~ x + z, data = data, ties = "efron")
survival
Efron结点处理的Cox回归
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcox x z, exactp
survival::coxph(survival::Surv(time, event) ~ x + z, data = data, ties = "exact")
survival
精确部分似然Cox回归
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcox x z, shared(id)
survival::coxph(survival::Surv(time, event) ~ x + z + frailty(id, distribution = "gamma"), ties = "breslow", data = data)
survival
共享Gamma脆弱性Cox模型
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcox x z, strata(group)
survival::coxph(survival::Surv(time, event) ~ x + z + strata(group), ties = "breslow", data = data)
survival
分层Cox基线风险
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcox x z, vce(cluster id)
survival::coxph(survival::Surv(time, event) ~ x + z, ties = "breslow", data = data, cluster = id)
survival
聚类稳健Cox推断
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcox x, tvc(z) texp(ln(_t))
survival::coxph(survival::Surv(time, event) ~ x + tt(z), ties = "breslow", data = data, tt = function(z, t, ...) z * log(t))
survival
Cox对数时间变化系数
与 Stata 有差异: 固定流程;请明确调整示例列名。须明确统一并列事件、风险区间、权重和参考推断。
Stata 参考 · R 参考
stcrreg x z, compete(cause==2)
{ expanded <- survival::finegray(survival::Surv(time, cause) ~ x + z + id, data = data, etype = "target"); survival::coxph(survival::Surv(fgstart, fgstop, fgstatus) ~ x + z, data = expanded, weights = fgwt, cluster = id) }
survival
Fine-Gray亚分布风险流程
与 Stata 有差异: 固定流程;请明确调整示例列名。使用加权扩展数据实现;删失权重和方差方法可能不同。
Stata 参考 · R 参考
stdescribe
data.frame(subjects = nrow(data), failures = sum(data$event), time_at_risk = sum(data$time))
base
描述单记录生存数据
固定流程;请明确调整示例列名。示例为零进入时间的单记录数据;多记录受试者须按唯一ID计数。
Stata 参考 · R 参考
stfill z, forward
{ out <- data[order(data$id, data$start), ]; out$z <- ave(out$z, out$id, FUN = function(v) zoo::na.locf(v, na.rm = FALSE)); out }
zoo
在生存分析受试者内向前携带已观察协变量
与 Stata 有差异: 固定流程;请明确调整示例列名。要求区间顺序正确且不重叠;开头缺失仍保留,后续信息不会向前期回填。
Stata 参考 · R 参考
stgen ever_x = ever(x==1)
transform(data, ever_x = ave(x == 1, id, FUN = function(v) as.integer(any(v))))
stats
标记生存观察史中曾经暴露的受试者
与 Stata 有差异: 固定流程;请明确调整示例列名。所有已观察区间均参与历史计算;暴露缺失值须明确处理,不能默认当作未暴露。
Stata 参考 · R 参考
stintreg x, interval(lower upper) distribution(lognormal)
survival::survreg(survival::Surv(lower, upper, type = "interval2") ~ x, data = data, dist = "lognormal")
survival
区间删失对数正态回归
与 Stata 有差异: Stata必须指定interval(lower upper)。Weibull的time选项选择AFT系数,与survreg对应,而非Stata默认的PH系数。interval2中端点相等为精确事件,下端点NA表示左删失,上端点NA表示右删失;须显式转换Stata的左删失边界。
Stata 参考 · R 参考
stintreg x, interval(lower upper) distribution(weibull) time
survival::survreg(survival::Surv(lower, upper, type = "interval2") ~ x, data = data, dist = "weibull")
survival
区间删失Weibull回归
与 Stata 有差异: Stata必须指定interval(lower upper)。Weibull的time选项选择AFT系数,与survreg对应,而非Stata默认的PH系数。interval2中端点相等为精确事件,下端点NA表示左删失,上端点NA表示右删失;须显式转换Stata的左删失边界。
Stata 参考 · R 参考
stir group
{ counts <- tapply(data$event, data$group, sum); times <- tapply(data$time, data$group, sum); stats::poisson.test(counts, T = times) }
stats
比较两组发生率
与 Stata 有差异: 固定流程;请明确调整示例列名。R提供条件精确检验和区间,Stata默认区间方法可能不同。
Stata 参考 · R 参考
stjoin
{ out <- stats::aggregate(cbind(time = time - start, event) ~ id, data = spells, sum); names(out)[2] <- "duration"; out }
stats
合并相邻且协变量恒定的区间
固定流程;请明确调整示例列名。仅当相邻区间协变量完全一致且中间无事件时有效;合并前须检查。
Stata 参考 · R 参考
stmh exposed stratum
with(data, sum(events1 * time0 / (time1 + time0)) / sum(events0 * time1 / (time1 + time0)))
base
Mantel-Haenszel分层发生率比点估计
固定流程;请明确调整示例列名。输入为按暴露和分层汇总的事件数及人时;仅计算发生率比点估计,不含Stata的方差和趋势检验。
Stata 参考 · R 参考
stptime
{ pt <- sum(data$time); events <- sum(data$event); c(person_time = pt, failures = events, rate = events / pt) }
base
按人时计算粗发生率
固定流程;请明确调整示例列名。假设进入时间为零且观察区间互不重叠。
Stata 参考 · R 参考
strate group, per(1000)
{ out <- stats::aggregate(cbind(time, event) ~ group, data, sum); out$rate_per_1000 <- 1000 * out$event / out$time; out }
stats
每千人时的分组发生率
固定流程;请明确调整示例列名。仅计算点发生率;置信区间方法须另行选择。
Stata 参考 · R 参考
streg x, distribution(weibull)
survival::survreg(survival::Surv(time, died) ~ x, data = data, dist = "weibull")
survival
参数生存模型
与 Stata 有差异: survreg() 报告加速失效时间形式;Stata 的 Weibull 默认使用风险形式,因此符号和尺度不同。
Stata 参考 · R 参考
streg x z, distribution(exponential) time
survival::survreg(survival::Surv(time, event) ~ x + z, data = data, dist = "exponential")
survival
exponential加速失效时间模型
与 Stata 有差异: 固定流程;请明确调整示例列名。survreg报告AFT系数;转换为Weibull比例风险系数须调整符号和尺度。
Stata 参考 · R 参考
streg x z, distribution(loglogistic) time
survival::survreg(survival::Surv(time, event) ~ x + z, data = data, dist = "loglogistic")
survival
loglogistic加速失效时间模型
与 Stata 有差异: 固定流程;请明确调整示例列名。survreg报告AFT系数;转换为Weibull比例风险系数须调整符号和尺度。
Stata 参考 · R 参考
streg x z, distribution(lognormal) time
survival::survreg(survival::Surv(time, event) ~ x + z, data = data, dist = "lognormal")
survival
lognormal加速失效时间模型
与 Stata 有差异: 固定流程;请明确调整示例列名。survreg报告AFT系数;转换为Weibull比例风险系数须调整符号和尺度。
Stata 参考 · R 参考
streg x z, distribution(weibull) time
survival::survreg(survival::Surv(time, event) ~ x + z, data = data, dist = "weibull")
survival
weibull加速失效时间模型
与 Stata 有差异: 固定流程;请明确调整示例列名。survreg报告AFT系数;转换为Weibull比例风险系数须调整符号和尺度。
Stata 参考 · R 参考
streg x, distribution(loglogistic) strata(group) time
survival::survreg(survival::Surv(time, event) ~ x + factor(group) + strata(group), data = data, dist = "loglogistic")
survival
loglogistic分组尺度加速失效模型
与 Stata 有差异: factor(group)提供分层截距,strata(group)提供分层尺度,与Stata的streg, strata()对应。survreg报告AFT系数;比较Stata的Weibull或指数模型风险比输出前须转换系数。
Stata 参考 · R 参考
streg x, distribution(lognormal) strata(group) time
survival::survreg(survival::Surv(time, event) ~ x + factor(group) + strata(group), data = data, dist = "lognormal")
survival
lognormal分组尺度加速失效模型
与 Stata 有差异: factor(group)提供分层截距,strata(group)提供分层尺度,与Stata的streg, strata()对应。survreg报告AFT系数;比较Stata的Weibull或指数模型风险比输出前须转换系数。
Stata 参考 · R 参考
streg x, distribution(weibull) strata(group) time
survival::survreg(survival::Surv(time, event) ~ x + factor(group) + strata(group), data = data, dist = "weibull")
survival
weibull分组尺度加速失效模型
与 Stata 有差异: factor(group)提供分层截距,strata(group)提供分层尺度,与Stata的streg, strata()对应。survreg报告AFT系数;比较Stata的Weibull或指数模型风险比输出前须转换系数。
Stata 参考 · R 参考
sts graph
plot(survival::survfit(survival::Surv(time, died) ~ 1, data = data))
survival
Kaplan-Meier 生存曲线
Stata 参考 · R 参考
sts test group
survival::survdiff(survival::Surv(time, died) ~ group, data = data)
survival
Log-rank 检验
Stata 参考 · R 参考
sts list
survival::survfit(s ~ 1)
survival
Kaplan-Meier生存曲线数据
与 Stata 有差异: 固定流程;请明确调整示例列名。R返回曲线数据;比较时须明确置信变换和并列事件处理。
Stata 参考 · R 参考
sts list, by(group)
survival::survfit(s ~ data$group)
survival
分组Kaplan-Meier曲线
与 Stata 有差异: 固定流程;请明确调整示例列名。R返回曲线数据;比较时须明确置信变换和并列事件处理。
Stata 参考 · R 参考
sts list, cumhaz
{ f <- survival::survfit(s ~ 1); data.frame(time = f$time, cumhaz = f$cumhaz) }
survival
Nelson-Aalen累积风险
与 Stata 有差异: 固定流程;请明确调整示例列名。R返回曲线数据;比较时须明确置信变换和并列事件处理。
Stata 参考 · R 参考
sts list, failure
{ f <- survival::survfit(s ~ 1); data.frame(time = f$time, failure = 1 - f$surv) }
survival
累积失败概率
与 Stata 有差异: 固定流程;请明确调整示例列名。R返回曲线数据;比较时须明确置信变换和并列事件处理。
Stata 参考 · R 参考
sts list, level(95)
survival::survfit(s ~ 1, conf.type = "plain", conf.int = .95)
survival
Kaplan-Meier区间变换:plain
固定流程;请明确调整示例列名。明确选择R的置信变换;Stata默认显示方式可能不同。
Stata 参考 · R 参考
sts list, level(95)
survival::survfit(s ~ 1, conf.type = "log", conf.int = .95)
survival
Kaplan-Meier区间变换:log
固定流程;请明确调整示例列名。明确选择R的置信变换;Stata默认显示方式可能不同。
Stata 参考 · R 参考
sts list, level(95)
survival::survfit(s ~ 1, conf.type = "log-log", conf.int = .95)
survival
Kaplan-Meier区间变换:log-log
固定流程;请明确调整示例列名。明确选择R的置信变换;Stata默认显示方式可能不同。
Stata 参考 · R 参考
sts test group
survival::survdiff(s ~ data$group, rho = 0)
survival
生存曲线Log-rank比较
与 Stata 有差异: 固定流程;请明确调整示例列名。未分层的两组Log-rank检验。
Stata 参考 · R 参考
stset time, failure(died)
survival::Surv(data$time, data$died)
survival
声明生存时间数据
R 不需要声明:在每个模型公式左边写 Surv(time, died) 即可。
Stata 参考 · R 参考
stset exit, enter(time entry) failure(event)
survival::Surv(data$entry, data$time, data$event)
survival
延迟进入计数过程响应
与 Stata 有差异: 固定流程;请明确调整示例列名。明确提供进入和退出时间;多区间数据每个风险区间应占一行。
Stata 参考 · R 参考
stset time, failure(event)
survival::Surv(data$time, data$event)
survival
右删失生存响应
与 Stata 有差异: 固定流程;请明确调整示例列名。创建生存响应对象,不改变全局数据声明状态。
Stata 参考 · R 参考
stsplit period, at(3 6)
{ Surv <- survival::Surv; survival::survSplit(Surv(time, event) ~ ., data = data, cut = c(3, 6), start = "start", end = "time", event = "event", episode = "period") }
survival
在固定切点拆分风险区间
与 Stata 有差异: 固定流程;请明确调整示例列名。返回扩展后的风险区间数据;episode变量是区间序号。
Stata 参考 · R 参考
stsum
survival::survfit(survival::Surv(time, died) ~ 1, data = data)
survival
生存时间的概要
Stata 参考 · R 参考
stsum, by(group)
stats::aggregate(cbind(person_time = time, failures = event) ~ group, data = data, FUN = sum)
stats
按组统计人时与失败数
固定流程;请明确调整示例列名。仅提供stsum的部分结果,不计算生存时间分位数。
Stata 参考 · R 参考
sttocc, number(2)
{ cases <- which(data$event == 1); sets <- lapply(seq_along(cases), function(j) { i <- cases[j]; at_risk <- which(data$entry <= data$time[i] & data$time >= data$time[i] & data$id != data$id[i]); controls <- sample(at_risk, min(2L, length(at_risk)), replace = FALSE); out <- data[c(i, controls), ]; out$case <- c(1L, rep(0L, length(controls))); out$set <- j; out$failure_time <- data$time[i]; out }); do.call(rbind, sets) }
base
从队列风险集抽取巢式病例对照样本
固定流程;请明确调整示例列名。示例为无并列失败的单记录队列;每次从风险集抽对照,同一人可出现在多个匹配集。并列失败排序和多区间数据需更完整实现。
Stata 参考 · R 参考
stvary x z
lapply(split(data, data$id), function(d) vapply(d[c("x", "z")], function(v) c(varies = length(unique(v[!is.na(v)])) > 1, any_missing = anyNA(v)), logical(2)))
base
检查受试者内协变量变化及缺失
固定流程;请明确调整示例列名。返回逐受试者标记而非Stata汇总表;与stvary一样忽略抽样权重。
Stata 参考 · R 参考

调查数据

Stata R 用途、差异及来源
svy: logit y x
survey::svyglm(y ~ x, design = design, family = quasibinomial())
survey
考虑抽样设计的 logit 模型
与 Stata 有差异: 先匹配抽样设计和缺失排除;R 与 Stata 的单 PSU 层规则、自由度和置信区间变换可能不同。
Stata 参考 · R 参考
svy: mean x
summarise(design, x = srvyr::survey_mean(x, na.rm = TRUE))
srvyr
加权均值(考虑抽样设计)
与 Stata 有差异: 先匹配抽样设计和缺失排除;R 与 Stata 的单 PSU 层规则、自由度和置信区间变换可能不同。
Stata 参考 · R 参考
svy: regress y x
survey::svyglm(y ~ x, design = design)
survey
考虑抽样设计的回归
与 Stata 有差异: 先匹配抽样设计和缺失排除;R 与 Stata 的单 PSU 层规则、自由度和置信区间变换可能不同。
Stata 参考 · R 参考
svy: tabulate x
design |> group_by(x) |> summarise(p = srvyr::survey_prop())
srvyr
加权比例(考虑抽样设计)
与 Stata 有差异: 先匹配抽样设计和缺失排除;R 与 Stata 的单 PSU 层规则、自由度和置信区间变换可能不同。
Stata 参考 · R 参考
svy, subpop(rural): mean x
design |> filter(rural == 1) |> summarise(x = srvyr::survey_mean(x, na.rm = TRUE))
srvyr
子总体估计
与 Stata 有差异: 对抽样设计对象筛选时会保留完整设计来估计方差,与 subpop() 一致。 先匹配抽样设计和缺失排除;R 与 Stata 的单 PSU 层规则、自由度和置信区间变换可能不同。
Stata 参考 · R 参考
svy: mean x, over(g)
design |> group_by(g) |> summarise(x = srvyr::survey_mean(x, na.rm = TRUE))
srvyr
分组的加权均值(考虑抽样设计)
与 Stata 有差异: 先匹配抽样设计和缺失排除;R 与 Stata 的单 PSU 层规则、自由度和置信区间变换可能不同。
Stata 参考 · R 参考
svy: proportion x
design |> group_by(x) |> summarise(p = srvyr::survey_prop(vartype = "ci"))
srvyr
带置信区间的加权比例
与 Stata 有差异: 先匹配抽样设计和缺失排除;R 与 Stata 的单 PSU 层规则、自由度和置信区间变换可能不同。
Stata 参考 · R 参考
svydescribe
summary(design)
base
描述抽样设计
Stata 参考 · R 参考
svyset psu [pweight = wt], strata(stratum)
design <- srvyr::as_survey_design(data, ids = psu, strata = stratum, weights = wt)
srvyr
声明抽样设计
与 Stata 有差异: 先匹配抽样设计和缺失排除;R 与 Stata 的单 PSU 层规则、自由度和置信区间变换可能不同。
Stata 参考 · R 参考

作图

Stata R 用途、差异及来源
binscatter y x
binsreg::binsreg(y, x, data = data)
binsreg
分箱散点图
与 Stata 有差异: statar::stat_binmean() 可以在 ggplot 中加入分箱均值:ggplot(data, aes(x, y)) + statar::stat_binmean(n = 20)。 binsreg() 默认数据驱动分箱和推断;binscatter 默认固定分位箱和 OLS 拟合。须明确匹配分箱和拟合设置。
Stata 参考 · R 参考
coefplot
modelsummary::modelplot(fit)
modelsummary
系数图
Stata 参考 · R 参考
dotplot y, over(group)
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::geom_point(position = ggplot2::position_jitter(width = 0.15, height = 0))
ggplot2
按类别显示各个观测
与 Stata 有差异: 此处使用水平方向的随机扰动,不采用 Stata 的点堆叠规则。
Stata 参考 · R 参考
graph bar (count), over(x)
ggplot(data, aes(x)) + geom_bar()
ggplot2
频数柱状图
Stata 参考 · R 参考
graph bar (mean) y, over(group)
ggplot(data, aes(group, y)) + stat_summary(fun = mean, geom = "bar")
ggplot2
分组均值柱状图
Stata 参考 · R 参考
graph box y, over(group)
ggplot(data, aes(group, y)) + geom_boxplot()
ggplot2
箱线图
与 Stata 有差异: ggplot2 箱线折点使用 R 分位数规则;Stata 使用 Stata 百分位数,小样本和并列值时可能不同。
Stata 参考 · R 参考
graph export figure.png
ggsave("figure.png")
ggplot2
导出图形
Stata 参考 · R 参考
graph pie, over(group)
ggplot(data, aes(x = "", fill = group)) + geom_bar() + coord_polar(theta = "y")
ggplot2
饼图
Stata 参考 · R 参考
graph combine g1.gph g2.gph
patchwork::wrap_plots(p1, p2)
patchwork
组合多张图
加载 patchwork 后,p1 + p2 效果相同。
Stata 参考 · R 参考
graph dot (mean) y, over(group)
ggplot(data, aes(y, group)) + stat_summary(fun = mean, geom = "point")
ggplot2
点图
Stata 参考 · R 参考
graph hbar (mean) y, over(group)
ggplot(data, aes(group, y)) + stat_summary(fun = mean, geom = "bar") + coord_flip()
ggplot2
水平柱状图
Stata 参考 · R 参考
graph hbox y, over(group)
ggplot(data, aes(y, group)) + geom_boxplot()
ggplot2
水平箱线图
与 Stata 有差异: ggplot2 箱线折点使用 R 分位数规则;Stata 使用 Stata 百分位数,小样本和并列值时可能不同。
Stata 参考 · R 参考
graph matrix x1 x2 x3
pairs(select(data, x1, x2, x3))
graphics
散点图矩阵
GGally::ggpairs() 可以绘制 ggplot2 版本。
Stata 参考 · R 参考
graph save fig.gph
saveRDS(p, "fig.rds")
base
保存图形以便之后修改
Stata 参考 · R 参考
graph bar (count), over(group)
ggplot2::ggplot(data, ggplot2::aes(group)) + ggplot2::geom_bar()
ggplot2
绘制各组频数
与 Stata 有差异: 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
Stata 参考 · R 参考
graph bar (mean) y, over(group)
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::stat_summary(fun = mean, geom = "col")
ggplot2
使用条形图表示组均值
与 Stata 有差异: 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
Stata 参考 · R 参考
graph bar (mean) y, over(group) blabel(bar)
{ plot_data <- aggregate(y ~ group, data, mean); ggplot2::ggplot(plot_data, ggplot2::aes(group, y)) + ggplot2::geom_col() + ggplot2::geom_text(ggplot2::aes(label = round(y, 1)), vjust = -0.3) }
ggplot2
为汇总条形添加数值标签
与 Stata 有差异: 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
Stata 参考 · R 参考
graph bar (median) y, over(group)
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::stat_summary(fun = median, geom = "col")
ggplot2
使用条形图表示组中位数
与 Stata 有差异: 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
Stata 参考 · R 参考
graph bar (percent), over(group)
{ counts <- as.data.frame(table(data$group)); ggplot2::ggplot(counts, ggplot2::aes(Var1, Freq / sum(Freq) * 100)) + ggplot2::geom_col() }
ggplot2
绘制各组百分比
与 Stata 有差异: 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
Stata 参考 · R 参考
graph bar (sum) y, over(group)
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::stat_summary(fun = sum, geom = "col")
ggplot2
使用条形图表示组内合计
与 Stata 有差异: 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
Stata 参考 · R 参考
graph box y, over(group)
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::geom_boxplot()
ggplot2
使用箱线图比较分布
与 Stata 有差异: 若要求数值一致,应核对箱线图的分位点和须线默认规则。
Stata 参考 · R 参考
graph box y, over(group) nooutsides
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::geom_boxplot(outlier.shape = NA)
ggplot2
隐藏箱线图离群点标记
与 Stata 有差异: 若要求数值一致,应核对箱线图的分位点和须线默认规则。
Stata 参考 · R 参考
graph dot (mean) y, over(group)
ggplot2::ggplot(data, ggplot2::aes(y, group)) + ggplot2::stat_summary(fun = mean, geom = "point")
ggplot2
使用点图表示组均值
与 Stata 有差异: 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
Stata 参考 · R 参考
graph hbox y, over(group)
ggplot2::ggplot(data, ggplot2::aes(y, group)) + ggplot2::geom_boxplot()
ggplot2
绘制水平箱线图
与 Stata 有差异: 若要求数值一致,应核对箱线图的分位点和须线默认规则。
Stata 参考 · R 参考
heatplot z y x
ggplot2::ggplot(data, ggplot2::aes(x, y, z = z)) + ggplot2::stat_summary_2d(fun = mean)
ggplot2
按 x、y 分箱绘制 z 均值的热图
与 Stata 有差异: 社区命令。两者都在单元格内计算 z 的均值,但分箱数量及边界不同;比较时请明确设定分箱(Stata 的 bins(),R 的 bins =)。配色采用各自默认设置。
Stata 参考 · R 参考
heatplot z i.y i.x
ggplot2::ggplot(stats::aggregate(z ~ x + y, data = data, FUN = mean), ggplot2::aes(factor(x), factor(y), fill = z)) + ggplot2::geom_tile()
ggplot2
按 x、y 类别绘制 z 均值的热图
与 Stata 有差异: 社区命令。每个出现过的 x、y 组合对应一个方块,填充 z 的均值;两者都不绘制空组合。
Stata 参考 · R 参考
histogram x
ggplot(data, aes(x)) + geom_histogram()
ggplot2
直方图
与 Stata 有差异: geom_histogram() 默认计数和 30 箱;Stata histogram 默认密度,分箱规则也不同。须指定切点或箱宽及纵轴统计量。
Stata 参考 · R 参考
histogram y, by(group)
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_histogram(bins = 10) + ggplot2::facet_wrap(~group)
ggplot2
按组比较直方图
与 Stata 有差异: 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
Stata 参考 · R 参考
histogram y, density
ggplot2::ggplot(data, ggplot2::aes(y, ggplot2::after_stat(density))) + ggplot2::geom_histogram(bins = 10)
ggplot2
绘制密度直方图
与 Stata 有差异: 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
Stata 参考 · R 参考
histogram y, frequency
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_histogram(bins = 10)
ggplot2
绘制频数直方图
与 Stata 有差异: 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
Stata 参考 · R 参考
histogram y, percent
ggplot2::ggplot(data, ggplot2::aes(y, ggplot2::after_stat(count / sum(count) * 100))) + ggplot2::geom_histogram(bins = 10)
ggplot2
绘制百分比直方图
与 Stata 有差异: 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
Stata 参考 · R 参考
histogram y, width(2) start(0)
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_histogram(binwidth = 2, boundary = 0)
ggplot2
设置直方图组距和边界
与 Stata 有差异: 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
Stata 参考 · R 参考
histogram z, discrete
ggplot2::ggplot(data, ggplot2::aes(z)) + ggplot2::geom_histogram(binwidth = 1, boundary = 0.5)
ggplot2
为整数取值绘制直方图
与 Stata 有差异: 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
Stata 参考 · R 参考
kdensity x
ggplot(data, aes(x)) + geom_density()
ggplot2
核密度图
与 Stata 有差异: 核密度默认带宽规则不同;比较曲线前须指定核函数、带宽和计算范围。
Stata 参考 · R 参考
kdensity y
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_density()
ggplot2
绘制核密度估计
与 Stata 有差异: R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
Stata 参考 · R 参考
kdensity y if group == "A"
ggplot2::ggplot(subset(data, group == "A"), ggplot2::aes(y)) + ggplot2::geom_density()
ggplot2
估计子组核密度
与 Stata 有差异: R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
Stata 参考 · R 参考
kdensity y, bwidth(1)
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_density(bw = 1)
ggplot2
指定核密度带宽
与 Stata 有差异: R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
Stata 参考 · R 参考
kdensity y, kernel(gaussian)
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_density(kernel = "gaussian")
ggplot2
使用高斯核进行密度估计
与 Stata 有差异: R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
Stata 参考 · R 参考
line y x
ggplot(data, aes(x, y)) + geom_line()
ggplot2
折线图
与 Stata 有差异: geom_line() 在组内按 x 排序;Stata line/connected 未指定 sort 时按观测顺序连接。
Stata 参考 · R 参考
line y x, sort
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_line()
ggplot2
按横轴顺序绘制折线图
与 Stata 有差异: 对应所示坐标轴及图层;ggplot的折线按x排序,此处Stata使用sort。主题、坐标轴留白、缺失点警告和分面尺度采用R默认设置。
Stata 参考 · R 参考
line y x, sort by(group)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_line() + ggplot2::facet_wrap(~group)
ggplot2
按组分面绘制折线图
与 Stata 有差异: 对应所示坐标轴及图层;ggplot的折线按x排序,此处Stata使用sort。主题、坐标轴留白、缺失点警告和分面尺度采用R默认设置。
Stata 参考 · R 参考
line y x, sort lcolor(red)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_line(colour = "red")
ggplot2
设置折线颜色
与 Stata 有差异: 对应所示坐标轴及图层;ggplot的折线按x排序,此处Stata使用sort。主题、坐标轴留白、缺失点警告和分面尺度采用R默认设置。
Stata 参考 · R 参考
lowess y x
ggplot(data, aes(x, y)) + geom_point() + geom_smooth(method = "loess")
ggplot2
平滑散点图
与 Stata 有差异: LOESS 局部多项式与 Stata LOWESS 平滑、稳健迭代和默认带宽不同;拟合曲线不保证一致。
Stata 参考 · R 参考
lowess y x, bwidth(0.5)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_smooth(method = "loess", formula = y ~ x, span = 0.5, se = FALSE)
ggplot2
绘制局部回归平滑曲线
与 Stata 有差异: R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
Stata 参考 · R 参考
pchi y, df(2)
graphics::plot(ppoints(length(data$y)), pchisq(sort(data$y), df = 2))
graphics
比较经验概率与卡方概率
与 Stata 有差异: 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
Stata 参考 · R 参考
pnorm y
graphics::plot(ppoints(length(data$y)), pnorm(as.numeric(scale(sort(data$y)))), xlab = "Empirical", ylab = "Normal")
graphics
检视标准化正态 P-P 关系
与 Stata 有差异: 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
Stata 参考 · R 参考
qchi y, df(2)
graphics::plot(qchisq(ppoints(length(data$y)), df = 2), sort(data$y))
graphics
比较样本分位数与卡方分位数
与 Stata 有差异: 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
Stata 参考 · R 参考
qnorm x
ggplot(data, aes(sample = x)) + geom_qq() + geom_qq_line()
ggplot2
正态分位数图
与 Stata 有差异: geom_qq() 默认理论标准正态分位数;qnorm 按样本均值和标准差缩放正态轴。比较点位须匹配轴尺度。
Stata 参考 · R 参考
qqplot y x
stats::qqplot(data$x, data$y)
stats
使用 Q-Q 图比较两个经验分布
与 Stata 有差异: 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
Stata 参考 · R 参考
quantile y
graphics::plot(ppoints(sum(!is.na(data$y))), sort(data$y), xlab = "Fraction", ylab = "y")
graphics
绘制有序观测与累计比例的关系
与 Stata 有差异: 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
Stata 参考 · R 参考
scatter y x
ggplot(data, aes(x, y)) + geom_point()
ggplot2
散点图
Stata 参考 · R 参考
scatter y x, mlabel(name)
ggplot(data, aes(x, y, label = name)) + geom_point() + geom_text()
ggplot2
给点加标签
Stata 参考 · R 参考
scatter y x, xline(0)
ggplot(data, aes(x, y)) + geom_point() + geom_vline(xintercept = 0)
ggplot2
添加参考线
geom_hline(yintercept = 0) 相当于 yline()。
Stata 参考 · R 参考
scatter y x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point()
ggplot2
使用 ggplot2 绘制散点图
与 Stata 有差异: 对应所示坐标轴及图层;ggplot的折线按x排序,此处Stata使用sort。主题、坐标轴留白、缺失点警告和分面尺度采用R默认设置。
Stata 参考 · R 参考
scatter y x, aspectratio(1)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::theme(aspect.ratio = 1)
ggplot2
将绘图区设为正方形
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, by(group)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::facet_wrap(~group)
ggplot2
按组分面绘制散点图
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, jitter(2)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_jitter(width = 0.2, height = 0.2)
ggplot2
对重叠观测添加随机扰动
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, legend(off)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(ggplot2::aes(colour = group)) + ggplot2::theme(legend.position = "none")
ggplot2
隐藏图例
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, mcolor(red)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(colour = "red")
ggplot2
设置散点颜色
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, mlabel(label)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_text(ggplot2::aes(label = label))
ggplot2
使用变量给散点添加标签
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, msize(large)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(size = 3)
ggplot2
增大散点尺寸
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, msymbol(Oh)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(shape = 1)
ggplot2
绘制空心圆散点
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, note("Source: survey")
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(caption = "Source: survey")
ggplot2
添加图形来源说明
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, scheme(s2mono)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::theme_bw()
ggplot2
使用适合黑白输出的主题
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, subtitle("Wave 1")
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(subtitle = "Wave 1")
ggplot2
添加图形副标题
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, title("Sample")
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(title = "Sample")
ggplot2
添加图形标题
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, xlabel(0(5)30)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::scale_x_continuous(breaks = seq(0, 30, 5))
ggplot2
设置横轴刻度
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, xline(10)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::geom_vline(xintercept = 10)
ggplot2
添加垂直参考线
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, xscale(log)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::scale_x_log10()
ggplot2
使用对数横轴
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, xtitle("Age")
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(x = "Age")
ggplot2
设置横轴标题
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, ylabel(0(5)20)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::scale_y_continuous(breaks = seq(0, 20, 5))
ggplot2
设置纵轴刻度
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, yline(5)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::geom_hline(yintercept = 5)
ggplot2
添加水平参考线
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, yscale(log)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::scale_y_log10()
ggplot2
使用对数纵轴
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
scatter y x, ytitle("Income")
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(y = "Income")
ggplot2
设置纵轴标题
与 Stata 有差异: 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
Stata 参考 · R 参考
serrbar y se x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_errorbar(ggplot2::aes(ymin = y - se, ymax = y + se)) + ggplot2::geom_point()
ggplot2
绘制已有估计值及标准误
与 Stata 有差异: 此处 se 为已有的标准误变量,Stata serrbar 默认显示一个标准误的范围;请按实际数据修改变量名。
Stata 参考 · R 参考
set scheme s1mono
theme_set(theme_bw())
ggplot2
改变所有图形的样式
Stata 参考 · R 参考
spikeplot z
{ counts <- as.data.frame(table(data$z)); graphics::plot(as.numeric(as.character(counts$Var1)), counts$Freq, type = "h") }
graphics
使用针状线表示各个取值的频数
与 Stata 有差异: 为每个观测取值按频数绘制竖线。坐标刻度、线宽、缺失处理和图形设备样式不同于Stata的spikeplot。
Stata 参考 · R 参考
symplot y
{ values <- sort(data$y); half <- length(values) %/% 2L; centre <- median(values); graphics::plot(centre - rev(head(values, half)), tail(values, half) - centre) }
graphics
检查样本中位数两侧的对称性
与 Stata 有差异: 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
Stata 参考 · R 参考
twoway (scatter y x) (lfit y x)
ggplot(data, aes(x, y)) + geom_point() + geom_smooth(method = "lm")
ggplot2
散点图加拟合线
与 Stata 有差异: geom_smooth(method = "lm") 默认添加置信带,而 lfit 不含置信带。匹配图层须设 se = FALSE。
Stata 参考 · R 参考
twoway area y x
ggplot(data, aes(x, y)) + geom_area()
ggplot2
面积图
Stata 参考 · R 参考
twoway connected y x
ggplot(data, aes(x, y)) + geom_line() + geom_point()
ggplot2
带标记点的折线图
与 Stata 有差异: geom_line() 在组内按 x 排序;Stata line/connected 未指定 sort 时按观测顺序连接。
Stata 参考 · R 参考
twoway rarea hi lo x
ggplot(data, aes(x, ymin = lo, ymax = hi)) + geom_ribbon()
ggplot2
区间阴影图
Stata 参考 · R 参考
twoway rcap hi lo x
ggplot(data, aes(x, ymin = lo, ymax = hi)) + geom_errorbar()
ggplot2
带端帽的区间图
Stata 参考 · R 参考
twoway (scatter y x if g == 1) (scatter y x if g == 2)
ggplot(data, aes(x, y, colour = factor(g))) + geom_point()
ggplot2
按组用不同颜色绘制
Stata 参考 · R 参考
twoway lfitci y x
ggplot(data, aes(x, y)) + geom_smooth(method = "lm")
ggplot2
带置信带的线性拟合
Stata 参考 · R 参考
twoway qfit y x
ggplot(data, aes(x, y)) + geom_smooth(method = "lm", formula = y ~ poly(x, 2), se = FALSE)
ggplot2
二次拟合曲线
Stata 参考 · R 参考
twoway scatter y x, by(group)
ggplot(data, aes(x, y)) + geom_point() + facet_wrap(~group)
ggplot2
按组分面
Stata 参考 · R 参考
twoway (scatter y x) (lfit y x)
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::geom_smooth(method = "lm", formula = y ~ x, se = FALSE)
ggplot2
叠加线性拟合关系
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway area y x, sort
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_area()
ggplot2
填充折线下方区域
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway connected y x, sort
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_line() + ggplot2::geom_point()
ggplot2
按横轴顺序连接散点
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway contour y x z
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_contour(ggplot2::aes(z = z))
ggplot2
在规则网格上绘制等高线
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway dropline y x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_segment(ggplot2::aes(xend = x, yend = 0)) + ggplot2::geom_point()
ggplot2
绘制带垂线的散点
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway lfitci y x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_smooth(method = "lm", formula = y ~ x, level = 0.95)
ggplot2
绘制线性拟合及置信区间
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway pcarrow y x hi z
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_segment(ggplot2::aes(xend = z, yend = hi), arrow = grid::arrow())
ggplot2
在成对坐标间绘制箭头
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway pcspike y x hi z
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_segment(ggplot2::aes(xend = z, yend = hi))
ggplot2
连接成对坐标端点
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway qfitci y x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_smooth(method = "lm", formula = y ~ poly(x, 2), level = 0.95)
ggplot2
绘制二次拟合及置信区间
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway rarea lo hi x, sort
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_ribbon(ggplot2::aes(ymin = lo, ymax = hi))
ggplot2
绘制阴影不确定性带
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway rbar lo hi x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_rect(ggplot2::aes(xmin = x - 0.4, xmax = x + 0.4, ymin = lo, ymax = hi))
ggplot2
绘制上下限之间的区间条
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway rcap lo hi x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_errorbar(ggplot2::aes(ymin = lo, ymax = hi))
ggplot2
绘制带端帽的不确定性区间
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway rscatter lo hi x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(ggplot2::aes(y = lo)) + ggplot2::geom_point(ggplot2::aes(y = hi))
ggplot2
绘制区间的两个端点
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway rspike lo hi x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_linerange(ggplot2::aes(ymin = lo, ymax = hi))
ggplot2
使用垂直线表示区间
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway scatter y x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point()
ggplot2
绘制双变量散点图
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
twoway spike y x
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_segment(ggplot2::aes(xend = x, yend = 0))
ggplot2
绘制从零起始的垂直针状线
与 Stata 有差异: 这是相应的作图工作流程,默认的图形设置可能不同。
Stata 参考 · R 参考
vioplot y, over(group)
ggplot(data, aes(group, y)) + geom_violin()
ggplot2
小提琴图
Stata 参考 · R 参考

编程工具

Stata R 用途、差异及来源
about
utils::sessionInfo()
utils
查看 R 版本与平台信息
报告 R 会话元数据;Stata 许可证与序列号没有 R 对应项。
Stata 参考 · R 参考
adopath
.libPaths()
base
查看 R 包库搜索路径
R 包库代替 ado 搜索文件夹;此例仅读取当前路径。
Stata 参考 · R 参考
program define addtwo
args a b
display `a'+`b'
end
addtwo <- function(a,b) a+b
base
在函数中接收两个位置参数
R 函数参数代替 Stata 位置宏;本例为固定程序。
Stata 参考 · R 参考
forvalues i=1/4 {
    if `i'==2 continue
    display `i'
}
out <- integer(); for (i in 1:4) { if(i==2) next; out <- c(out,i) }
base
跳过某次循环的剩余步骤
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
forvalues i=1/4 {
    if `i'==3 continue, break
    display `i'
}
out <- integer(); for (i in 1:4) { if(i==3) break; out <- c(out,i) }
base
提前退出循环
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
creturn list
list(version=R.version.string,platform=R.version$platform,working_directory=getwd(),machine=.Machine)
base
查看 R 版本、平台、路径与数值限制
返回 R 自身设置与常量,而非 Stata c 类值。
Stata 参考 · R 参考
dataex id x in 1/3
example <- data[1:3,c('id','x')]; text <- utils::capture.output(dput(example))
base
为小型数据示例生成可复现 R 代码
dput 输出 R 重建代码,不是 Stata input 代码或论坛标记。只分享已获准公开的数据。
Stata 参考 · R 参考
error 198
fail <- function() stop('Invalid input',call.=FALSE)
base
在函数中抛出明确错误
R 条件对象代替 Stata 数字返回码;检查捕获本例故意抛出的错误。
Stata 参考 · R 参考
program define positive
args x
if `x'<=0 exit
display `x'
end
positive <- function(x) { if(x<=0) return(invisible(NULL)); x }
base
提前从函数返回
仅从函数返回;退出 R 进程会终止用户会话。
Stata 参考 · R 参考
ftools, version
list(version=as.character(utils::packageVersion('dplyr')),available=requireNamespace('dplyr',quietly=TRUE))
utils
查看 R 数据操作包版本与可用性
报告所选 R 流程依赖 dplyr;不检查或编译 Stata Mata 库。
Stata 参考 · R 参考
gettoken first rest : text
parts <- strsplit(text,' +')[[1]]; first <- parts[1]; rest <- paste(parts[-1],collapse=' ')
base
分离首个简单词元与剩余文本
与 Stata 有差异: 仅用于不带引号的简单空白词元;不复刻 Stata 引号与 bind 规则。
Stata 参考 · R 参考
include helper.do
sys.source(path,envir=environment())
base
在当前求值环境执行辅助代码
本例仅执行受控临时 R 辅助文件;使用 R 语法替代 Stata do 文件。
Stata 参考 · R 参考
mark touse if g == 2
data$touse <- as.integer(!is.na(data$g) & data$g==2)
base
按条件生成纳入样本标记
Stata 参考 · R 参考
markin if g == 2
selected <- which(data$g==2); interval <- range(selected)
base
查找包含所选样本的行区间
仅返回包围行端点;所选行可能不连续,不能直接以整个区间代替筛选。
Stata 参考 · R 参考
markout touse x y
data$touse <- as.integer(data$touse==1 & stats::complete.cases(data[c('x','y')]))
base
所选变量不完整时清除纳入标记
Stata 参考 · R 参考
syntax varlist
marksample touse
touse <- stats::complete.cases(data[vars])
base
按传入列名标记完整观测
R 显式接收列名;不读取 Stata syntax 状态或 if/in 限制。
Stata 参考 · R 参考
matlist X, format(%9.2f)
format(X,nsmall=2,trim=TRUE)
base
格式化显示数值矩阵
与 Stata 有差异: 返回字符矩阵;R 不复制 Stata 边框与方程标题。
Stata 参考 · R 参考
matname X first second, columns(1..2)
colnames(X) <- c('first','second')
base
为矩阵列命名
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
mkmat x y, matrix(X)
X <- as.matrix(data[c('x','y')])
base
从指定数值变量创建矩阵
与 Stata 有差异: X 是固定矩阵对象名;R 行名不一定匹配 Stata 的 r1、r2 标签。
Stata 参考 · R 参考
mkmat x y, matrix(X) nomissing
X <- as.matrix(data[stats::complete.cases(data[c('x','y')]),c('x','y')])
base
排除整行缺失后创建矩阵
Stata 参考 · R 参考
numlist "1(2)9"
values <- seq(1,9,by=2)
base
展开固定步长数值列表
直接构造本例列表;不解析任意 Stata numlist 字符串。
Stata 参考 · R 参考
numlist "5/1"
values <- seq(5,1,by=-1)
base
展开递减连续数值列表
用于所示 Stata 列表的直接 R 序列流程。
Stata 参考 · R 参考
post handle (1) (2.5)
results <- rbind(results,data.frame(id=1L,value=2.5))
base
追加一行结果观测
向 R 累积容器追加;最终文件需另行保存。
Stata 参考 · R 参考
postclose handle
saveRDS(results,path)
base
将累计结果表保存到磁盘
将 R 累积容器最终存为 RDS,而非关闭 Stata postfile 句柄。
Stata 参考 · R 参考
postfile handle id value using results.dta, replace
results <- data.frame(id=integer(),value=double())
base
初始化带列类型的结果容器
R 累积容器流程:先追加行,再单独保存;此步骤不打开磁盘句柄。
Stata 参考 · R 参考
query output
options()[c('width','digits','scipen')]
base
查看当前 R 输出设置
仅读取 R 设置;这些是 R 特有选项,而非 Stata 参数名。
Stata 参考 · R 参考
require ftools
stopifnot(requireNamespace('dplyr',quietly=TRUE))
base
要求 R 流程依赖已安装
检查 R 对应依赖 dplyr;不安装包,Stata 包名也不自动转换。
Stata 参考 · R 参考
require ftools >= 2.48.0
stopifnot(requireNamespace('dplyr',quietly=TRUE),utils::packageVersion('dplyr') >= '1.1.0')
base
要求 R 流程依赖达到最低版本
R 对应包有独立的版本要求;1.1.0 支持本组示例使用的 .by 与 relationship 功能。
Stata 参考 · R 参考
sleep 1
Sys.sleep(0.001)
base
将毫秒转为秒后暂停执行
R Sys.sleep 使用秒;不进行依赖机器速度的计时断言。
Stata 参考 · R 参考
svmat X, names(col)
data <- as.data.frame(X)
base
将矩阵列转为具名变量
与 Stata 有差异: 创建新数据表;合并到已有数据集需显式对齐行或键。
Stata 参考 · R 参考
syntax varname(numeric) [, Scale(real 1)]
scaled_sum <- function(data,var,scale=1) { stopifnot(length(var)==1L,var %in% names(data),is.numeric(data[[var]]),is.numeric(scale),length(scale)==1L); sum(data[[var]],na.rm=TRUE)*scale }
base
验证数值列参数与可选标量
使用 R 形式参数与显式检查;不解析 Stata 命令语法。
Stata 参考 · R 参考
sysdir list
list(home=R.home(),library=R.home('library'),temporary=tempdir())
base
查看 R 安装与临时文件夹
显示 R 文件夹;Stata BASE/PLUS/PERSONAL 文件夹没有一一对应。
Stata 参考 · R 参考
tempfile cache
path <- tempfile(fileext='.rds')
base
生成唯一临时文件路径
与 Stata 有差异: tempfile() 只生成名称而不创建文件;R 不保证函数退出时按 Stata 方式清除每个命名文件。
Stata 参考 · R 参考
tempname total
scalar `total' = 10
local({ total <- 10; total*2 })
base
在局部作用域使用临时标量
使用词法作用域隔离,而非生成唯一 Stata 临时对象名。
Stata 参考 · R 参考
tempvar squared
generate `squared' = x^2
local({ squared <- data$x^2; sum(squared,na.rm=TRUE) })
base
在局部作用域使用临时向量计算
R 局部作用域无需添加临时数据列;不生成 Stata 宏名。
Stata 参考 · R 参考
tokenize "alpha beta" gamma
tokens <- scan(text='"alpha beta" gamma',what=character(),quiet=TRUE)
base
拆分带引号短语与单词
与 Stata 有差异: 演示基本双引号空白分词;Stata 复合引号无自动对应。
Stata 参考 · R 参考
tokenize alpha beta gamma
tokens <- strsplit('alpha beta gamma',' +')[[1]]
base
拆分简单空白分隔词元
与 Stata 有差异: R 返回字符向量而非位置局部宏;带引号词元的解析不同。
Stata 参考 · R 参考
unab vars : income
vars <- names(data)[pmatch('income',names(data),duplicates.ok=FALSE)]; stopifnot(!anyNA(vars))
base
解析无歧义的缩写列名
R 需要显式请求部分匹配;精确匹配优先。
Stata 参考 · R 参考
unab vars : x*
vars <- grep('^x',names(data),value=TRUE)
base
展开列名前缀通配符
处理所示简单前缀通配符;不是完整 Stata varlist 解析器。
Stata 参考 · R 参考
unabcmd gen
full <- match.arg('mea',c('mean','median','sum'))
base
在已知 R 选项中解析唯一缩写
演示显式 R 选项匹配,不是 Stata 命令缩写翻译;Stata gen 对应 generate。
Stata 参考 · R 参考
viewsource mean.ado
body(base::mean.default)
base
查看指定 R 函数的函数体
读取 R 函数体,代替打开 Stata ado 源码编辑器。
Stata 参考 · R 参考

数据管理

Stata R 用途、差异及来源
append using other.dta
data <- dplyr::bind_rows(data,other)
dplyr
追加列集合不同的数据表
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
append using other.dta, keep(x)
data <- dplyr::bind_rows(data,other['x'])
dplyr
仅追加附表所选列
Stata 参考 · R 参考
append using second.dta third.dta, generate(source)
data <- dplyr::bind_rows(list('0'=data,'1'=second,'2'=third),.id='source'); data$source <- as.integer(data$source)
dplyr
追加多个数据集并记录来源
Stata 参考 · R 参考
assertnested id, within(g)
stopifnot(all(vapply(split(data$g,data$id),function(z) length(unique(z))==1L,logical(1))))
base
验证每个编号对应的组属性恒定
Stata 参考 · R 参考
assertnested region district
stopifnot(all(vapply(split(data$region,data$district),function(z) length(unique(z))==1L,logical(1))))
base
验证每个区只属于一个地区
Stata 参考 · R 参考
cf x using other.dta, verbose
which(data$x != other$x | xor(is.na(data$x),is.na(other$x)))
base
定位指定列取值不同的行
此流程仅检查 x;完整逐列报告需对各列进行比较。
Stata 参考 · R 参考
cf x y using other.dta
stopifnot(identical(unname(as.matrix(data[c('x','y')])),unname(as.matrix(other[c('x','y')]))))
base
验证两个数据表指定列的值一致
与 Stata 有差异: 按行序比较已读入的 other 数据表;与 cf 一样忽略元数据。
Stata 参考 · R 参考
clonevar copy = x
data$copy <- data$x
base
复制列及其属性
Stata 参考 · R 参考
codebook x, compact
c(nonmissing=sum(!is.na(data$x)),unique=length(unique(data$x[!is.na(data$x)])),min=min(data$x,na.rm=TRUE),max=max(data$x,na.rm=TRUE))
base
查看非缺失数、不同值数与范围
与 Stata 有差异: 提供数值变量概览的一部分;不复制 Stata 变量标签与格式报告。
Stata 参考 · R 参考
compare x y
c(less=sum(data$x<data$y,na.rm=TRUE),equal=sum(data$x==data$y,na.rm=TRUE),greater=sum(data$x>data$y,na.rm=TRUE),x_missing_only=sum(is.na(data$x)&!is.na(data$y)),both_missing=sum(is.na(data$x)&is.na(data$y)))
base
比较取值大小与缺失模式
与 Stata 有差异: 给出主要比较计数,不复制 Stata 的格式化差值摘要。
Stata 参考 · R 参考
compare x y if g == 1
with(subset(data,g==1),table(sign(x-y),useNA='ifany'))
base
比较指定子样本中的取值大小
与 Stata 有差异: 仅返回大小关系计数;差值幅度需另行汇总。
Stata 参考 · R 参考
compress x
stopifnot(all(is.na(data$x) | (data$x==trunc(data$x) & abs(data$x)<=.Machine$integer.max))); data$x <- as.integer(data$x)
base
将安全范围内整值改存 R 整数
仅手动优化整值存储。R 无 Stata 的 byte/int 存储类型或通用 compress 对应命令。
Stata 参考 · R 参考
count if !missing(x, y)
sum(stats::complete.cases(data[c('x','y')]))
base
统计指定列均完整的行数
Stata 参考 · R 参考
count if missing(x)
sum(is.na(data$x))
base
统计缺失值数
Stata 参考 · R 参考
count if x > 2 & x < .
sum(data$x > 2,na.rm=TRUE)
base
统计超过阈值的非缺失值数
Stata 参考 · R 参考
count in 2/5
nrow(data[2:5,,drop=FALSE])
base
统计指定行区间的行数
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
cross using other.dta
data <- dplyr::cross_join(data,other)
dplyr
创建两个数据集的笛卡尔积
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
cumul x, generate(c)
data$c <- dplyr::row_number(data$x) / sum(!is.na(data$x))
dplyr
生成变量的经验累积分布
与 Stata 有差异: 缺失值仍为缺失,且不计入分母。Stata 默认对相同取值按任意顺序赋予不同的累积值,R 按行顺序处理相同取值。权重及 by() 需另行按组或加权计算。
Stata 参考 · R 参考
cumul x, generate(c) equal
data$c <- dplyr::cume_dist(data$x)
dplyr
相同取值共享累积值的经验累积分布
相同取值共享最大的累积比例,与 ecdf(x)(x) 相同;缺失值仍为缺失。
Stata 参考 · R 参考
datasignature confirm
stopifnot(identical(signature,serialize(data,NULL,version=2)))
base
验证数据匹配已保存的 R 签名
R 特有的字节比较;不兼容 Stata 的 .dtasig 文件。
Stata 参考 · R 参考
datasignature set
signature <- serialize(data,NULL,version=2)
base
保存 R 序列化结果供后续比较
保存 R 特有的序列化快照;不使用 Stata 校验算法,且包含 R 元数据。
Stata 参考 · R 参考
describe x y
vapply(data[c('x','y')],typeof,character(1))
base
查看所选列的存储类型
Stata 参考 · R 参考
describe, short
c(observations=nrow(data),variables=ncol(data))
base
简洁查看数据维度
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
destring s, generate(x)
data$x <- as.numeric(data$s)
base
解析干净的数值字符串
Stata 参考 · R 参考
destring s, generate(x) dpcomma
data$x <- as.numeric(sub(',','.',data$s,fixed=TRUE))
base
解析以逗号为小数点的字段
Stata 参考 · R 参考
destring s, generate(x) ignore(",")
data$x <- as.numeric(gsub(',','',data$s,fixed=TRUE))
base
解析带千位逗号的数值
Stata 参考 · R 参考
destring s, generate(x) percent
data$x <- as.numeric(sub('%$','',data$s))/100
base
将百分比文本转换为比例
Stata 参考 · R 参考
drop if g == 2
data <- data[data$g != 2, , drop=FALSE]
base
删除一个类别的行
Stata 参考 · R 参考
drop if missing(x)
data <- data[!is.na(data$x), , drop=FALSE]
base
删除指定值缺失的行
Stata 参考 · R 参考
drop if missing(x, y)
data <- tidyr::drop_na(data, x, y)
tidyr
删除指定列中存在缺失的行
Stata 参考 · R 参考
drop if x <= 2
data <- dplyr::filter(data, is.na(x) | x > 2)
dplyr
删除低值并保留缺失行
与 Stata 有差异: Stata 数值缺失大于有限值;显式 is.na 分支保留这些行。
Stata 参考 · R 参考
drop in 2/4
data <- data[-(2:4), , drop=FALSE]
base
按位置删除连续行
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
drop s y
data <- data[setdiff(names(data),c('s','y'))]
base
删除指定列
Stata 参考 · R 参考
ds id g, not
setdiff(names(data),c('id','g'))
base
查找排除列表以外的列名
Stata 参考 · R 参考
ds, has(type numeric)
names(data)[vapply(data,is.numeric,logical(1))]
base
查找数值列名
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
ds, has(type string)
names(data)[vapply(data,is.character,logical(1))]
base
查找字符列名
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
duplicates drop id, force
data <- data[!duplicated(data$id),,drop=FALSE]
base
每个重复键仅保留首条观测
Stata 参考 · R 参考
duplicates list id
data[duplicated(data$id)|duplicated(data$id,fromLast=TRUE),,drop=FALSE]
base
查看重复键的全部组成员
Stata 参考 · R 参考
duplicates report id
counts <- as.integer(table(data$id)); data.frame(copies=sort(unique(counts)),observations=vapply(sort(unique(counts)),function(k) sum(counts[counts==k]),integer(1)),surplus=vapply(sort(unique(counts)),function(k) sum(counts==k)*(k-1L),integer(1)))
base
汇总重复次数、观测数与重复盈余
Stata 参考 · R 参考
duplicates tag id, generate(dup)
data <- dplyr::mutate(data,dup=dplyr::n()-1L,.by=id)
dplyr
用重复盈余数标记每个组成员
Stata 参考 · R 参考
bysort g: egen z = mean(x)
data <- dplyr::mutate(data,z=mean(x,na.rm=TRUE),.by=g)
dplyr
保留行数并添加组均值
Stata 参考 · R 参考
bysort g: egen z = total(x)
data <- dplyr::mutate(data,z=sum(x,na.rm=TRUE),.by=g)
dplyr
保留行数并添加组总和
Stata 参考 · R 参考
egen z = anycount(x y), values(2 4)
data$z <- rowSums(cbind(data$x %in% c(2,4),data$y %in% c(2,4)))
base
逐行统计多列中指定值出现次数
Stata 参考 · R 参考
egen z = anymatch(x y), values(2 4)
data$z <- as.integer(data$x %in% c(2,4) | data$y %in% c(2,4))
base
逐行标记多列是否含指定值
Stata 参考 · R 参考
egen z = concat(g s), punct("-")
data$z <- paste(data$g,ifelse(is.na(data$s),'',data$s),sep='-')
base
拼接数值列与字符串列
与 Stata 有差异: 将 R 的 NA 字符串视为 Stata 空串;本例使用简单十进制数值格式。
Stata 参考 · R 参考
egen z = count(x)
data$z <- sum(!is.na(data$x))
base
在一列中重复非缺失计数
Stata 参考 · R 参考
egen z = cut(x), at(0,3,7)
data$z <- as.numeric(as.character(cut(data$x,breaks=c(0,3,7),right=FALSE,labels=c(0,3))))
base
分箱并用左端点标记箱
Stata 参考 · R 参考
egen z = diff(x y)
data$z <- as.integer(!(data$x==data$y | (is.na(data$x)&is.na(data$y)))); data$z[xor(is.na(data$x),is.na(data$y))] <- 1L
base
标记两列是否不同
与 Stata 有差异: 显式处理普通缺失;Stata 扩展缺失类别需单独比较。
Stata 参考 · R 参考
egen z = firstnm(x)
data$z <- data$x[which(!is.na(data$x))[1]]
base
生成首个非缺失值常量列
Stata 参考 · R 参考
egen z = group(g s)
data$z <- as.integer(interaction(data$g,data$s,drop=TRUE,lex.order=TRUE)); data$z[is.na(data$s) | data$s==''] <- NA_integer_
base
为多个分组键组合编码
与 Stata 有差异: 组合编号用于识别组;具体数值编码与字符串排序可能不同于 Stata。
Stata 参考 · R 参考
egen z = iqr(x)
data$z <- diff(stats::quantile(data$x,c(.25,.75),na.rm=TRUE,type=2))
base
生成四分位距常量列
与 Stata 有差异: 使用 R 的 type 2 分位数以对应 Stata 默认经验百分位规则。
Stata 参考 · R 参考
egen z = lastnm(x)
data$z <- utils::tail(c(NA_real_, data$x[!is.na(data$x)]), 1)
base
生成最后一个非缺失值常量列
Stata 参考 · R 参考
egen z = max(x)
data$z <- if (all(is.na(data$x))) NA_real_ else max(data$x, na.rm=TRUE)
base
在一列中重复最大值
Stata 参考 · R 参考
egen z = mean(x)
data$z <- mean(data$x,na.rm=TRUE)
base
在一列中重复均值
Stata 参考 · R 参考
egen z = median(x)
data$z <- stats::median(data$x,na.rm=TRUE)
base
在一列中重复中位数
Stata 参考 · R 参考
egen z = min(x)
data$z <- if (all(is.na(data$x))) NA_real_ else min(data$x, na.rm=TRUE)
base
在一列中重复最小值
Stata 参考 · R 参考
egen z = pc(x)
data$z <- 100*data$x/sum(data$x,na.rm=TRUE)
base
将取值转换为列总和的百分比
要求非缺失值总和非零;这是份额计算,不是调查估计。
Stata 参考 · R 参考
egen z = pctile(x), p(25)
data$z <- as.numeric(stats::quantile(data$x,.25,na.rm=TRUE,type=2))
base
生成指定经验百分位常量列
与 Stata 有差异: 使用 R 的 type 2 分位数以对应 Stata 默认经验百分位规则。
Stata 参考 · R 参考
egen z = rank(x)
data$z <- rank(data$x,na.last='keep',ties.method='average')
base
对非缺失值排序并对并列取平均秩
Stata 参考 · R 参考
egen z = rank(x), field
data$z <- rank(-data$x,na.last='keep',ties.method='min')
base
最高值排首且并列使用竞赛秩
Stata 参考 · R 参考
egen z = rowmax(x y)
data$z <- pmax(data$x,data$y,na.rm=TRUE)
base
逐行取可用最大值
Stata 参考 · R 参考
egen z = rowmean(x y)
data$z <- rowMeans(data[c('x','y')],na.rm=TRUE); data$z[is.nan(data$z)] <- NA_real_
base
对多列可用值逐行求均值
Stata 参考 · R 参考
egen z = rowmin(x y)
data$z <- pmin(data$x,data$y,na.rm=TRUE)
base
逐行取可用最小值
Stata 参考 · R 参考
egen z = rowmiss(x y)
data$z <- rowSums(is.na(data[c('x','y')]))
base
逐行统计缺失单元数
Stata 参考 · R 参考
egen z = rownonmiss(x y)
data$z <- rowSums(!is.na(data[c('x','y')]))
base
逐行统计非缺失单元数
Stata 参考 · R 参考
egen z = rowtotal(x y)
data$z <- rowSums(data[c('x','y')],na.rm=TRUE)
base
对多列的可用值逐行求和
Stata 参考 · R 参考
egen z = rowtotal(x y), missing
data$z <- rowSums(data[c('x','y')],na.rm=TRUE); data$z[rowSums(!is.na(data[c('x','y')]))==0] <- NA_real_
base
整行均缺失时行和返回缺失
Stata 参考 · R 参考
egen z = sd(x)
data$z <- stats::sd(data$x,na.rm=TRUE)
base
在一列中重复样本标准差
Stata 参考 · R 参考
egen z = std(x)
data$z <- as.numeric(scale(data$x))
base
使用样本标准差标准化
Stata 参考 · R 参考
egen z = tag(g)
data$z <- as.integer(!is.na(data$g) & !duplicated(data$g))
base
标记每组的首个非缺失观测
Stata 参考 · R 参考
egen z = total(x)
data$z <- sum(data$x,na.rm=TRUE)
base
在一列中重复总和
Stata 参考 · R 参考
expandcl 2, cluster(g) generate(newg)
parts <- split(data,data$g); data <- do.call(rbind,lapply(seq_along(parts),function(k) do.call(rbind,lapply(1:2,function(j) transform(parts[[k]],newg=(k-1L)*2L+j)))))
base
复制完整组并赋予新的组编号
与 Stata 有差异: 验证组成员与复制次数;新编号具体取值及顺序可能不同于 Stata。
Stata 参考 · R 参考
fcollapse (mean) z=x, by(g)
data <- dplyr::summarise(data,z=mean(x,na.rm=TRUE),.by=g)
dplyr
使用 ftools 公共辅助命令汇总均值
Stata 参考 · R 参考
fcollapse (mean) z=x, by(g) merge
data <- dplyr::mutate(data,z=mean(x,na.rm=TRUE),.by=g)
dplyr
将 fcollapse 组汇总值附回原始行
Stata 参考 · R 参考
fcollapse (nansum) z=x, by(g)
data <- dplyr::summarise(data,z=if(all(is.na(x))) NA_real_ else sum(x,na.rm=TRUE),.by=g)
dplyr
组内全缺失时保留缺失总和
Stata 参考 · R 参考
fillin g h
data <- tidyr::complete(data,g,h)
tidyr
补全缺失的类别键组合
与 Stata 有差异: 返回补全表但不带 Stata _fillin 标记;因子水平可能添加未使用的 R 类别。
Stata 参考 · R 参考
fillin g h
data$`_fillin` <- 0L; data <- tidyr::complete(data,g,h,fill=list(`_fillin`=1L))
tidyr
标记类别补全时新插入的行
Stata 参考 · R 参考
flevelsof g, local(groups)
groups <- sort(unique(data$g[!is.na(data$g)]))
base
通过 ftools 类别辅助命令保存非缺失类别
Stata 参考 · R 参考
fmerge 1:1 id using other.dta, nogenerate
data <- dplyr::full_join(data,other,by='id',relationship='one-to-one')
dplyr
执行已验证的 ftools 风格一对一合并
除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
fralias add score, from(link)
get_score <- function() lookup$score[match(data$id,lookup$id)]
base
动态读取链接值而不保存复制列
R 访问函数流程,不是别名列:每次调用 get_score();修改应在 lookup 中进行。
Stata 参考 · R 参考
frget newscore=score, from(link)
data$newscore <- lookup$score[data$link]
base
复制链接值时重命名
这是复制取值的流程;不携带 Stata 框架链接与元数据。
Stata 参考 · R 参考
frget score, from(link)
data$score <- lookup$score[data$link]
base
通过已有表链接复制数值
与 Stata 有差异: 通过预先计算的链接复制值;Stata 显示格式与元数据在 R 中需显式复制。
Stata 参考 · R 参考
frlink 1:1 id, frame(lookup)
stopifnot(!anyDuplicated(data$id),!anyDuplicated(lookup$id)); link <- match(data$id,lookup$id)
base
验证并创建一对一数据表链接
link 是本例固定 R 对象名;未匹配键产生 NA。源表改变后需重建。
Stata 参考 · R 参考
frlink m:1 id, frame(lookup) generate(link)
stopifnot(!anyDuplicated(lookup$id)); data$link <- match(data$id,lookup$id)
base
创建指向查找表的多对一行链接
R match 行号是快照;查找表行序改变后须重新创建。
Stata 参考 · R 参考
frunalias score
data$score <- lookup$score[match(data$id, lookup$id)]
base
将动态查找值实体化为列
将查询结果保存为普通 R 列快照。需要 data 和 lookup 两张表,具有匹配的 id 键及 lookup 中的 score 列;后续修改 lookup 不会改变该列。
Stata 参考 · R 参考
gcollapse (mean) z=x, by(g)
data <- dplyr::summarise(data,z=mean(x,na.rm=TRUE),.by=g)
dplyr
按 gcollapse 流程汇总组均值
Stata 参考 · R 参考
gcollapse (mean) z=x, by(g) freq(n)
data <- dplyr::summarise(data,z=mean(x,na.rm=TRUE),n=dplyr::n(),.by=g)
dplyr
在汇总均值旁保留组原始行数
Stata 参考 · R 参考
gcollapse (mean) z=x, by(g) merge
data <- dplyr::mutate(data,z=mean(x,na.rm=TRUE),.by=g)
dplyr
将汇总组均值附回全部原始行
Stata 参考 · R 参考
gcollapse (nmissing) n=x, by(g)
data <- dplyr::summarise(data,n=sum(is.na(x)),.by=g)
dplyr
汇总各组缺失值数
Stata 参考 · R 参考
gcollapse (nunique) n=x, by(g)
data <- dplyr::summarise(data,n=dplyr::n_distinct(x,na.rm=TRUE),.by=g)
dplyr
在完整数据中汇总各组不同值数
与 Stata 有差异: 本例取值完整;不声称缺失类别的处理一致。
Stata 参考 · R 参考
gcontract g h, freq(n)
data <- dplyr::count(data,g,h,name='n')
dplyr
统计联合观测类别组合数
Stata 参考 · R 参考
gcontract g, freq(n) percent(p)
data <- dplyr::count(data,g,name='n'); data$p <- 100*data$n/sum(data$n)
dplyr
使用 gcontract 创建类别频数与百分比
Stata 参考 · R 参考
gdistinct g h
vapply(data[c('g','h')],function(z) length(unique(z[!is.na(z)])),integer(1))
base
分别统计多列不同值数
Stata 参考 · R 参考
gdistinct g h, joint
nrow(unique(data[stats::complete.cases(data[c('g','h')]),c('g','h')]))
base
联合统计完整组合的不同值数
Stata 参考 · R 参考
gduplicates drop g h, force
data <- data[!duplicated(data[c('g','h')]),,drop=FALSE]
base
每个复合键仅保留首行
Stata 参考 · R 参考
gduplicates tag g h, generate(dup)
data <- dplyr::mutate(data,dup=dplyr::n()-1L,.by=c(g,h))
dplyr
标记复合键的所有重复观测
Stata 参考 · R 参考
gegen groupid = group(g h)
data$groupid <- as.integer(interaction(data$g,data$h,drop=TRUE,lex.order=TRUE))
base
为完整分组键组合创建编号
与 Stata 有差异: 仅使用完整数值键;示例编号顺序按所示键的字典序排列。
Stata 参考 · R 参考
gegen tag = tag(g)
data$tag <- as.integer(!is.na(data$g)&!duplicated(data$g))
base
标记各非缺失组的一条观测
Stata 参考 · R 参考
gegen z = mean(x), by(g)
data <- dplyr::mutate(data,z=mean(x,na.rm=TRUE),.by=g)
dplyr
通过 gegen 风格流程添加组均值
Stata 参考 · R 参考
bysort g (id): generate row = _n
data <- dplyr::arrange(data,g,id); data <- dplyr::mutate(data,row=dplyr::row_number(),.by=g)
dplyr
在排序组内生成行号
Stata 参考 · R 参考
bysort g (id): generate total = sum(x)
data <- dplyr::arrange(data,g,id); data <- dplyr::mutate(data,total=cumsum(replace(x,is.na(x),0)),.by=g)
dplyr
在组内计算累计和
Stata 参考 · R 参考
bysort g: generate n = _N
data <- dplyr::mutate(data,n=dplyr::n(),.by=g)
dplyr
添加组内行数
Stata 参考 · R 参考
bysort id (year): generate first = _n == 1
{ data <- dplyr::arrange(data, id, year); dplyr::mutate(data, first = as.integer(dplyr::row_number() == 1L), .by = id) }
dplyr
标记排序后各组的首个观测
与 Stata 有差异: 先按id和year排序,再在每个id中标记首行,包括id缺失组。R按输入顺序处理相同year;如需跨软件可复现的选择,应加入打破并列的变量。
Stata 参考 · R 参考
generate byte high = x > 3 if x < .
data$high <- ifelse(is.na(data$x),NA_integer_,as.integer(data$x > 3))
base
生成保留缺失值的二元指标
Stata 参考 · R 参考
generate byte observed = !missing(x)
data$observed <- as.integer(!is.na(data$x))
base
生成非缺失指示变量
Stata 参考 · R 参考
generate cumulative = sum(x)
data$cumulative <- cumsum(replace(data$x,is.na(data$x),0))
base
生成忽略缺失值的累计和
Stata 的 generate sum() 将缺失贡献视为零,与直接 cumsum() 不同。
Stata 参考 · R 参考
generate double z = x^2
data$z <- data$x^2
base
计算变量平方并保留缺失
Stata 参考 · R 参考
generate n = _N
data$n <- nrow(data)
base
生成总行数常量列
Stata 参考 · R 参考
generate prior = x[_n-1]
data$prior <- dplyr::lag(data$x)
dplyr
按行位置滞后一行
与 Stata 有差异: 按行位置移动;不涉及时间间隔或 tsset 语义。
Stata 参考 · R 参考
generate row = _n
data$row <- seq_len(nrow(data))
base
生成行号
Stata 参考 · R 参考
generate z = x + y
data$z <- data$x + data$y
base
逐行相加并传播缺失
Stata 参考 · R 参考
getmata (x y)=X
data <- as.data.frame(X); names(data) <- c('x','y')
base
将矩阵转换为具名数据列
创建新 R 数据表,代替从独立 Mata 工作区导入;矩阵名 X 固定。
Stata 参考 · R 参考
gisid g h, missok
stopifnot(!anyDuplicated(data[c('g','h')]))
base
验证含普通缺失的复合键唯一性
与 Stata 有差异: 允许普通缺失作为键值;此处未表示 Stata 扩展缺失类别。
Stata 参考 · R 参考
gisid id
stopifnot(!anyNA(data$id),!anyDuplicated(data$id))
base
使用 gisid 验证编号唯一且完整
Stata 参考 · R 参考
glevelsof g h
levels <- unique(data[c('g','h')]); levels <- levels[do.call(order,levels),,drop=FALSE]
base
列出不同的完整多列键
与 Stata 有差异: 返回键表而非空格分隔局部宏;本例键均无缺失。
Stata 参考 · R 参考
glevelsof g, local(levels)
levels <- sort(unique(data$g[!is.na(data$g)]))
base
使用 glevelsof 保存排序后的不同类别
Stata 参考 · R 参考
gquantiles quartile=x, xtile nquantiles(4)
cuts <- stats::quantile(data$x,c(.25,.5,.75),type=2); data$quartile <- as.integer(cut(data$x,breaks=c(-Inf,cuts,Inf),right=TRUE))
base
分配四个经验分位类别
与 Stata 有差异: 使用非加权且互异有限值;显式采用 R type-2 阈值与右闭分箱。并列值可能使组大小不等。
Stata 参考 · R 参考
gquantiles x, _pctile percentiles(25 50 75)
stats::quantile(data$x,c(.25,.5,.75),type=2)
base
返回指定经验百分位阈值
与 Stata 有差异: 显式 R type-2 非加权百分位流程;不声称其他定义或加权结果数值一致。
Stata 参考 · R 参考
greshape gather x1 x2, keys(measure) values(value)
data <- tidyr::pivot_longer(data,c(x1,x2),names_to='measure',values_to='value')
tidyr
使用 greshape 收集明确指定的宽格式列
Stata 参考 · R 参考
greshape long x, by(id) keys(wave) dropmiss
data <- tidyr::pivot_longer(data,c(x1,x2),names_to='wave',names_prefix='x',names_transform=list(wave=as.integer),values_to='x',values_drop_na=TRUE)
tidyr
转换单个前缀时删除缺失测量行
与 Stata 有差异: 固定单前缀流程;多前缀仅在所有转换值均缺失时删除该行。
Stata 参考 · R 参考
greshape spread value, keys(measure)
data <- tidyr::pivot_wider(data,names_from=measure,values_from=value)
tidyr
使用 greshape 将文本键值展开为列
Stata 参考 · R 参考
gsort -x
data <- data[order(-data$x,na.last=FALSE), , drop=FALSE]
base
降序排列并将 Stata 缺失置前
Stata 数值降序时缺失排在最前;因此显式设 na.last=FALSE。
Stata 参考 · R 参考
gsort g -y
data <- dplyr::arrange(data, g, dplyr::desc(y))
dplyr
组别升序且数值降序排序
Stata 参考 · R 参考
gstats winsor x, by(g) cuts(25 75) replace
data <- dplyr::mutate(data,x={b <- stats::quantile(x,c(.25,.75),na.rm=TRUE,type=2); pmax(b[1],pmin(b[2],x))},.by=g)
dplyr
在每组内分别压缩极端值
与 Stata 有差异: 各组使用独立的非加权 R type-2 阈值;全缺失组需显式规定处理方式。
Stata 参考 · R 参考
gstats winsor x, cuts(25 75) generate(z)
bounds <- stats::quantile(data$x,c(.25,.75),na.rm=TRUE,type=2); data$z <- pmax(bounds[1],pmin(bounds[2],data$x))
base
按显式经验四分位数压缩两端极值
与 Stata 有差异: 非加权流程,显式使用 R type-2 经验百分位规则;不声称已完成跨软件数值认证。
Stata 参考 · R 参考
gstats winsor x, cuts(25 75) trim generate(z)
bounds <- stats::quantile(data$x,c(.25,.75),na.rm=TRUE,type=2); data$z <- data$x; data$z[!is.na(data$x) & (data$x<bounds[1] | data$x>bounds[2])] <- NA_real_
base
将经验四分位区间外的值设为缺失
与 Stata 有差异: 截尾将尾部设为缺失并保留行;百分位规则为 R type 2,不声称加权结果一致。
Stata 参考 · R 参考
gtoplevelsof g, ntop(2)
counts <- dplyr::count(data,g,name='n'); counts <- counts[order(-counts$n,counts$g),]; top <- utils::head(counts,2)
dplyr
找出频数最高的两个完整类别
与 Stata 有差异: 仅返回首位类别与计数;不生成 Stata 累计或 Other 行。gtop 为别名,不另计命令。
Stata 参考 · R 参考
gunique g h
nrow(unique(data[c('g','h')]))
base
统计完整行键组合的唯一数
与 Stata 有差异: 本例键完整;与不带 joint 的 gdistinct 不同,gunique 将全部所列列联合处理。
Stata 参考 · R 参考
gunique h, by(g) generate(nunique)
data <- dplyr::mutate(data,nunique=dplyr::n_distinct(h),.by=g)
dplyr
添加各组内不同值数
与 Stata 有差异: 本例分组列与数值列完整;不声称缺失类别处理方式一致。
Stata 参考 · R 参考
hashsort g -x
data <- data[order(data$g,-data$x,method='radix'),,drop=FALSE]
base
按组升序与数值降序稳定排序
与 Stata 有差异: 仅使用完整数值键;R 基数排序对同键保持原顺序。不作速度比较声明。
Stata 参考 · R 参考
insobs 1, after(2)
data <- rbind(data[seq_len(2),,drop=FALSE],data[NA_integer_,,drop=FALSE],data[-seq_len(2),,drop=FALSE])
base
在指定位置后插入缺失行
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
insobs 1, before(3)
data <- rbind(data[1:2,,drop=FALSE],data[NA_integer_,,drop=FALSE],data[3:6,,drop=FALSE])
base
在指定位置前插入缺失行
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
insobs 2
data <- rbind(data,data[rep(NA_integer_,2),,drop=FALSE])
base
追加两行全部缺失的观测
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
inspect x
c(negative=sum(data$x<0,na.rm=TRUE),zero=sum(data$x==0,na.rm=TRUE),positive=sum(data$x>0,na.rm=TRUE),missing=sum(is.na(data$x)))
base
统计负值、零、正值与缺失值
与 Stata 有差异: 仅给出符号与缺失计数;不含 Stata 直方图与整数诊断。
Stata 参考 · R 参考
ipolate y x, generate(z)
data$z <- stats::approx(data$x,data$y,xout=data$x,rule=1)$y
base
保留插值范围之外的边界缺失
Stata 参考 · R 参考
isid g h
stopifnot(!anyNA(data[c('g','h')]),!anyDuplicated(data[c('g','h')]))
base
验证复合键唯一识别各行
Stata 参考 · R 参考
isid id
stopifnot(!anyNA(data$id),!anyDuplicated(data$id))
base
验证键唯一且无缺失
Stata 参考 · R 参考
isid id, missok
stopifnot(!anyDuplicated(data$id))
base
唯一键中允许一个普通缺失值
Stata 参考 · R 参考
joinby g using other.dta
data <- dplyr::inner_join(data,other,by='g',relationship='many-to-many')
dplyr
在各组内形成全部匹配对
Stata 参考 · R 参考
joinby g using other.dta, unmatched(master)
data <- dplyr::left_join(data,other,by='g',relationship='many-to-many')
dplyr
组内配对时保留未匹配主表行
与 Stata 有差异: 返回配对行,不附带 Stata _merge 指示变量。
Stata 参考 · R 参考
keep id x
data <- data[c('id','x')]
base
按指定顺序保留列
Stata 参考 · R 参考
keep if !missing(x, y)
data <- data[stats::complete.cases(data[c('x','y')]), , drop=FALSE]
base
保留指定列均完整的行
Stata 参考 · R 参考
keep if g == 2
data <- dplyr::filter(data, g == 2)
dplyr
用 dplyr 筛选一个类别
Stata 参考 · R 参考
keep if inlist(g, 1, 3)
data <- data[data$g %in% c(1,3), , drop=FALSE]
base
保留指定类别集合
Stata 参考 · R 参考
keep if missing(x)
data <- data[is.na(data$x), , drop=FALSE]
base
保留指定变量缺失的行
Stata 参考 · R 参考
keep if s != ""
data <- data[!is.na(data$s) & data$s != '', , drop=FALSE]
base
保留非空字符串
与 Stata 有差异: Stata 字符串缺失是空文本;此处同时排除空文本与 R 的 NA。
Stata 参考 · R 参考
keep if x > 2 & x < .
data <- data[!is.na(data$x) & data$x > 2, , drop=FALSE]
base
保留超过阈值的非缺失观测
Stata 参考 · R 参考
keep in 2/4
data <- data[2:4, , drop=FALSE]
base
按位置保留连续若干行
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
levelsof g, local(groups)
groups <- sort(unique(data$g[!is.na(data$g)]))
base
保存不同的非缺失数值类别
Stata 参考 · R 参考
levelsof x, missing
sort(unique(data$x),na.last=TRUE)
base
列出含普通缺失的不同值
Stata 参考 · R 参考
list id x if g == 2
data[data$g==2,c('id','x'),drop=FALSE]
base
查看指定行与列
Stata 参考 · R 参考
list id x in 1/3
utils::head(data[c('id','x')],3)
utils
查看前几行的指定列
Stata 参考 · R 参考
list in -2/l
utils::tail(data,2)
utils
查看最后几行
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
lookfor income
names(data)[grepl('income',names(data),ignore.case=TRUE)]
base
不区分大小写搜索列名
与 Stata 有差异: 仅搜索列名;要同时搜索变量标签,需加入各列 label 属性。
Stata 参考 · R 参考
memory
utils::object.size(data)
utils
测量一个 R 数据表占用的内存
报告单个对象的估计内存,而非 Stata 进程整体分配报告。
Stata 参考 · R 参考
merge 1:1 id using other.dta, generate(status)
data$.master <- TRUE; other$.using <- TRUE; data <- dplyr::full_join(data,other,by='id',relationship='one-to-one'); data$status <- ifelse(is.na(data$.master),2L,ifelse(is.na(data$.using),1L,3L)); data$.master <- NULL; data$.using <- NULL
dplyr
记录仅主表、仅附表与匹配状态
除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
merge 1:1 id using other.dta, keep(master match) nogenerate
data <- dplyr::left_join(data,other,by='id',relationship='one-to-one')
dplyr
一对一合并中保留全部主表行
除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
merge 1:1 id using other.dta, keep(match) nogenerate
data <- dplyr::inner_join(data,other,by='id',relationship='one-to-one')
dplyr
一对一合并中仅保留匹配键
除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
merge 1:1 id using other.dta, keepusing(y) nogenerate
data <- dplyr::full_join(data,other[c('id','y')],by='id',relationship='one-to-one')
dplyr
合并时限定附表列
除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
merge 1:1 id using other.dta, nogenerate
stopifnot(!anyDuplicated(data$id),!anyDuplicated(other$id)); data <- dplyr::full_join(data,other,by='id',relationship='one-to-one')
dplyr
执行已验证的一对一完整合并
除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
merge 1:1 id using other.dta, update nogenerate
data <- dplyr::full_join(data,other,by='id',suffix=c('','.using'),relationship='one-to-one'); data$x <- dplyr::coalesce(data$x,data$x.using); data$x.using <- NULL
dplyr
用匹配附表值填补主表缺失
与 Stata 有差异: 仅展示更新取值;不生成 Stata update 冲突状态码 4/5。 除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
merge 1:m id using other.dta, nogenerate
data <- dplyr::full_join(data,other,by='id',relationship='one-to-many')
dplyr
将唯一主表键扩展到多个匹配行
除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
merge m:1 g using groups.dta, keep(master match) nogenerate
data <- dplyr::left_join(data,groups,by='g',relationship='many-to-one')
dplyr
将唯一组属性附加到多行观测
除非明确展示 update,非键列名需互不重复。dplyr 会为重名列添加后缀;普通 Stata merge 在匹配行保留主表取值,包括主表缺失值。
Stata 参考 · R 参考
missings dropobs x y, force
data <- data[rowSums(!is.na(data[c('x','y')]))>0,,drop=FALSE]
base
删除所选数值变量全部缺失的行
Stata 参考 · R 参考
missings dropvars, force
data <- data[!vapply(data,function(z) all(is.na(z)),logical(1))]
base
删除完全缺失的数值列
与 Stata 有差异: 本例仅含数值。Stata 字符串缺失为空文本,在 R 中还需额外检验空串。
Stata 参考 · R 参考
missings report x y
colSums(is.na(data[c('x','y')]))
base
按数值变量报告缺失值数
与 Stata 有差异: 仅处理数值列。R 结果包括零计数;Stata 默认仅显示至少一次缺失的计数。
Stata 参考 · R 参考
missings tag x y, generate(nmiss)
data$nmiss <- rowSums(is.na(data[c('x','y')]))
base
逐行统计数值缺失值数
Stata 参考 · R 参考
misstable patterns x y
table(apply(is.na(data[c('x','y')]),1,paste0,collapse=''))
base
统计联合缺失模式频数
与 Stata 有差异: R 模式串中 TRUE 表示缺失;Stata 显示符号与排序不同。
Stata 参考 · R 参考
misstable summarize x y
colSums(is.na(data[c('x','y')]))
base
统计各所选列缺失值数
Stata 参考 · R 参考
mvdecode x, mv(-99 -98)
data$x[data$x %in% c(-99,-98)] <- NA_real_
base
将多个特殊编码转换为缺失
Stata 参考 · R 参考
mvdecode x, mv(-99=.a)
data$x[data$x %in% -99] <- haven::tagged_na('a')
haven
将特殊编码转换为带标记缺失
与 Stata 有差异: 带标记缺失保留标记,但 R 比较仍遵循 NA 语义。
Stata 参考 · R 参考
mvencode x, mv(-99)
data$x[is.na(data$x)] <- -99
base
将缺失值编码为特殊数值
Stata 参考 · R 参考
mvencode x, mv(.a=-99)
data$x[haven::is_tagged_na(data$x,'a')] <- -99
haven
只编码一种带标记缺失
Stata 参考 · R 参考
order _all, alphabetic
data <- data[sort(names(data))]
base
按字母顺序排列列
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
order id, last
data <- dplyr::relocate(data, id, .after=dplyr::last_col())
dplyr
将一列移到最后
Stata 参考 · R 参考
order s, after(id)
data <- dplyr::relocate(data, s, .after=id)
dplyr
将一列移到另一列之后
Stata 参考 · R 参考
order y id, first
data <- data[c('y','id',setdiff(names(data),c('y','id')))]
base
将指定列移到最前
Stata 参考 · R 参考
putmata X=(x y)
X <- as.matrix(data[c('x','y')])
base
将数值列复制为 R 矩阵
使用 R 矩阵代替独立 Mata 工作区;矩阵名 X 在本例固定。
Stata 参考 · R 参考
putmata X=(x y), omitmissing
X <- as.matrix(data[stats::complete.cases(data[c('x','y')]),c('x','y')])
base
将完整数值行复制为矩阵
使用 R 矩阵代替 Mata;按所选列联合删除不完整行。
Stata 参考 · R 参考
range z 0 1 5
data <- data.frame(z=seq(0,1,length.out=5))
base
创建包含端点的等距网格
Stata 参考 · R 参考
range z 0 10
data$z <- seq(0,10,length.out=nrow(data))
base
按当前行数添加等距网格
Stata 参考 · R 参考
range z 10 0 6
data <- data.frame(z=seq(10,0,length.out=6))
base
创建递减数值网格
Stata 参考 · R 参考
rangestat (mean) z=x, interval(key -1 1)
data$z <- vapply(data$key,function(k) mean(data$x[data$key>=k-1 & data$key<=k+1]),numeric(1))
base
在各闭区间数值键邻域内计算均值
与 Stata 有差异: 小型完整数据流程,采用含端点的键偏移并纳入自身;平方复杂度扫描不适合大型数据。
Stata 参考 · R 参考
rangestat (mean) z=x, interval(key -1 1) excludeself
data$z <- vapply(seq_len(nrow(data)),function(i) mean(data$x[seq_len(nrow(data))!=i & data$key>=data$key[i]-1 & data$key<=data$key[i]+1]),numeric(1))
base
从数值区间均值中排除当前行
与 Stata 有差异: 排除当前行本身而不是所有相同键;本例每个邻域还有其他观测,空邻域需另设 NA 处理。
Stata 参考 · R 参考
rangestat (sum) z=x, interval(key -1 1)
data$z <- vapply(data$key,function(k) sum(data$x[data$key>=k-1 & data$key<=k+1]),numeric(1))
base
在各闭区间数值键邻域内计算总和
与 Stata 有差异: 本例仅含完整有限键与数值;缺失边界、分组与权重需显式扩展。
Stata 参考 · R 参考
recast double x
data$x <- as.double(data$x)
base
将整数列转换为双精度
Stata 参考 · R 参考
recast long x
data$x <- as.integer(data$x)
base
将整值存为 R 整数
与 Stata 有差异: 仅用于 R 整数范围内的整值;Stata 存储范围不同。
Stata 参考 · R 参考
recode x (1/2=0) (3/6=1), generate(binary)
data$binary <- ifelse(is.na(data$x),NA_real_,ifelse(data$x<=2,0,1))
base
将整数类别合并为两组
与 Stata 有差异: 示例值为 1 至 6 的整数;范围外取值需另设分支。
Stata 参考 · R 参考
recode x (1=10) (2=20), generate(z)
data$z <- data$x; data$z[data$x %in% 1] <- 10; data$z[data$x %in% 2] <- 20
base
重编码指定值并保留其他值
Stata 参考 · R 参考
rename (x y) (income hours)
names(data)[match(c('x','y'),names(data))] <- c('income','hours')
base
同时重命名多列
Stata 参考 · R 参考
rename *, lower
names(data) <- tolower(names(data))
base
将全部列名转为小写
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
rename *, upper
names(data) <- toupper(names(data))
base
将全部列名转为大写
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
rename old* new*
names(data) <- sub('^old','new',names(data))
base
替换列名前缀
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
rename x income
data <- dplyr::rename(data, income=x)
dplyr
用 dplyr 重命名一列
Stata 参考 · R 参考
replace s = "unknown" if s == ""
data$s[!is.na(data$s) & data$s==''] <- 'unknown'
base
替换空文本而保留 NA
与 Stata 有差异: R 区分空文本与 NA;本例仅替换空文本。
Stata 参考 · R 参考
replace x = . if x == 2
data$x[data$x %in% 2] <- NA_real_
base
将特定编码改为缺失
Stata 参考 · R 参考
replace x = 0 if missing(x)
data$x[is.na(data$x)] <- 0
base
将数值缺失替换为零
Stata 参考 · R 参考
replace x = x * 100 if g == 1
data$x[data$g %in% 1] <- data$x[data$g %in% 1] * 100
base
仅修改指定类别中的值
Stata 参考 · R 参考
replace x = y if missing(x)
data$x[is.na(data$x)] <- data$y[is.na(data$x)]
base
使用另一列填补缺失值
Stata 参考 · R 参考
reshape long x y, i(id) j(wave)
data <- tidyr::pivot_longer(data,cols=c(x1,x2,y1,y2),names_to=c('.value','wave'),names_pattern='([xy])([12])',names_transform=list(wave=as.integer))
tidyr
同时转换多个平行测量前缀
固定双前缀示例;所有命名模式与源列名需同步更改。
Stata 参考 · R 参考
reshape long x, i(id) j(wave)
data <- tidyr::pivot_longer(data,cols=c(x1,x2),names_to='wave',names_prefix='x',names_transform=list(wave=as.integer),values_to='x')
tidyr
将宽格式测量前缀转换为长格式行
固定 x1/x2 前缀示例;源列名、前缀与输出名需同步调整。
Stata 参考 · R 参考
reshape wide x, i(id) j(group) string
data <- tidyr::pivot_wider(data,id_cols=id,names_from=group,values_from=x,names_prefix='x')
tidyr
转宽格式时使用文本后缀
与 Stata 有差异: 固定字符串后缀流程;组合键必须唯一。
Stata 参考 · R 参考
reshape wide x, i(id) j(wave)
data <- tidyr::pivot_wider(data,id_cols=id,names_from=wave,values_from=x,names_prefix='x')
tidyr
将唯一长格式测量转换为宽格式列
与 Stata 有差异: 要求 id-wave 对唯一;重复值应显式处理,不能静默汇总。
Stata 参考 · R 参考
separate x, by(g)
for (k in sort(unique(data$g))) data[[paste0('x',k)]] <- ifelse(data$g==k,data$x,NA_real_)
base
生成各组专属数值列
Stata 参考 · R 参考
separate y, by(g == 1) generate(z)
data$z0 <- ifelse(data$g!=1,data$y,NA_real_); data$z1 <- ifelse(data$g==1,data$y,NA_real_)
base
按二元条件拆成专属列
生成列前缀 z 在本例固定;z0 与 z1 分别对应假和真分支。
Stata 参考 · R 参考
seqvar z = 1/3
data$z <- rep(NA_integer_,nrow(data)); data$z[seq_len(min(3L,nrow(data)))] <- seq_len(min(3L,nrow(data)))
base
短整数序列结束后将其余行保留为缺失
Stata 参考 · R 参考
seqvar z = 1/3 5/7
data$z <- c(1:3,5:7)
base
创建带指定间隔的整数序列
Stata 参考 · R 参考
snapshot restore 1
data <- readRDS(path)
base
恢复临时数据快照
恢复显式指定的 RDS 文件,而非 Stata 编号快照。
Stata 参考 · R 参考
snapshot save
path <- tempfile(fileext='.rds'); saveRDS(data,path)
base
将数据快照临时保存到磁盘
使用 RDS 文件路径,代替 Stata 带编号的交互快照管理器。
Stata 参考 · R 参考
sort g x
data <- data[order(data$g,data$x,na.last=TRUE), , drop=FALSE]
base
依次按两列升序排列
Stata 参考 · R 参考
sort g, stable
data <- data[order(data$g,method='radix'), , drop=FALSE]
base
同键值内保留原顺序
Stata 参考 · R 参考
sort x
data <- data[order(data$x, na.last=TRUE), , drop=FALSE]
base
按数值排序并将缺失置后
Stata 参考 · R 参考
splitsample, generate(sample)
data$sample <- sample(rep(1:2,length.out=nrow(data)))
base
随机分配均衡的两半样本
与 Stata 有差异: R 与 Stata 随机分配不同;此例样本量为偶数。
Stata 参考 · R 参考
splitsample, generate(sample) nsplit(3)
data$sample <- sample(rep(1:3,each=nrow(data)/3))
base
随机分配三个等量子样本
与 Stata 有差异: 要求行数可被三整除;不同系统随机分配不同。
Stata 参考 · R 参考
stack x a y b, into(value amount) clear
data <- rbind(data.frame(value=data$x,amount=data$a,`_stack`=1L,check.names=FALSE),data.frame(value=data$y,amount=data$b,`_stack`=2L,check.names=FALSE))
base
成对纵向堆叠多列
Stata 参考 · R 参考
stack x y, into(value) clear
data <- data.frame(value=c(data$x,data$y),`_stack`=rep(1:2,each=nrow(data)),check.names=FALSE)
base
将两列纵向堆叠并标记来源
Stata 参考 · R 参考
tostring x, generate(s) format(%06.0f)
data$s <- sprintf('%06.0f',data$x)
base
为数值编号补前导零
Stata 参考 · R 参考
tostring x, generate(s) format(%9.2f)
data$s <- sprintf('%.2f',data$x)
base
将数字格式化为两位小数文本
与 Stata 有差异: R 示例省略字段宽度填充;数值按显示精度舍入并保存为文本。
Stata 参考 · R 参考
xi i.g
data <- dplyr::select(tidystata::as_dummy(data, g, .names = "index"), -tidyselect::any_of("g_1"))
tidystata
生成省略最低类别的虚拟变量
与 Stata 有差异: 保留原有列,并省略首个已观测类别。数值类别按取值排序;R 因子按水平顺序排列,须使其与 Stata 的省略类别一致。Stata 按类别代码命名虚拟变量,R 通过 .names="index" 按已观测类别编号。建模时使用 factor(g);不复现 xi: 交互展开。
Stata 参考 · R 参考
xpose, clear
data <- as.data.frame(t(as.matrix(data)))
base
转置全数值数据表
与 Stata 有差异: 输入必须全为数值;R 输出列名不同于 Stata 的 v1、v2。
Stata 参考 · R 参考
xpose, clear varname
oldnames <- names(data); data <- as.data.frame(t(as.matrix(data))); data[['_varname']] <- oldnames
base
转置并保留原列名
与 Stata 有差异: 输入必须全为数值。原列名保存在 _varname;R 转置后列名可能不同。
Stata 参考 · R 参考

文件与导入导出

Stata R 用途、差异及来源
changeeol source.txt destination.txt, eol(unix)
writeBin(charToRaw(paste0(paste(readLines(src),collapse='\n'),'\n')),dst)
base
将文本文件换行统一为 Unix 格式
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
changeeol source.txt destination.txt, eol(windows)
writeBin(charToRaw(paste0(paste(readLines(src),collapse='\r\n'),'\r\n')),dst)
base
用显式 Windows CRLF 字节写入文本
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
checksum sample.txt
tools::md5sum(src)
tools
计算文件完整性摘要
MD5 是工作流程替代;Stata checksum 使用 POSIX CRC,摘要数值不可直接比较。
Stata 参考 · R 参考
checksum sample.txt, saving(sample.sum)
digest <- tools::md5sum(src); writeLines(unname(digest),dst)
tools
将文件摘要保存为附属文本文件
保存 R MD5 附属文件而非 Stata .sum 文件;Stata 无法将其作为 CRC 附属文件验证。
Stata 参考 · R 参考
copy source.txt destination.txt
file.copy(src,dst,overwrite=FALSE)
base
复制本地文件到新路径
此可运行示例中的 src 与 dst 为临时路径;不涉及网络传输。
Stata 参考 · R 参考
copy source.txt destination.txt, replace
file.copy(src,dst,overwrite=TRUE)
base
使用本地副本覆盖目标文件
仅在新建临时文件中演示覆盖。
Stata 参考 · R 参考
dir "*.csv"
list.files(path,pattern='[.]csv$',full.names=FALSE)
base
列出文件夹中的 CSV 文件
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
dir, all
list.files(path,all.files=TRUE,no..=TRUE)
base
列出含点开头隐藏文件的文件
与 Stata 有差异: R all.files 包括点文件;隐藏文件规则依操作系统而异。
Stata 参考 · R 参考
export delimited id x using sample.csv, novarnames replace
utils::write.table(data[c('id','x')],path,sep=',',row.names=FALSE,col.names=FALSE,quote=FALSE,na='')
utils
导出不带变量名的 CSV
Stata 参考 · R 参考
export delimited id x using sample.csv, replace
utils::write.csv(data[c('id','x')],path,row.names=FALSE,na='')
utils
将指定列导出为 CSV
Stata 参考 · R 参考
export delimited id x using sample.tsv, delimiters("\t") replace
utils::write.table(data[c('id','x')],path,sep='\t',row.names=FALSE,quote=FALSE,na='')
utils
导出制表符分隔表格
Stata 参考 · R 参考
export excel id x using sample.xlsx, firstrow(variables) replace
writexl::write_xlsx(data[c('id','x')],path)
writexl
将所选列导出为 Excel 工作簿
Stata 参考 · R 参考
export sasxport5 sample.xpt, replace
haven::write_xpt(data,path,version=5,name='SAMPLE')
haven
导出 SAS XPORT 第五版数据
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
export spss using sample.sav, replace
haven::write_sav(data,path)
haven
将带标签数值导出为 SPSS 系统文件
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
file open handle using sample.txt, read text
file read handle line
file close handle
con <- file(src,open='rt',encoding='UTF-8'); line <- readLines(con,n=1); close(con)
base
通过文本连接读取一行
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
file open handle using sample.txt, write text
file write handle "hello" _n
file close handle
con <- file(path,open='wt',encoding='UTF-8'); writeLines('hello',con); close(con)
base
写入并关闭 UTF-8 文本连接
示例显式关闭自己创建的临时连接。
Stata 参考 · R 参考
filefilter source.txt destination.txt, from("old") to("new")
writeLines(gsub('old','new',readLines(src),fixed=TRUE),dst,useBytes=TRUE)
base
替换小文本文件中的指定文本
与 Stata 有差异: 适用于小文件的逐行流程;不处理二进制模式或大文件流式操作。
Stata 参考 · R 参考
filefilter source.txt destination.txt, from(\t) to(";")
writeLines(gsub('\t',';',readLines(src),fixed=TRUE),dst,useBytes=TRUE)
base
替换文本文件中的制表分隔符
与 Stata 有差异: 用于小文本文件的字面替换;表格中的带引号分隔符需使用解析器。
Stata 参考 · R 参考
findfile sample.txt, path(folder)
found <- list.files(folder,pattern='^sample[.]txt$',full.names=TRUE); stopifnot(length(found)==1L); normalizePath(found,winslash='/')
base
在指定文件夹中查找文件
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
hexdump sample.bin
bytes <- readBin(src,'raw',n=file.info(src)$size); format(bytes)
base
以十六进制字节查看文件
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
hexdump sample.bin, analyze tabulate
table(as.integer(readBin(src,'raw',n=file.info(src)$size)))
base
统计二进制文件中各字节值次数
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import delimited using sample.csv, clear
data <- utils::read.csv(path,stringsAsFactors=FALSE)
utils
导入带表头的 CSV 文件
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import delimited using sample.csv, rowrange(3:4) varnames(nonames) clear
data <- utils::read.csv(path,header=FALSE,skip=2,nrows=2,col.names=c('id','x'))
utils
仅读取文本的指定行区间
与 Stata 有差异: 行号包括文件表头在内的物理行;本例 R 列名固定。
Stata 参考 · R 参考
import delimited using sample.csv, stringcols(1) clear
data <- utils::read.csv(path,colClasses=c('character','numeric'))
utils
导入时保留编号前导零
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import delimited using sample.csv, varnames(nonames) clear
data <- utils::read.csv(path,header=FALSE,col.names=c('id','x'))
utils
导入不带表头的 CSV 文件
与 Stata 有差异: R 显式指定 id 与 x 列名;Stata 在未重命名时会使用默认列名。
Stata 参考 · R 参考
import delimited using sample.tsv, delimiters("\t") clear
data <- utils::read.delim(path,stringsAsFactors=FALSE)
utils
导入制表符分隔数据
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import excel using sample.xlsx, describe
readxl::excel_sheets(path)
readxl
导入前列出工作表名称
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import excel using sample.xlsx, sheet("Survey") cellrange(A1:B2) firstrow clear
data <- readxl::read_excel(path,sheet='Survey',range='A1:B2')
readxl
导入限定的 Excel 单元格矩形
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import excel using sample.xlsx, sheet("Survey") firstrow clear
data <- readxl::read_excel(path,sheet='Survey')
readxl
读取指定名称的 Excel 工作表
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import sasxport5 sample.xpt, clear
data <- haven::read_xpt(path)
haven
导入 SAS XPORT 第五版文件
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import spss using sample.sav, clear
data <- haven::read_sav(path)
haven
导入 SPSS 系统文件
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
import delimited using sample.csv, clear
data <- utils::read.csv(path,na.strings=c('','.'),stringsAsFactors=FALSE)
utils
导入时识别空白与点号缺失标记
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
infile id x using sample.txt, clear
data <- utils::read.table(path,col.names=c('id','x'),header=FALSE)
utils
导入空白分隔的数值字段
用于简单无引号数值字段的自由格式示例。
Stata 参考 · R 参考
infile str8 name x using sample.txt, clear
data <- utils::read.table(path,col.names=c('name','x'),header=FALSE,stringsAsFactors=FALSE)
utils
导入带引号文本与数值字段
Stata 参考 · R 参考
infix id 1-2 x 3-5 using sample.txt, clear
data <- utils::read.fwf(path,widths=c(2,3),col.names=c('id','x'))
utils
读取相邻定宽数值字段
Stata 参考 · R 参考
infix str3 code 1-3 x 5-6 using sample.txt, clear
data <- utils::read.fwf(path,widths=c(3,-1,2),col.names=c('code','x'),stringsAsFactors=FALSE)
utils
读取定宽字段并跳过间隔位
Stata 参考 · R 参考
jdbc insert id score, table("people")
DBI::dbAppendTable(con,'people',data); observed <- DBI::dbReadTable(con,'people'); DBI::dbDisconnect(con)
DBI
将受控行追加到已有 SQL 表
所示 Stata 示例要求已有 DSN/JDBC 连接。受控 SQLite 示例仅验证 SQL 或表操作,不验证 ODBC/JDBC 驱动连接;实际使用应选择适当 DBI 后端。
Stata 参考 · R 参考
jdbc load, table("people")
data <- DBI::dbReadTable(con,'people'); DBI::dbDisconnect(con)
DBI
通过 DBI 后端载入完整 SQL 表
所示 Stata 示例要求已有 DSN/JDBC 连接。受控 SQLite 示例仅验证 SQL 或表操作,不验证 ODBC/JDBC 驱动连接;实际使用应选择适当 DBI 后端。
Stata 参考 · R 参考
mkdir work
dir.create(path)
base
创建文件夹
可运行示例在 R 临时目录中创建新文件夹。
Stata 参考 · R 参考
odbc describe "people", dsn("research")
fields <- DBI::dbListFields(con,'people'); DBI::dbDisconnect(con)
DBI
查看数据库表字段名
所示 Stata 示例要求已有 DSN/JDBC 连接。受控 SQLite 示例仅验证 SQL 或表操作,不验证 ODBC/JDBC 驱动连接;实际使用应选择适当 DBI 后端。 此行只返回名称,不提供 Stata 字段类型报告。
Stata 参考 · R 参考
odbc load, exec("SELECT id, score FROM people WHERE score >= 20") dsn("research")
data <- DBI::dbGetQuery(con,'SELECT id, score FROM people WHERE score >= 20 ORDER BY id'); DBI::dbDisconnect(con)
DBI
通过 SQL 查询载入所选行
所示 Stata 示例要求已有 DSN/JDBC 连接。受控 SQLite 示例仅验证 SQL 或表操作,不验证 ODBC/JDBC 驱动连接;实际使用应选择适当 DBI 后端。
Stata 参考 · R 参考
odbc query "research"
tables <- DBI::dbListTables(con); DBI::dbDisconnect(con)
DBI
查看数据库中的可用表
所示 Stata 示例要求已有 DSN/JDBC 连接。受控 SQLite 示例仅验证 SQL 或表操作,不验证 ODBC/JDBC 驱动连接;实际使用应选择适当 DBI 后端。
Stata 参考 · R 参考
outfile id x using sample.csv, comma replace
utils::write.table(data[c('id','x')],path,sep=',',row.names=FALSE,col.names=FALSE,quote=FALSE,na='.')
utils
导出不带表头的逗号分隔字段
Stata 参考 · R 参考
outfile id x using sample.txt, replace
utils::write.table(data[c('id','x')],path,sep=' ',row.names=FALSE,col.names=FALSE,quote=FALSE,na='.')
utils
导出纯数值字段并使用 Stata 缺失文本
Stata 参考 · R 参考
save sample.dta, replace
haven::write_dta(data,path)
haven
将数据表保存为当前 Stata DTA 文件
与 Stata 有差异: R 对象名不作为 Stata 活动数据状态保存;haven 写入其支持的 Stata 元数据。
Stata 参考 · R 参考
saveold sample.dta, version(12) replace
haven::write_dta(data,path,version=12)
haven
写入兼容 Stata 12 的 DTA 文件
与 Stata 有差异: 使用 haven 旧格式验证接受的列名;本例列名至少两个字符。
Stata 参考 · R 参考
savespss "data.sav", replace
haven::write_sav(data, path)
haven
将数据保存为 SPSS 文件
与 Stata 有差异: 社区命令。haven 会写出变量标签和值标签,但遇到 Stata 标签缺失值(.a、.b)会报错。写出前须明确将其转换为普通 NA,或通过 haven::labelled_spss() 转换为选定的 SPSS 用户缺失代码。字符串宽度和显示格式也可能不同。
Stata 参考 · R 参考
setroot
root <- rprojroot::find_root(rprojroot::has_file('.here'),path=child)
rprojroot
依据标记文件定位项目根目录
使用显式 .here 标记与给定起点;Stata 命令还支持其他标记并保存全局宏。
Stata 参考 · R 参考
type sample.txt
readLines(src,encoding='UTF-8')
base
读取 UTF-8 文本文件行
与 Stata 有差异: 返回文本行;可用 print 或 cat 显示在控制台。
Stata 参考 · R 参考
type sample.txt, lines(1)
readLines(src,n=1,encoding='UTF-8')
base
仅读取文本文件开头
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
unicode convertfile source.txt destination.txt, srcencoding("latin1") dstencoding("utf-8")
text <- readLines(src,encoding='latin1'); writeBin(charToRaw(paste0(iconv(text,from='latin1',to='UTF-8'),'\n')),dst)
base
将 Latin-1 文本转换为 UTF-8
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
unzipfile sample.zip
utils::unzip(archive,exdir=destination)
utils
将 ZIP 包解压到指定临时文件夹
与 Stata 有差异: R 显式指定解压文件夹;Stata 默认使用当前工作目录。
Stata 参考 · R 参考
use id x using sample.dta, clear
data <- haven::read_dta(path,col_select=c('id','x'))
haven
从 DTA 文件读取指定列
Stata 参考 · R 参考
use sample.dta in 1/3, clear
data <- haven::read_dta(path,n_max=3)
haven
读取 DTA 文件前几行观测
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
zipfile sample.txt, saving(sample.zip)
zip::zipr(archive,src)
zip
创建含文本文件的 ZIP 压缩包
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考

标签与元数据

Stata R 用途、差异及来源
char list x[]
attributes(data$x)
base
查看自定义列特征
返回全部 R 属性,包括自定义元数据。
Stata 参考 · R 参考
char x[source] "questionnaire"
attr(data$x,'source') <- 'questionnaire'
base
保存自定义列特征
R 属性可用作本地元数据;许多变换不保留任意属性。
Stata 参考 · R 参考
decode x, generate(text)
data$text <- as.character(haven::as_factor(data$x))
haven
将数值标签解码为文本
Stata 参考 · R 参考
encode s, generate(code)
data$code <- as.integer(factor(data$s,levels=sort(unique(data$s[!is.na(data$s)&data$s!='']))))
base
按排序顺序编码非空类别
与 Stata 有差异: 只生成整数编码。要保留类别标签请使用带标签向量或保留因子;排序依赖区域设置。
Stata 参考 · R 参考
label data "Research sample"
attr(data,'label') <- 'Research sample'
base
添加数据集标签
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
label define yesno 1 "No" 2 "Yes"
yesno <- c(No=1,Yes=2)
base
定义可复用的数值标签映射
R 将映射存为命名向量;需分别附加到各标签列。
Stata 参考 · R 参考
label list yesno
attr(data$x,'labels')
base
读取列的数值标签映射
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
label values x
data$x <- haven::zap_labels(data$x)
haven
删除数值标签并保留数值
Stata 参考 · R 参考
label values x yesno
data$x <- haven::labelled(data$x,labels=yesno)
haven
附加数值标签字典
Stata 参考 · R 参考
label variable x ""
attr(data$x,'label') <- NULL
base
删除变量标签
Stata 参考 · R 参考
label variable x "Response"
attr(data$x,'label') <- 'Response'
base
添加描述性变量标签
Stata 参考 · R 参考
labelbook
lapply(data,function(z) attr(z,'labels'))
base
逐列查看数值标签字典
与 Stata 有差异: 列出已附加字典;不复制 Stata 完整的多语言标签检查。
Stata 参考 · R 参考
labmask code, values(text)
dictionary <- unique(data[c('code','text')]); stopifnot(!anyDuplicated(dictionary$code)); data$code <- haven::labelled(data$code,stats::setNames(dictionary$code,dictionary$text))
haven
将已有文本值设为数值标签
与 Stata 有差异: 要求每个数值编码唯一对应一个文本标签;保留所给数值编码,不按文本字母顺序重新编码。
Stata 参考 · R 参考
notes list x
attr(data$x,'notes')
base
读取一列的注释
读取自定义 R notes 属性;后续操作是否保留取决于变换方式。
Stata 参考 · R 参考
notes x: Measured at baseline
attr(data$x,'notes') <- 'Measured at baseline'
base
为一列附加文本注释
使用 R 属性保存;不复刻 Stata 编号注释管理。
Stata 参考 · R 参考
numlabel, add
labs <- attr(data$x,'labels'); names(labs) <- paste0(unname(labs),'. ',names(labs)); attr(data$x,'labels') <- labs
base
给每个标签添加数值编码前缀
固定流程示例;更改时需同时调整对象名与列名。
Stata 参考 · R 参考
numlabel, remove
labs <- attr(data$x,'labels'); names(labs) <- sub('^[0-9]+[.] ','',names(labs)); attr(data$x,'labels') <- labs
base
删除已知格式的编码标签前缀
与 Stata 有差异: 仅处理示例中的正整数前缀格式;其他格式需调整匹配模式。
Stata 参考 · R 参考
uselabel using sample.dta, clear
labs <- attr(data$x,'labels'); dictionary <- data.frame(lname='x',value=unname(labs),label=names(labs),trunc=0L)
base
生成数值标签字典表
使用已导入的标签列。R 无独立 Stata 标签定义名;lname 使用列名。
Stata 参考 · R 参考

描述性表格

Stata R 用途、差异及来源
collapse (count) z=x, by(g)
data <- dplyr::summarise(data,z=sum(!is.na(x)),.by=g)
dplyr
用组内非缺失计数替代原始行
Stata 参考 · R 参考
collapse (first) z=x, by(g)
data <- dplyr::summarise(data,z=dplyr::first(x),.by=g)
dplyr
用组内含缺失的首值替代原始行
Stata 参考 · R 参考
collapse (firstnm) z=x, by(g)
data <- dplyr::summarise(data,z=dplyr::first(x[!is.na(x)]),.by=g)
dplyr
用组内首个非缺失值替代原始行
Stata 参考 · R 参考
collapse (last) z=x, by(g)
data <- dplyr::summarise(data,z=dplyr::last(x),.by=g)
dplyr
用组内含缺失的末值替代原始行
Stata 参考 · R 参考
collapse (lastnm) z=x, by(g)
data <- dplyr::summarise(data,z=dplyr::last(x[!is.na(x)]),.by=g)
dplyr
用组内最后非缺失值替代原始行
Stata 参考 · R 参考
collapse (max) z=x, by(g)
data <- dplyr::summarise(data, z = if (all(is.na(x))) NA_real_ else max(x, na.rm = TRUE), .by = g)
dplyr
用组内最大值替代原始行
Stata 参考 · R 参考
collapse (mean) x [fw=w]
data <- data.frame(x=stats::weighted.mean(data$x,data$w))
stats
将整数频数加权值汇总为均值
与 Stata 有差异: 仅为频数加权均值;不涉及推断或加权方差公式。
Stata 参考 · R 参考
collapse (mean) x y, cw by(g)
data <- data[stats::complete.cases(data[c('x','y')]),]; data <- dplyr::summarise(data,dplyr::across(c(x,y),mean),.by=g)
dplyr
使用共同完整样本按组汇总
Stata 参考 · R 参考
collapse (mean) z=x, by(g)
data <- dplyr::summarise(data,z=mean(x,na.rm=TRUE),.by=g)
dplyr
用组内均值替代原始行
Stata 参考 · R 参考
collapse (median) z=x, by(g)
data <- dplyr::summarise(data,z=stats::median(x,na.rm=TRUE),.by=g)
dplyr
用组内中位数替代原始行
Stata 参考 · R 参考
collapse (min) z=x, by(g)
data <- dplyr::summarise(data, z = if (all(is.na(x))) NA_real_ else min(x, na.rm = TRUE), .by = g)
dplyr
用组内最小值替代原始行
Stata 参考 · R 参考
collapse (sum) z=x, by(g)
data <- dplyr::summarise(data,z=sum(x,na.rm=TRUE),.by=g)
dplyr
用组内总和替代原始行
Stata 参考 · R 参考
contract g [fw=w], freq(n)
data <- dplyr::summarise(data,n=sum(w),.by=g)
dplyr
从整数频数权重生成类别计数
Stata 参考 · R 参考
contract g h, freq(n)
data <- dplyr::count(data,g,h,name='n')
dplyr
统计两个类别的已观测组合频数
Stata 参考 · R 参考
contract g h, freq(n) zero
data <- as.data.frame(table(data$g,data$h)); names(data) <- c('g','h','n')
base
纳入零频数的未观测组合
Stata 参考 · R 参考
contract g, freq(n)
data <- dplyr::count(data,g,name='n')
dplyr
用类别频数替代原始观测
Stata 参考 · R 参考
contract g, freq(n) cfreq(cn) cpercent(cp)
data <- dplyr::count(data,g,name='n'); data$cn <- cumsum(data$n); data$cp <- 100*data$cn/sum(data$n)
dplyr
生成累计频数与百分比
Stata 参考 · R 参考
contract g, freq(n) percent(p)
data <- dplyr::count(data,g,name='n'); data$p <- 100*data$n/sum(data$n)
dplyr
生成类别频数与百分比
Stata 参考 · R 参考
contract g, nomiss
data <- dplyr::count(data[!is.na(data$g)&data$g!='',,drop=FALSE],g,name='_freq')
dplyr
汇总频数前排除缺失类别
与 Stata 有差异: 同时排除空字符串与 R NA,以对应 Stata 非缺失字符串类别。
Stata 参考 · R 参考
summarize x, detail
stats::quantile(data$x,c(.01,.05,.1,.25,.5,.75,.9,.95,.99),na.rm=TRUE,type=2)
base
计算详细经验百分位数
与 Stata 有差异: 对应 summarize detail 的百分位部分,使用 R type 2;不返回偏度与峰度。
Stata 参考 · R 参考
summarize x, meanonly
c(n=sum(!is.na(data$x)),mean=mean(data$x,na.rm=TRUE),min=min(data$x,na.rm=TRUE),max=max(data$x,na.rm=TRUE))
base
计算均值型摘要要素
Stata 参考 · R 参考
tab1 g h
lapply(data[c('g','h')],table)
base
分别生成多个单变量频数表
Stata 参考 · R 参考
tab2 g h k
pairs <- utils::combn(c('g','h','k'),2,simplify=FALSE); lapply(pairs,function(p) table(data[[p[1]]],data[[p[2]]]))
base
生成各变量对的列联表
Stata 参考 · R 参考
tabdisp g h, cellvar(value)
stopifnot(!anyDuplicated(data[c('g','h')])); stats::xtabs(value~g+h,data=data,na.action=stats::na.pass)
stats
展示预计算单元值的完整表格
与 Stata 有差异: 要求每格均有一行且键唯一;否则 xtabs 会合计重复值或将缺格填为零。
Stata 参考 · R 参考
tabstat x y, statistics(n mean sd) columns(statistics)
sapply(data[c('x','y')],function(z) c(n=sum(!is.na(z)),mean=mean(z,na.rm=TRUE),sd=stats::sd(z,na.rm=TRUE)))
base
比较多列计数、均值与离散程度
Stata 参考 · R 参考
tabstat x, by(g) statistics(n mean)
data |> dplyr::group_by(g) |> dplyr::summarise(n=sum(!is.na(x)),mean=mean(x,na.rm=TRUE),.groups='drop')
dplyr
按类别汇总非缺失计数与均值
Stata 参考 · R 参考
tabstat x, statistics(iqr)
with(data,diff(stats::quantile(x,c(.25,.75),na.rm=TRUE,type=2)))
base
返回描述统计量:四分位距
与 Stata 有差异: 通过 R quantile type 2 使用 Stata 默认经验百分位规则。
Stata 参考 · R 参考
tabstat x, statistics(max)
with(data,max(x,na.rm=TRUE))
base
返回描述统计量:最大值
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(mean)
with(data,mean(x,na.rm=TRUE))
base
返回描述统计量:均值
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(min)
with(data,min(x,na.rm=TRUE))
base
返回描述统计量:最小值
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(n)
with(data,sum(!is.na(x)))
base
返回描述统计量:非缺失计数
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(p25)
with(data,as.numeric(stats::quantile(x,.25,na.rm=TRUE,type=2)))
base
返回描述统计量:第 25 百分位
与 Stata 有差异: 通过 R quantile type 2 使用 Stata 默认经验百分位规则。
Stata 参考 · R 参考
tabstat x, statistics(p50)
with(data,stats::median(x,na.rm=TRUE))
base
返回描述统计量:中位数
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(p75)
with(data,as.numeric(stats::quantile(x,.75,na.rm=TRUE,type=2)))
base
返回描述统计量:第 75 百分位
与 Stata 有差异: 通过 R quantile type 2 使用 Stata 默认经验百分位规则。
Stata 参考 · R 参考
tabstat x, statistics(range)
with(data,diff(range(x,na.rm=TRUE)))
base
返回描述统计量:极差
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(sd)
with(data,stats::sd(x,na.rm=TRUE))
base
返回描述统计量:样本标准差
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(semean)
with(data,stats::sd(x,na.rm=TRUE)/sqrt(sum(!is.na(x))))
base
返回描述统计量:均值标准误
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(sum)
with(data,sum(x,na.rm=TRUE))
base
返回描述统计量:总和
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabstat x, statistics(variance)
with(data,stats::var(x,na.rm=TRUE))
base
返回描述统计量:样本方差
与 Stata 有差异: 非加权描述统计量;不应用调查或抽样设计校正。
Stata 参考 · R 参考
tabulate g
table(data$g)
base
统计单个类别变量频数
Stata 参考 · R 参考
tabulate g [fw=w]
stats::xtabs(w~g,data=data,na.action=stats::na.pass)
stats
使用整数频数权重制表
Stata 参考 · R 参考
tabulate g h
table(data$g,data$h)
base
生成二维列联频数表
Stata 参考 · R 参考
tabulate g h, cell
100*prop.table(table(data$g,data$h))
base
计算占全表的单元格百分比
Stata 参考 · R 参考
tabulate g h, column
100*prop.table(table(data$g,data$h),margin=2)
base
计算列联表列内百分比
Stata 参考 · R 参考
tabulate g h, row
100*prop.table(table(data$g,data$h),margin=1)
base
计算列联表行内百分比
Stata 参考 · R 参考
tabulate g, generate(d)
indicators <- tidystata::as_dummy(dplyr::select(data, g), g, .remove = TRUE)
tidystata
生成完整类别指示变量组
与 Stata 有差异: 保留全部观测;类别缺失时各虚拟变量均为NA。R返回独立数据框并按类别命名;Stata的前缀d不是可替换的输出变量名。
Stata 参考 · R 参考
tabulate g, missing
table(data$g,useNA='ifany')
base
频数表中包含缺失类别
与 Stata 有差异: 将 R NA 列为独立类别;空字符串在 R 中仍是另一种值。
Stata 参考 · R 参考

模型与检验

Stata R 用途、差异及来源
ameans y
c(arithmetic=mean(data$y),geometric=exp(mean(log(data$y))),harmonic=1/mean(1/data$y))
stats
比较算术、几何与调和均值
与 Stata 有差异: 对非缺失正值返回三种点估计;Stata还报告相应置信区间。
Stata 参考 · R 参考
biprobit y1 y2 x
VGAM::vglm(cbind(y1,y2)~x,family=VGAM::binom2.rho(),data=data)
VGAM
联合拟合相关的二元probit方程
与 Stata 有差异: 两个二元方程共享x并采用固定潜在相关;rho连接参数化不同,但拟合联合概率具有相同模型含义。
Stata 参考 · R 参考
centile y, centile(50)
{ fit <- boot::boot(data,function(d,i) unname(stats::quantile(d$y[i],0.5,type=6)),R=499); list(median=fit$t0,interval=boot::boot.ci(fit,type="perc")$percent[4:5]) }
boot
估计中位数并自助计算置信区间
点估计对应;此例使用百分位自助区间,而Stata的centile默认使用基于二项分布的顺序统计量区间。
Stata 参考 · R 参考
contrast r.g
multcomp::glht(fit,linfct=multcomp::mcp(g="Dunnett"))
multcomp
构造各组与参照类别之间的对比
与 Stata 有差异: 返回对比估计与协方差。Stata的contrast默认不调整多重检验;summary(glht)默认采用single-step调整。未调整p值应使用summary(result, test=multcomp::adjusted("none"))。
Stata 参考 · R 参考
cpoisson y x, ul(4)
VGAM::vglm(VGAM::SurvS4(y,status)~x,family=VGAM::cens.poisson(),data=data)
VGAM
拟合右删失泊松计数模型
与 Stata 有差异: 固定右删失界限为4;精确计数的status为1,已知计数至少为4时为0。删失不能按截断处理。
Stata 参考 · R 参考
elasticnet linear y x z, alpha(0.5)
glmnet::cv.glmnet(as.matrix(data[c("x","z")]),data$y,alpha=0.5,nfolds=10)
glmnet
拟合交叉验证的elasticnet线性预测模型
预测流程对应:折分、标准化、惩罚网格、损失缩放和lambda选择与Stata默认值不同,系数不保证相同。
Stata 参考 · R 参考
esize twosample y, by(g) cohensd
effectsize::cohens_d(y~g,data=data,pooled_sd=TRUE)
effectsize
估计两个独立组的Cohen标准化均值差
与 Stata 有差异: 使用合并标准差,方向为第一组减第二组;若研究对比方向相反,应改变符号。
Stata 参考 · R 参考
esizei 30 10 2 40 12 3, cohensd
(10-12)/sqrt(((30-1)*2^2+(40-1)*3^2)/(30+40-2))
stats
根据组汇总统计量计算合并标准差效应量
固定汇总统计量流程仅返回Cohen d;未计算置信区间或Hedges校正。
Stata 参考 · R 参考
icc y id
{ wide <- stats::reshape(data,idvar="id",timevar="rater",direction="wide"); psych::ICC(wide[,-1],lmer=FALSE)$results[1,,drop=FALSE] }
psych
估计单向模型单次测量组内相关
与 Stata 有差异: 固定平衡设计中每个对象有三次测量。R从宽格式重复测量列开始;ICC1为单向绝对一致性的单次测量形式。
Stata 参考 · R 参考
lasso linear y x z
glmnet::cv.glmnet(as.matrix(data[c("x","z")]),data$y,alpha=1,nfolds=10)
glmnet
拟合交叉验证的lasso线性预测模型
预测流程对应:折分、标准化、惩罚网格、损失缩放和lambda选择与Stata默认值不同,系数不保证相同。
Stata 参考 · R 参考
manovatest g
summary(fit,test="Pillai")$stats["g",,drop=FALSE]
stats
检验已拟合多变量模型中的因子项
与 Stata 有差异: 先拟合对应MANOVA模型。此R示例提取Pillai统计量;Stata的manovatest报告四种多变量统计量。
Stata 参考 · R 参考
nestreg: regress y (x) (z)
{ reduced <- stats::lm(y~x,data=data); full <- stats::lm(y~x+z,data=data); stats::anova(reduced,full) }
stats
比较逐步加入的回归变量块
与 Stata 有差异: 用偏F检验比较这两个嵌套OLS模型;不实现Stata前缀按任意模型块逐步拟合的一般功能。
Stata 参考 · R 参考
orthog x z, generate(ox oz)
{ Q <- qr.Q(qr(cbind(1,as.matrix(data[c("x","z")])))); data[c("ox","oz")] <- Q[,-1,drop=FALSE]*sqrt(nrow(data)); data[c("ox","oz")] }
stats
按指定顺序对中心化解释变量列正交化
与 Stata 有差异: 无权重QR给出均方为一的正交基;符号可能与Stata改进Gram-Schmidt输出不同。
Stata 参考 · R 参考
orthpoly x, generate(p1 p2 p3) degree(3)
data[c("p1","p2","p3")] <- stats::poly(data$x,degree=3)*sqrt(nrow(data))
stats
生成三个正交多项式变量列
与 Stata 有差异: 把R的标准正交基缩放为均方一;多项式符号与所保存系数的约定可能不同。
Stata 参考 · R 参考
predictnl p = invlogit(predict(xb)), se(se)
{ pred <- stats::predict(fit,type="link",se.fit=TRUE); data$p <- stats::plogis(pred$fit); data$se <- data$p*(1-data$p)*pred$se.fit; data[c("p","se")] }
stats
对预测作非线性变换并计算Delta方法标准误
与 Stata 有差异: 在logit广义线性模型后使用;采用导数p*(1-p)和拟合线性指数标准误。
Stata 参考 · R 参考
pwcompare g, mcompare(tukey)
stats::TukeyHSD(stats::aov(y~g,data=data))$g
stats
通过Tukey同时置信区间比较全部组对
与 Stata 有差异: 适用于y对g的单因素等方差模型;R的TukeyHSD不能普遍替代任意模型的调整后边际比较。
Stata 参考 · R 参考
pwmean y, over(g) mcompare(bonferroni)
stats::pairwise.t.test(data$y,data$g,p.adjust.method="bonferroni",pool.sd=TRUE)
stats
使用Bonferroni校正的合并方差检验比较组均值
与 Stata 有差异: 采用共同的组内合并方差及Bonferroni调整的成对t检验。返回p值矩阵,不含Stata的成对均值差置信区间。
Stata 参考 · R 参考
robvar y, by(g)
car::leveneTest(y~factor(g),data=data,center=stats::median)
car
使用以中位数为中心的Levene方法检验组间方差相等
与 Stata 有差异: 对应robvar的W50;Stata另外报告以均值为中心的W0和以10%截尾均值为中心的W10。
Stata 参考 · R 参考
runtest y, threshold(0)
{ above <- data$y>0; n1 <- sum(above); n0 <- sum(!above); runs <- 1+sum(diff(above)!=0); expected <- 1+2*n1*n0/(n1+n0); variance <- 2*n1*n0*(2*n1*n0-n1-n0)/((n1+n0)^2*(n1+n0-1)); z <- (runs-expected)/sqrt(variance); c(runs=runs,z=z,p.value=2*stats::pnorm(-abs(z))) }
stats
检验阈值二分序列的游程是否随机
与 Stata 有差异: 使用大样本无连续性校正的游程统计量,对应Stata默认约定;使用此流程前需删除缺失值。
Stata 参考 · R 参考
slogit y x z, dimension(1) baseoutcome(3)
VGAM::rrvglm(y~x+z,family=VGAM::multinomial(refLevel="3"),data=data,Rank=1)
VGAM
拟合秩一刻板多项logit模型
与 Stata 有差异: 采用一维Anderson刻板模型的降秩多项logit形式。类别得分的识别、尺度与符号约定可能不同。
Stata 参考 · R 参考
symmi 10 8 \ 3 10
stats::mcnemar.test(matrix(c(10,8,3,10),2,byrow=TRUE),correct=FALSE)
stats
根据单元格计数直接检验匹配表对称性
与 Stata 有差异: 对此2乘2表,对称性检验是未作连续性修正的McNemar检验。Stata还报告表格汇总;R返回htest对象。
Stata 参考 · R 参考
tnbreg y x, ll(0)
VGAM::vglm(y~x,family=VGAM::posnegbinomial(),data=data)
VGAM
拟合零截断NB2回归
与 Stata 有差异: 零截断NB2采用固定size参数;VGAM的size等于1/alpha。信息矩阵和优化约定可能不同。
Stata 参考 · R 参考
tpoisson y x, ll(0)
VGAM::vglm(y~x,family=VGAM::pospoisson(),data=data)
VGAM
拟合零截断泊松回归
与 Stata 有差异: 仅对应零截断;拟合值为给定正计数条件下的均值,而对数连接系数参数化的是潜在泊松lambda。
Stata 参考 · R 参考
truncreg y x, ll(0)
VGAM::vglm(y~x,family=VGAM::posnormal(),data=data)
VGAM
拟合在零处左截断的正态回归
与 Stata 有差异: VGAM的posnormal对应仅观察到大于零正态结果的特例;此例不覆盖变动界限或上截断。
Stata 参考 · R 参考
ztest y == 20, sd(3)
{ z <- (mean(data$y)-20)/(3/sqrt(nrow(data))); c(z=z,p.value=2*stats::pnorm(-abs(z))) }
stats
使用已知总体标准差检验均值
与 Stata 有差异: 数值3假定为已知总体标准差,而非样本估计值。
Stata 参考 · R 参考
ztesti 30 10 2 40 12 3
{ z <- (10-12)/sqrt(2^2/30+3^2/40); c(z=z,p.value=2*stats::pnorm(-abs(z))) }
stats
根据已知方差汇总量比较独立均值
与 Stata 有差异: 将给定标准差视为已知,并采用正态参考分布。返回z统计量和双侧p值,不含Stata置信限。
Stata 参考 · R 参考

统计分布

Stata R 用途、差异及来源
display F(4,10,2)
stats::pf(2, df1=4, df2=10)
stats
计算F分布累积概率
Stata 参考 · R 参考
display Fden(4,10,2)
stats::df(2, df1=4, df2=10)
stats
计算F分布密度
Stata 参考 · R 参考
display Ftail(4,10,2)
stats::pf(2, df1=4, df2=10, lower.tail=FALSE)
stats
计算F分布上尾概率
Stata 参考 · R 参考
display betaden(2,3,0.4)
stats::dbeta(0.4, shape1=2, shape2=3)
stats
计算贝塔分布密度
Stata 参考 · R 参考
display binomial(10,3,0.4)
stats::pbinom(3, size=10, prob=0.4)
stats
计算二项分布含边界下尾概率
Stata 参考 · R 参考
display binomialp(10,3,0.4)
stats::dbinom(3, size=10, prob=0.4)
stats
计算二项分布概率质量
Stata 参考 · R 参考
display binomialtail(10,3,0.4)
stats::pbinom(2, size=10, prob=0.4, lower.tail=FALSE)
stats
计算二项分布含边界上尾概率
Stata上尾概率包含k;R的lower.tail=FALSE不包含其q参数值,因此应使用k-1。
Stata 参考 · R 参考
display binormal(0,0,0.4)
as.numeric(mvtnorm::pmvnorm(upper=c(0,0),corr=matrix(c(1,0.4,0.4,1),2)))
mvtnorm
计算相关二元正态概率
与 Stata 有差异: 用mvtnorm数值积分计算二元正态概率。积分容差及数值舍入不同于Stata分布函数。
Stata 参考 · R 参考
display cauchy(1,2,3)
stats::pcauchy(3, location=1, scale=2)
stats
计算柯西分布累积概率
Stata 参考 · R 参考
display cauchyden(1,2,3)
stats::dcauchy(3, location=1, scale=2)
stats
计算柯西分布密度
Stata 参考 · R 参考
display cauchytail(1,2,3)
stats::pcauchy(3, location=1, scale=2, lower.tail=FALSE)
stats
计算柯西分布上尾概率
Stata 参考 · R 参考
display chi2(4,3)
stats::pchisq(3, df=4)
stats
计算卡方分布累积概率
Stata 参考 · R 参考
display chi2den(4,3)
stats::dchisq(3, df=4)
stats
计算卡方分布密度
Stata 参考 · R 参考
display chi2tail(4,3)
stats::pchisq(3, df=4, lower.tail=FALSE)
stats
计算卡方分布上尾概率
Stata 参考 · R 参考
corr2data x y, n(100)
stats::setNames(as.data.frame(MASS::mvrnorm(n=100,mu=c(0,0),Sigma=diag(2),empirical=TRUE)),c("x","y"))
MASS
生成样本矩精确符合指定值的伪数据
与 Stata 有差异: empirical=TRUE强制样本均值和协方差符合设定;此类伪数据不是独立随机抽样。
Stata 参考 · R 参考
drawnorm x y, n(100)
stats::setNames(as.data.frame(MASS::mvrnorm(n=100,mu=c(0,0),Sigma=diag(2))),c("x","y"))
MASS
联合生成独立标准正态变量列
与 Stata 有差异: 随机序列不同;R返回包含所生成变量列的数据框。
Stata 参考 · R 参考
display exponential(2,3)
stats::pexp(3, rate=1/2)
stats
计算指数分布累积概率
Stata 参考 · R 参考
display exponentialden(2,3)
stats::dexp(3, rate=1/2)
stats
计算指数分布密度
Stata 参考 · R 参考
display exponentialtail(2,3)
stats::pexp(3, rate=1/2, lower.tail=FALSE)
stats
计算指数分布上尾概率
Stata 参考 · R 参考
display gammaden(3,1,0,2)
stats::dgamma(2, shape=3)
stats
计算伽马分布密度
Stata 参考 · R 参考
display gammaden(3,2,1,5)
stats::dgamma(5-1, shape=3, scale=2)
stats
计算带位置参数的伽马密度
Stata 参考 · R 参考
display gammap(3,2)
stats::pgamma(2, shape=3)
stats
计算伽马分布累积概率
Stata 参考 · R 参考
display gammaptail(3,2)
stats::pgamma(2, shape=3, lower.tail=FALSE)
stats
计算伽马分布上尾概率
Stata 参考 · R 参考
display hypergeometric(20,8,5,3)
stats::phyper(3, m=8, n=12, k=5)
stats
计算超几何分布含边界下尾概率
Stata 参考 · R 参考
display hypergeometricp(20,8,5,3)
stats::dhyper(3, m=8, n=12, k=5)
stats
计算超几何分布概率质量
Stata 参考 · R 参考
display ibeta(2,3,0.4)
stats::pbeta(0.4, shape1=2, shape2=3)
stats
计算贝塔分布累积概率
Stata 参考 · R 参考
display ibetatail(2,3,0.4)
stats::pbeta(0.4, shape1=2, shape2=3, lower.tail=FALSE)
stats
计算贝塔分布上尾概率
Stata 参考 · R 参考
display invF(4,10,0.9)
stats::qf(0.9, df1=4, df2=10)
stats
计算F分布第90百分位数
Stata 参考 · R 参考
display invFtail(4,10,0.9)
stats::qf(0.9, df1=4, df2=10, lower.tail=FALSE)
stats
计算F分布上尾临界值
Stata 参考 · R 参考
display invbinomial(10,3,0.5)
stats::qbeta(0.5, shape1=4, shape2=7, lower.tail=FALSE)
stats
由二项累积概率反求成功概率
这些Stata逆函数反求的是分布参数,而非离散结果的分位数。
Stata 参考 · R 参考
display invbinomialtail(10,3,0.5)
stats::qbeta(0.5, shape1=3, shape2=8)
stats
由二项含边界上尾反求成功概率
这些Stata逆函数反求的是分布参数,而非离散结果的分位数。
Stata 参考 · R 参考
display invcauchy(1,2,0.9)
stats::qcauchy(0.9, location=1, scale=2)
stats
计算柯西分布第90百分位数
Stata 参考 · R 参考
display invcauchytail(1,2,0.9)
stats::qcauchy(0.9, location=1, scale=2, lower.tail=FALSE)
stats
计算柯西分布上尾临界值
Stata 参考 · R 参考
display invchi2(4,0.9)
stats::qchisq(0.9, df=4)
stats
计算卡方分布第90百分位数
Stata 参考 · R 参考
display invchi2tail(4,0.9)
stats::qchisq(0.9, df=4, lower.tail=FALSE)
stats
计算卡方分布上尾临界值
Stata 参考 · R 参考
display invexponential(2,0.9)
stats::qexp(0.9, rate=1/2)
stats
计算指数分布第90百分位数
Stata 参考 · R 参考
display invexponentialtail(2,0.9)
stats::qexp(0.9, rate=1/2, lower.tail=FALSE)
stats
计算指数分布上尾临界值
Stata 参考 · R 参考
display invgammap(3,0.9)
stats::qgamma(0.9, shape=3)
stats
计算伽马分布第90百分位数
Stata 参考 · R 参考
display invgammaptail(3,0.9)
stats::qgamma(0.9, shape=3, lower.tail=FALSE)
stats
计算伽马分布上尾临界值
Stata 参考 · R 参考
display invibeta(2,3,0.9)
stats::qbeta(0.9, shape1=2, shape2=3)
stats
计算贝塔分布第90百分位数
Stata 参考 · R 参考
display invibetatail(2,3,0.9)
stats::qbeta(0.9, shape1=2, shape2=3, lower.tail=FALSE)
stats
计算贝塔分布上尾临界值
Stata 参考 · R 参考
display invlogistic(0.8)
stats::qlogis(0.8)
stats
把概率转换为对数优势
Stata 参考 · R 参考
display invlogistic(1,2,0.9)
stats::qlogis(0.9, location=1, scale=2)
stats
计算逻辑斯蒂分布第90百分位数
Stata 参考 · R 参考
display invlogistictail(1,2,0.9)
stats::qlogis(0.9, location=1, scale=2, lower.tail=FALSE)
stats
计算逻辑斯蒂分布上尾临界值
Stata 参考 · R 参考
display invnF(4,20,2,0.9)
stats::qf(0.9, df1=4, df2=20, ncp=2)
stats
计算非中心F分布临界值
Stata 参考 · R 参考
display invnFtail(4,20,2,0.9)
stats::qf(0.9, df1=4, df2=20, ncp=2, lower.tail=FALSE)
stats
计算非中心F分布上尾临界值
Stata 参考 · R 参考
display invnbinomial(4,3,0.5)
stats::qbeta(0.5, shape1=4, shape2=4)
stats
由负二项累积概率反求成功概率
这些Stata逆函数反求的是分布参数,而非离散结果的分位数。
Stata 参考 · R 参考
display invnbinomialtail(4,3,0.5)
stats::qbeta(0.5, shape1=4, shape2=3, lower.tail=FALSE)
stats
由负二项含边界上尾反求成功概率
这些Stata逆函数反求的是分布参数,而非离散结果的分位数。
Stata 参考 · R 参考
display invnchi2(4,2,0.9)
stats::qchisq(0.9, df=4, ncp=2)
stats
计算非中心卡方分布临界值
Stata 参考 · R 参考
display invnchi2tail(4,2,0.9)
stats::qchisq(0.9, df=4, ncp=2, lower.tail=FALSE)
stats
计算非中心卡方分布上尾临界值
Stata 参考 · R 参考
display invnibeta(2,3,2,0.9)
stats::qbeta(0.9, shape1=2, shape2=3, ncp=2)
stats
计算非中心贝塔分布临界值
Stata 参考 · R 参考
display invnormal(0.9)
stats::qnorm(0.9)
stats
计算标准正态分布第90百分位数
Stata 参考 · R 参考
display invnt(20,2,0.9)
stats::qt(0.9, df=20, ncp=2)
stats
计算非中心t分布临界值
Stata 参考 · R 参考
display invnttail(20,2,0.9)
stats::qt(0.9, df=20, ncp=2, lower.tail=FALSE)
stats
计算非中心t分布上尾临界值
Stata 参考 · R 参考
display invpoisson(3,0.5)
stats::qgamma(0.5, shape=4, lower.tail=FALSE)
stats
由泊松累积概率反求均值
这些Stata逆函数反求的是分布参数,而非离散结果的分位数。
Stata 参考 · R 参考
display invpoissontail(3,0.5)
stats::qgamma(0.5, shape=3)
stats
由泊松含边界上尾反求均值
这些Stata逆函数反求的是分布参数,而非离散结果的分位数。
Stata 参考 · R 参考
display invt(10,0.9)
stats::qt(0.9, df=10)
stats
计算Student t分布第90百分位数
Stata 参考 · R 参考
display invttail(10,0.9)
stats::qt(0.9, df=10, lower.tail=FALSE)
stats
计算Student t分布上尾临界值
Stata 参考 · R 参考
display invtukeyprob(4,20,0.95)
stats::qtukey(0.95, nmeans=4, df=20)
stats
计算Tukey多重比较临界值
与 Stata 有差异: 采用qtukey的学生化极差分位数。R与Stata使用不同数值近似;已测试输入相差约2.5e-8,因此应按数值容差比较而非要求完全相等。
Stata 参考 · R 参考
display invweibull(2,3,0.9)
stats::qweibull(0.9, shape=2, scale=3)
stats
计算威布尔分布第90百分位数
Stata 参考 · R 参考
display invweibullph(2,0.5,0.9)
stats::qweibull(0.9, shape=2, scale=0.5^(-1/2))
stats
计算比例风险威布尔分位数
Stata 参考 · R 参考
display invweibullphtail(2,0.5,0.1)
stats::qweibull(0.1, shape=2, scale=0.5^(-1/2), lower.tail=FALSE)
stats
计算比例风险威布尔上尾分位数
Stata 参考 · R 参考
display invweibulltail(2,3,0.9)
stats::qweibull(0.9, shape=2, scale=3, lower.tail=FALSE)
stats
计算威布尔分布上尾临界值
Stata 参考 · R 参考
display lncauchyden(1,2,3)
stats::dcauchy(3, location=1, scale=2, log=TRUE)
stats
计算柯西分布对数密度
Stata 参考 · R 参考
display lnigammaden(3,2,4)
stats::dgamma(1/4,shape=3,rate=2,log=TRUE)-2*log(4)
stats
计算逆伽马分布对数密度
与 Stata 有差异: 使用倒数gamma变量变换及其对数Jacobian。须统一Stata的形状和尺度参数化;数值尾部下溢行为可能不同。
Stata 参考 · R 参考
matrix M = (0,0)
matrix V = I(2)
matrix X = (1,2)
display lnmvnormalden(M,V,X)
mvtnorm::dmvnorm(x=c(1,2),mean=c(0,0),sigma=diag(2),log=TRUE)
mvtnorm
计算多变量正态对数密度
与 Stata 有差异: 固定示例:均值M=(0,0),协方差V=I(2),求值向量X=(1,2)。
Stata 参考 · R 参考
display lnnormal(-8)
stats::pnorm(-8, log.p=TRUE)
stats
稳定计算正态分布极端对数概率
Stata 参考 · R 参考
display lnnormalden(3,1,2)
stats::dnorm(3, mean=1, sd=2, log=TRUE)
stats
计算指定均值和标准差的正态对数密度
Stata 参考 · R 参考
display logistic(0.7)
stats::plogis(0.7)
stats
把对数优势转换为概率
Stata 参考 · R 参考
display logistic(1,2,3)
stats::plogis(3, location=1, scale=2)
stats
计算逻辑斯蒂分布累积概率
Stata 参考 · R 参考
display logisticden(1,2,3)
stats::dlogis(3, location=1, scale=2)
stats
计算逻辑斯蒂分布密度
Stata 参考 · R 参考
display logistictail(1,2,3)
stats::plogis(3, location=1, scale=2, lower.tail=FALSE)
stats
计算逻辑斯蒂分布上尾概率
Stata 参考 · R 参考
display nF(4,20,2,1.5)
stats::pf(1.5, df1=4, df2=20, ncp=2)
stats
计算非中心F分布累积概率
Stata 参考 · R 参考
display nFden(4,20,2,1.5)
stats::df(1.5, df1=4, df2=20, ncp=2)
stats
计算非中心F分布密度
Stata 参考 · R 参考
display nFtail(4,20,2,1.5)
stats::pf(1.5, df1=4, df2=20, ncp=2, lower.tail=FALSE)
stats
计算非中心F分布上尾概率
Stata 参考 · R 参考
display nbetaden(2,3,2,0.4)
stats::dbeta(0.4, shape1=2, shape2=3, ncp=2)
stats
计算非中心贝塔分布密度
Stata 参考 · R 参考
display nbinomial(4,3,0.6)
stats::pnbinom(3, size=4, prob=0.6)
stats
计算负二项分布含边界下尾概率
Stata 参考 · R 参考
display nbinomialp(4,3,0.6)
stats::dnbinom(3, size=4, prob=0.6)
stats
计算负二项分布概率质量
Stata 参考 · R 参考
display nbinomialtail(4,3,0.6)
stats::pnbinom(2, size=4, prob=0.6, lower.tail=FALSE)
stats
计算负二项分布含边界上尾概率
Stata上尾概率包含k;R的lower.tail=FALSE不包含其q参数值,因此应使用k-1。
Stata 参考 · R 参考
display nchi2(4,2,3)
stats::pchisq(3, df=4, ncp=2)
stats
计算非中心卡方分布累积概率
Stata 参考 · R 参考
display nchi2den(4,2,3)
stats::dchisq(3, df=4, ncp=2)
stats
计算非中心卡方分布密度
Stata 参考 · R 参考
display nchi2tail(4,2,3)
stats::pchisq(3, df=4, ncp=2, lower.tail=FALSE)
stats
计算非中心卡方分布上尾概率
Stata 参考 · R 参考
display nibeta(2,3,2,0.4)
stats::pbeta(0.4, shape1=2, shape2=3, ncp=2)
stats
计算非中心贝塔分布累积概率
Stata 参考 · R 参考
display normal(0.7)
stats::pnorm(0.7)
stats
计算标准正态分布累积概率
Stata 参考 · R 参考
display normalden(0.7)
stats::dnorm(0.7)
stats
计算标准正态分布密度
Stata 参考 · R 参考
display normalden(3,1,2)
stats::dnorm(3, mean=1, sd=2)
stats
计算指定均值和标准差的正态密度
Stata 参考 · R 参考
display npnF(4,20,2,0.5)
stats::uniroot(function(ncp) stats::pf(2,df1=4,df2=20,ncp=ncp)-0.5,c(0,50),tol=1e-10)$root
stats
由非中心F概率反求非中心参数
与 Stata 有差异: 在所示区间内数值反解非中心F的CDF。其他输入可能需要不同区间;求解容差不同于Stata。
Stata 参考 · R 参考
display npnchi2(4,8,0.5)
stats::uniroot(function(ncp) stats::pchisq(8,df=4,ncp=ncp)-0.5,c(0,50),tol=1e-10)$root
stats
由非中心卡方概率反求非中心参数
与 Stata 有差异: 在所示非中心参数区间内数值反解非中心卡方CDF。其他输入可能需要更宽区间;Stata使用自身的定义域验证和反解。
Stata 参考 · R 参考
display npnt(20,2,0.5)
stats::uniroot(function(ncp) stats::pt(2,df=20,ncp=ncp)-0.5,c(0,4),tol=1e-10)$root
stats
由非中心t概率反求非中心参数
与 Stata 有差异: 在所示区间内数值反解非中心t的CDF。负值或更大的非中心参数需要不同边界;求解容差不同于Stata。
Stata 参考 · R 参考
display nt(20,2,1.5)
stats::pt(1.5, df=20, ncp=2)
stats
计算非中心t分布累积概率
Stata 参考 · R 参考
display nttail(20,2,1.5)
stats::pt(1.5, df=20, ncp=2, lower.tail=FALSE)
stats
计算非中心t分布上尾概率
Stata 参考 · R 参考
display poisson(2,3)
stats::ppois(3, lambda=2)
stats
计算泊松分布含边界下尾概率
Stata 参考 · R 参考
display poissonp(2,3)
stats::dpois(3, lambda=2)
stats
计算泊松分布概率质量
Stata 参考 · R 参考
display poissontail(2,3)
stats::ppois(2, lambda=2, lower.tail=FALSE)
stats
计算泊松分布含边界上尾概率
Stata上尾概率包含k;R的lower.tail=FALSE不包含其q参数值,因此应使用k-1。
Stata 参考 · R 参考
generate draw = rbeta(2,3)
stats::rbeta(1000,2,3)
stats
模拟贝塔随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rbinomial(10,0.4)
stats::rbinom(1000,10,0.4)
stats
模拟二项随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rcauchy(1,2)
stats::rcauchy(1000,1,2)
stats
模拟柯西随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rchi2(4)
stats::rchisq(1000,4)
stats
模拟卡方随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rexponential(2)
stats::rexp(1000,rate=1/2)
stats
模拟指数随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rgamma(3,2)
stats::rgamma(1000,shape=3,scale=2)
stats
模拟伽马随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rhypergeometric(20,8,5)
stats::rhyper(1000,m=8,n=12,k=5)
stats
模拟超几何随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rlogistic(1,2)
stats::rlogis(1000,location=1,scale=2)
stats
模拟逻辑斯蒂随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rnbinomial(4,0.6)
stats::rnbinom(1000,size=4,prob=0.6)
stats
模拟负二项随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rpoisson(2)
stats::rpois(1000,lambda=2)
stats
模拟泊松随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rt(20)
stats::rt(1000,df=20)
stats
模拟t随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
generate draw = rweibull(2,3)
stats::rweibull(1000,shape=2,scale=3)
stats
模拟威布尔随机变量
与 Stata 有差异: 相同种子不会使Stata和R生成相同的随机序列。
Stata 参考 · R 参考
display t(10,1.2)
stats::pt(1.2, df=10)
stats
计算Student t分布累积概率
Stata 参考 · R 参考
display tden(10,1.2)
stats::dt(1.2, df=10)
stats
计算Student t分布密度
Stata 参考 · R 参考
display ttail(10,1.2)
stats::pt(1.2, df=10, lower.tail=FALSE)
stats
计算Student t分布上尾概率
Stata 参考 · R 参考
display tukeyprob(4,20,3)
stats::ptukey(3, nmeans=4, df=20)
stats
计算学生化极差累积概率
Stata 参考 · R 参考
display weibull(2,3,1,5)
stats::pweibull(5-1, shape=2, scale=3)
stats
计算带位置参数的威布尔累积概率
Stata 参考 · R 参考
display weibull(2,3,4)
stats::pweibull(4, shape=2, scale=3)
stats
计算威布尔分布累积概率
Stata 参考 · R 参考
display weibullden(2,3,4)
stats::dweibull(4, shape=2, scale=3)
stats
计算威布尔分布密度
Stata 参考 · R 参考
display weibullph(2,0.5,3)
stats::pweibull(3, shape=2, scale=0.5^(-1/2))
stats
使用比例风险威布尔参数化
Stata 参考 · R 参考
display weibullphden(2,0.5,3)
stats::dweibull(3, shape=2, scale=0.5^(-1/2))
stats
计算比例风险威布尔密度
Stata 参考 · R 参考
display weibullphtail(2,0.5,3)
stats::pweibull(3, shape=2, scale=0.5^(-1/2), lower.tail=FALSE)
stats
计算比例风险威布尔生存概率
Stata 参考 · R 参考
display weibulltail(2,3,4)
stats::pweibull(4, shape=2, scale=3, lower.tail=FALSE)
stats
计算威布尔分布上尾概率
Stata 参考 · R 参考

模型与估计

Stata R 用途、差异及来源
betareg share x, link(cloglog)
betareg::betareg(share~x,data=data,link="cloglog",type="ML",link.phi="log")
betareg
使用cloglog均值连接拟合贝塔回归
与 Stata 有差异: 采用常规ML及精度参数的log链接,匹配Stata的slink(log)。不指定link.phi="log"时,betareg在恒等尺度报告常数phi,Stata则报告ln(phi)。响应须严格位于(0,1)内。
Stata 参考 · R 参考
betareg share x, link(logit)
betareg::betareg(share~x,data=data,link="logit",type="ML",link.phi="log")
betareg
使用logit均值连接拟合贝塔回归
与 Stata 有差异: 采用常规ML及精度参数的log链接,匹配Stata的slink(log)。不指定link.phi="log"时,betareg在恒等尺度报告常数phi,Stata则报告ln(phi)。响应须严格位于(0,1)内。
Stata 参考 · R 参考
betareg share x, link(probit)
betareg::betareg(share~x,data=data,link="probit",type="ML",link.phi="log")
betareg
使用probit均值连接拟合贝塔回归
与 Stata 有差异: 采用常规ML及精度参数的log链接,匹配Stata的slink(log)。不指定link.phi="log"时,betareg在恒等尺度报告常数phi,Stata则报告ln(phi)。响应须严格位于(0,1)内。
Stata 参考 · R 参考
betareg share x, scale(z) slink(log)
betareg::betareg(share~x|z,data=data,link="logit",link.phi="log",type="ML")
betareg
使用协变量建模贝塔回归精度参数
与 Stata 有差异: 对精度参数使用对数连接;数值比较前需统一Stata的scale连接参数化。
Stata 参考 · R 参考
binreg b i.g, or
stats::glm(b ~ factor(g),data=data,family=stats::binomial(link="logit"))
stats
拟合优势比尺度二项回归
与 Stata 有差异: 风险比和风险差模型可能出现边界或收敛问题,需检查拟合概率。
Stata 参考 · R 参考
binreg b i.g, rd
stats::glm(b ~ factor(g),data=data,family=stats::binomial(link="identity"))
stats
拟合风险差尺度二项回归
与 Stata 有差异: 风险比和风险差模型可能出现边界或收敛问题,需检查拟合概率。
Stata 参考 · R 参考
binreg b i.g, rr
stats::glm(b ~ factor(g),data=data,family=stats::binomial(link="log"))
stats
拟合风险比尺度二项回归
与 Stata 有差异: 风险比和风险差模型可能出现边界或收敛问题,需检查拟合概率。
Stata 参考 · R 参考
boxcox y x z, model(lhsonly)
MASS::boxcox(y ~ x+z,data=data,lambda=seq(-1,1,by=0.1),plotit=FALSE)
MASS
剖面估计Box-Cox响应变换参数
对响应变换参数进行网格剖面估计;不覆盖Stata全部解释变量变换模型。
Stata 参考 · R 参考
bsqreg y x z, reps(99)
{ fit <- quantreg::rq(y~x+z,data=data,tau=0.5); summary(fit,se="boot",R=99) }
quantreg
使用自助法估计分位数回归推断
与 Stata 有差异: 用99次自助重复进行分位数回归推断。R与Stata的随机流及重抽样实现不同,因此自助标准误不完全相同。
Stata 参考 · R 参考
cloglog b x z
stats::glm(b ~ x + z,data=data,family=stats::binomial(link="cloglog"))
stats
拟合cloglog回归
与 Stata 有差异: R采用互补log-log链接。须统一事件类别和完整样本;GLM结果对象和收敛容差不同于Stata的cloglog。
Stata 参考 · R 参考
cloglog b x z, noconstant
stats::glm(b ~ x + z - 1,data=data,family=stats::binomial(link="cloglog"))
stats
拟合无截距cloglog模型
与 Stata 有差异: R采用互补log-log链接。须统一事件类别和完整样本;GLM结果对象和收敛容差不同于Stata的cloglog。
Stata 参考 · R 参考
constraint define 1 x = z
cnsreg y x z, constraints(1)
{ fit <- stats::lm(y~I(x+z),data=data); c(intercept=unname(stats::coef(fit)[1]),x=unname(stats::coef(fit)[2]),z=unname(stats::coef(fit)[2])) }
stats
在两个系数相等的约束下拟合最小二乘回归
固定流程。先在Stata中定义constraint 1 x = z;重参数化施加此固定线性约束,协方差报告需进行对应系数变换。
Stata 参考 · R 参考
constraint define 1 x = z
L <- matrix(c(0,1,-1),nrow=1,dimnames=list(NULL,c("intercept","x","z")))
stats
把线性等式约束表示为矩阵
固定流程:L beta = 0表示x与z系数相等;拟合程序需实际施加约束。
Stata 参考 · R 参考
eivreg y x, reliability(x 0.8)
{ slope <- stats::cov(data$x,data$y)/(0.8*stats::var(data$x)); c(intercept=mean(data$y)-slope*mean(data$x),x=slope) }
stats
按已知解释变量信度校正简单回归斜率
仅适用于单个存在经典独立测量误差且信度已知的解释变量;仅计算系数,不提供EIV标准误。
Stata 参考 · R 参考
fracreg logit share x
{ fit <- stats::glm(share ~ x,data=data,family=stats::quasibinomial(link="logit")); lmtest::coeftest(fit,vcov.=sandwich::vcovHC(fit,type="HC0"),df=Inf) }
sandwich
使用三明治推断拟合分数logit回归
与 Stata 有差异: 准二项拟合避免非整数成功次数警告;此例显式使用三明治推断,小样本校正可能不同。
Stata 参考 · R 参考
fracreg probit share x
{ fit <- stats::glm(share ~ x,data=data,family=stats::quasibinomial(link="probit")); lmtest::coeftest(fit,vcov.=sandwich::vcovHC(fit,type="HC0"),df=Inf) }
sandwich
使用三明治推断拟合分数probit回归
与 Stata 有差异: 准二项拟合避免非整数成功次数警告;此例显式使用三明治推断,小样本校正可能不同。
Stata 参考 · R 参考
glm b x z, family(binomial) link(cloglog)
stats::glm(b ~ x + z, data=data, family=stats::binomial(link="cloglog"))
stats
拟合二项互补对数对数连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm b x z, family(binomial) link(logit)
stats::glm(b ~ x + z, data=data, family=stats::binomial())
stats
拟合二项logit连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm b x z, family(binomial) link(probit)
stats::glm(b ~ x + z, data=data, family=stats::binomial(link="probit"))
stats
拟合二项probit连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm count x z, family(poisson) link(log)
stats::glm(count ~ x + z, data=data, family=stats::poisson())
stats
拟合泊松对数连接广义线性模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm count x, family(poisson) link(identity)
stats::glm(count ~ x, data=data, family=stats::poisson(link="identity"))
stats
拟合泊松恒等连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm events x, family(binomial trials) link(logit)
stats::glm(cbind(events,trials-events) ~ x,data=data,family=stats::binomial())
stats
拟合成功次数与试验次数形式的分组二项模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm y x z, family(gamma) link(log)
stats::glm(y ~ x + z, data=data, family=stats::Gamma(link="log"))
stats
为正值结果拟合伽马对数连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm y x z, family(gaussian) link(identity)
stats::glm(y ~ x + z, data=data, family=stats::gaussian())
stats
拟合高斯恒等连接广义线性模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm y x z, family(gaussian) link(log)
stats::glm(y ~ x + z, data=data, family=stats::gaussian(link="log"))
stats
拟合高斯对数连接广义线性模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm y x, family(gamma) link(identity)
stats::glm(y ~ x, data=data, family=stats::Gamma(link="identity"))
stats
拟合伽马恒等连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm y x, family(gamma) link(inverse)
stats::glm(y ~ x, data=data, family=stats::Gamma(link="inverse"))
stats
拟合伽马倒数连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm y x, family(igaussian) link(identity)
stats::glm(y ~ x, data=data, family=stats::inverse.gaussian(link="identity"))
stats
拟合逆高斯恒等连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
glm y x, family(igaussian) link(log)
stats::glm(y ~ x, data=data, family=stats::inverse.gaussian(link="log"))
stats
拟合逆高斯对数连接模型
与 Stata 有差异: 显式指定分布族和链接。即使拟合均值一致,R与Stata的离散参数缩放和检验参考分布也可能不同;比较标准误前须统一样本和尺度选项。
Stata 参考 · R 参考
hetregress y x, het(z)
nlme::gls(y~x,data=data,weights=nlme::varExp(form=~z),method="ML")
nlme
拟合带乘性异方差的正态均值模型
与 Stata 有差异: nlme将标准差建模为exp(theta*z),因此Stata对数方差模型中z的系数为2*theta。
Stata 参考 · R 参考
intreg lower upper x z
survival::survreg(survival::Surv(lower,upper,type="interval2")~x+z,data=data,dist="gaussian")
survival
对区间取值结果拟合正态回归
与 Stata 有差异: 将survreg用作截面结果的高斯区间似然计算工具,不赋予事件时间解释。
Stata 参考 · R 参考
iqreg y x z, quantiles(25 75)
{ fit <- quantreg::rq(y ~ x+z,data=data,tau=c(0.25,0.75)); stats::coef(fit)[,2]-stats::coef(fit)[,1] }
quantreg
估计四分位距的回归系数
仅计算系数;标准误需对两个分位数模型联合重抽样。
Stata 参考 · R 参考
logistic b x z
{ fit <- stats::glm(b ~ x+z,data=data,family=stats::binomial()); exp(stats::coef(fit)) }
stats
报告逻辑回归优势比
与 Stata 有差异: 将二项logit系数取指数得到优势比。仅返回点估计,不含Stata的logistic所打印的置信区间和检验。
Stata 参考 · R 参考
logit b x z
stats::glm(b ~ x + z,data=data,family=stats::binomial(link="logit"))
stats
拟合logit回归
与 Stata 有差异: R使用logit链接的二项GLM,返回对数优势尺度系数。须统一二元编码和完整样本;Stata的迭代诊断及结果存储结构不同。
Stata 参考 · R 参考
logit b x z, noconstant
stats::glm(b ~ x + z - 1,data=data,family=stats::binomial(link="logit"))
stats
拟合无截距logit模型
与 Stata 有差异: R使用logit链接的二项GLM,返回对数优势尺度系数。须统一二元编码和完整样本;Stata的迭代诊断及结果存储结构不同。
Stata 参考 · R 参考
mlexp (lnnormalden(y,{mu},exp({lnsigma})))
stats::optim(c(mu=mean(data$y),log_sigma=log(stats::sd(data$y))),function(par) -sum(stats::dnorm(data$y,mean=par[1],sd=exp(par[2]),log=TRUE)),method="BFGS",hessian=TRUE)
stats
最大化显式定义的正态似然
与 Stata 有差异: R对log sigma优化以确保正值;使用exp()变换回标准差。
Stata 参考 · R 参考
mlogit g x z, baseoutcome(4)
nnet::multinom(stats::relevel(factor(g), ref = "4") ~ x+z,data=data,trace=FALSE)
nnet
指定参照结果类别拟合多项logit模型
与 Stata 有差异: 将结果类别4重设为R因子的首个水平,匹配baseoutcome(4)。系数标签和优化准则不同;须保留相同观测和类别支持。
Stata 参考 · R 参考
nbreg count x z
MASS::glm.nb(count ~ x+z,data=data)
MASS
拟合NB2负二项回归
与 Stata 有差异: 两者均采用NB2方差mu+alpha*mu^2;MASS的theta等于1/alpha。
Stata 参考 · R 参考
nl (y = {a=1} + {b=2}*x/({c=1}+x))
stats::nls(y ~ a+b*x/(c+x),data=data,start=list(a=1,b=2,c=1))
stats
拟合非线性饱和响应曲线
与 Stata 有差异: 从给定初值拟合所示非线性均值函数。nls与Stata的nl使用不同收敛控制,可能得到不同局部解。
Stata 参考 · R 参考
nl (y = {a=2}*exp({b=0.2}*x))
stats::nls(y ~ a*exp(b*x),data=data,start=list(a=2,b=0.2))
stats
拟合非线性指数均值曲线
与 Stata 有差异: 从给定初值拟合所示非线性均值函数。nls与Stata的nl使用不同收敛控制,可能得到不同局部解。
Stata 参考 · R 参考
ologit y x z
MASS::polr(y ~ x+z,data=data,method="logistic",Hess=TRUE)
MASS
拟合有序logit回归
与 Stata 有差异: MASS使用累积连接截距;比较软件结果时需核对切点和斜率的符号约定。
Stata 参考 · R 参考
oprobit y x z
MASS::polr(y ~ x+z,data=data,method="probit",Hess=TRUE)
MASS
拟合有序probit回归
与 Stata 有差异: MASS使用累积连接截距;比较软件结果时需核对切点和斜率的符号约定。
Stata 参考 · R 参考
poisson count x z, exposure(exposure)
stats::glm(count ~ x+z+offset(log(exposure)),data=data,family=stats::poisson())
stats
通过暴露量拟合泊松发生率
与 Stata 有差异: 所示曝光量以对数offset显式纳入,曝光量必须为正。R返回glm对象或指数化系数,而非Stata估计表;须统一过度离散和稳健方差选项。
Stata 参考 · R 参考
poisson count x z, irr
{ fit <- stats::glm(count~x+z,data=data,family=stats::poisson()); exp(stats::coef(fit)) }
stats
报告泊松发生率比
与 Stata 有差异: 所示曝光量以对数offset显式纳入,曝光量必须为正。R返回glm对象或指数化系数,而非Stata估计表;须统一过度离散和稳健方差选项。
Stata 参考 · R 参考
poisson count x z, noconstant
stats::glm(count ~ x+z-1,data=data,family=stats::poisson())
stats
拟合无截距泊松回归
与 Stata 有差异: 所示曝光量以对数offset显式纳入,曝光量必须为正。R返回glm对象或指数化系数,而非Stata估计表;须统一过度离散和稳健方差选项。
Stata 参考 · R 参考
probit b x z
stats::glm(b ~ x + z,data=data,family=stats::binomial(link="probit"))
stats
拟合probit回归
与 Stata 有差异: R使用probit链接的二项GLM。须统一二元编码和完整样本;GLM结果对象和收敛容差不同于Stata的probit。
Stata 参考 · R 参考
probit b x z, noconstant
stats::glm(b ~ x + z - 1,data=data,family=stats::binomial(link="probit"))
stats
拟合无截距probit模型
与 Stata 有差异: R使用probit链接的二项GLM。须统一二元编码和完整样本;GLM结果对象和收敛容差不同于Stata的probit。
Stata 参考 · R 参考
qreg y x z, quantile(25)
quantreg::rq(y ~ x+z,data=data,tau=0.25)
quantreg
拟合条件第25百分位回归
与 Stata 有差异: 拟合所选条件分位数。rq与Stata的qreg使用不同的优化程序和默认协方差估计;系数一致不代表标准误对应。
Stata 参考 · R 参考
qreg y x z, quantile(75)
quantreg::rq(y ~ x+z,data=data,tau=0.75)
quantreg
拟合条件第75百分位回归
与 Stata 有差异: 拟合所选条件分位数。rq与Stata的qreg使用不同的优化程序和默认协方差估计;系数一致不代表标准误对应。
Stata 参考 · R 参考
regress y c.x##c.x
stats::lm(y ~ x + I(x^2), data=data)
stats
拟合二次项回归
与 Stata 有差异: OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
Stata 参考 · R 参考
regress y c.x##c.z
stats::lm(y ~ x * z, data=data)
stats
加入两个连续主效应及交互项
与 Stata 有差异: OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
Stata 参考 · R 参考
regress y c.x##i.g
stats::lm(y ~ x * factor(g), data=data)
stats
拟合不同组的线性斜率
与 Stata 有差异: OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
Stata 参考 · R 参考
regress y i.g c.x
stats::lm(y ~ factor(g) + x, data=data)
stats
在线性回归中控制分类变量
与 Stata 有差异: OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
Stata 参考 · R 参考
regress y x [aweight=w]
stats::lm(y ~ x, data=data, weights=w)
stats
拟合分析权重最小二乘回归
与 Stata 有差异: 权重与方差的倒数成比例。比较软件结果前需核对权重尺度和残差自由度。
Stata 参考 · R 参考
regress y x z if b == 1
stats::lm(y ~ x + z, data=data, subset=b == 1)
stats
在指定子样本中拟合线性回归
与 Stata 有差异: OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
Stata 参考 · R 参考
regress y x z, beta
{ fit <- stats::lm(y ~ x + z, data=data); stats::coef(fit)[c("x","z")] * vapply(data[c("x","z")], stats::sd, numeric(1)) / stats::sd(data$y) }
stats
报告标准化线性回归系数
与 Stata 有差异: OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
Stata 参考 · R 参考
regress y x z, noconstant
stats::lm(y ~ x + z - 1, data=data)
stats
拟合无截距线性回归
与 Stata 有差异: OLS系数对应要求使用相同的完整观测样本、因子对比和权重。R返回lm对象,其结构不同于Stata的系数表和存储估计。
Stata 参考 · R 参考
regress y x z, vce(cluster g)
{ fit <- stats::lm(y ~ x + z, data = data, subset = !is.na(g)); lmtest::coeftest(fit, vcov. = sandwich::vcovCL(fit, cluster = ~g, type = "HC1"), df = length(unique(stats::expand.model.frame(fit, ~g)$g)) - 1L) }
sandwich
使用单向聚类标准误和聚类自由度
与 Stata 有差异: 演示样本只有三个聚类;实际推断需要足够多的独立聚类。
Stata 参考 · R 参考
regress y x z, vce(hc2)
{ fit <- stats::lm(y~x+z,data=data); lmtest::coeftest(fit, vcov.=sandwich::vcovHC(fit,type="HC2")) }
sandwich
报告HC2异方差稳健线性回归推断
与 Stata 有差异: 系数仍为最小二乘估计;此例显式选择协方差校正类型。
Stata 参考 · R 参考
regress y x z, vce(hc3)
{ fit <- stats::lm(y~x+z,data=data); lmtest::coeftest(fit, vcov.=sandwich::vcovHC(fit,type="HC3")) }
sandwich
报告HC3异方差稳健线性回归推断
与 Stata 有差异: 系数仍为最小二乘估计;此例显式选择协方差校正类型。
Stata 参考 · R 参考
regress y x z, vce(robust)
{ fit <- stats::lm(y~x+z,data=data); lmtest::coeftest(fit, vcov.=sandwich::vcovHC(fit,type="HC1")) }
sandwich
报告HC1异方差稳健线性回归推断
与 Stata 有差异: 系数仍为最小二乘估计;此例显式选择协方差校正类型。
Stata 参考 · R 参考
rreg y x z
MASS::rlm(y ~ x+z,data=data,psi=MASS::psi.bisquare,init="lts",maxit=100)
MASS
拟合抗异常值双权重回归
工作流程对应:Stata的rreg使用自己的筛选和迭代顺序,系数不保证相同。
Stata 参考 · R 参考
sqreg y x z, quantiles(25 50 75)
quantreg::rq(y ~ x+z,data=data,tau=c(0.25,0.5,0.75))
quantreg
同时拟合多个条件分位数
此例拟合系数;Stata的sqreg还自助估计联合协方差,联合推断需使用共享重抽样。
Stata 参考 · R 参考
tobit y x z, ll(0)
AER::tobit(y~x+z,data=data,left=0)
AER
拟合左删失正态Tobit模型
与 Stata 有差异: 使用显式左和或右删失界限。AER返回基于survreg的高斯删失模型;尺度参数报告和系数表推断不同于Stata。
Stata 参考 · R 参考
tobit y x z, ll(0) ul(2)
AER::tobit(y~x+z,data=data,left=0,right=2)
AER
拟合双界限删失正态模型
与 Stata 有差异: 使用显式左和或右删失界限。AER返回基于survreg的高斯删失模型;尺度参数报告和系数表推断不同于Stata。
Stata 参考 · R 参考
tobit y x z, ul(2)
AER::tobit(y~x+z,data=data,left=-Inf,right=2)
AER
拟合右删失正态Tobit模型
与 Stata 有差异: 使用显式左和或右删失界限。AER返回基于survreg的高斯删失模型;尺度参数报告和系数表推断不同于Stata。
Stata 参考 · R 参考
zinb count x, inflate(z)
pscl::zeroinfl(count~x|z,data=data,dist="negbin",link="logit")
pscl
拟合零膨胀NB2计数模型
与 Stata 有差异: NB2部分中的负二项theta参数等于Stata alpha的倒数。
Stata 参考 · R 参考
zip count x, inflate(z)
pscl::zeroinfl(count~x|z,data=data,dist="poisson",link="logit")
pscl
拟合采用logit零膨胀部分的零膨胀泊松模型
与 Stata 有差异: 拟合所示零膨胀Poisson模型,分别指定计数和膨胀方程。须统一膨胀链接、offset和完整样本;优化程序及系数标签不同。
Stata 参考 · R 参考
zip count x, inflate(z) probit
pscl::zeroinfl(count~x|z,data=data,dist="poisson",link="probit")
pscl
拟合采用probit零膨胀部分的零膨胀泊松模型
与 Stata 有差异: 拟合所示零膨胀Poisson模型,分别指定计数和膨胀方程。须统一膨胀链接、offset和完整样本;优化程序及系数标签不同。
Stata 参考 · R 参考

估计后分析与诊断

Stata R 用途、差异及来源
brier b p
mean((data$b-data$p)^2)
stats
计算总体Brier均方概率评分
与 Stata 有差异: 此例仅返回总体评分;Stata的brier还报告分解分量。
Stata 参考 · R 参考
dfbeta x
stats::dfbetas(fit)[,"x"]
stats
计算删除观测对指定斜率的标准化影响
与 Stata 有差异: 返回dfbetas中x的标准化删点系数诊断;须与Stata模型统一系数顺序、缺失行和诊断名称。
Stata 参考 · R 参考
estat hettest x, iid
lmtest::bptest(fit,varformula=~x,data=data,studentize=TRUE)
lmtest
用学生化统计量检验与指定变量相关的异方差
与 Stata 有差异: 采用学生化Koenker版Breusch-Pagan检验,对应所示iid变体。须统一辅助回归变量和估计样本;bptest默认值不同于Stata默认hettest。
Stata 参考 · R 参考
estat hettest, rhs
lmtest::bptest(fit,studentize=FALSE)
lmtest
运行经典Breusch-Pagan异方差检验
与 Stata 有差异: studentize=FALSE选择正态理论版本;bptest默认使用Koenker版本。
Stata 参考 · R 参考
estat ic
c(AIC=stats::AIC(fit),BIC=stats::BIC(fit))
stats
计算惩罚似然模型评价准则
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estat imtest, white
lmtest::bptest(fit,varformula=~x+z+I(x^2)+I(z^2)+x:z,data=data,studentize=TRUE)
lmtest
运行White形式辅助回归异方差检验
此例仅对应White异方差分量,不包含完整的信息矩阵分解。
Stata 参考 · R 参考
estat ovtest
lmtest::resettest(fit,power=2:4,type="fitted")
lmtest
使用拟合值幂次运行Ramsey RESET检验
与 Stata 有差异: 按所示代码对拟合值或解释变量的二至四次幂实施RESET。因子解释变量展开和辅助项秩不足处理可能不同于Stata。
Stata 参考 · R 参考
estat ovtest, rhs
lmtest::resettest(fit,power=2:4,type="regressor")
lmtest
使用解释变量幂次运行RESET检验
与 Stata 有差异: 按所示代码对拟合值或解释变量的二至四次幂实施RESET。因子解释变量展开和辅助项秩不足处理可能不同于Stata。
Stata 参考 · R 参考
estat summarize
summary(stats::model.frame(fit))
stats
汇总实际估计样本中的变量
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estat vce
stats::vcov(fit)
stats
提取回归系数协方差矩阵
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estat vce, correlation
stats::cov2cor(stats::vcov(fit))
stats
提取系数估计之间的相关系数
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estat vif
car::vif(fit)
car
计算最小二乘模型方差膨胀因子
与 Stata 有差异: car对单自由度项返回普通VIF,对多参数项返回广义VIF。Stata的estat vif报告列层面VIF,因子项输出不能直接互换。
Stata 参考 · R 参考
estimates dir
names(models)
stats
列出已保存模型名称
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estimates replay
summary(fit)
stats
重新显示线性模型摘要
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estimates restore model1
fit <- models[["model1"]]
stats
从模型集合恢复指定模型
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estimates save model1
{ path <- tempfile(fileext=".rds"); saveRDS(fit,path); readRDS(path) }
base
保存并重新载入拟合模型对象
此例写入R临时文件;长期保存应选择明确的项目路径。
Stata 参考 · R 参考
estimates stats model1 model2
do.call(stats::AIC,unname(models))
stats
比较已保存模型的AIC
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estimates store model1
model1 <- fit
stats
按名称保存拟合模型
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
estimates table model1 model2, b se
lapply(models,function(m) summary(m)$coefficients[,1:2,drop=FALSE])
stats
比较不同模型的系数与标准误
R以拟合对象保存模型;示例中的模型名称是固定流程标签。
Stata 参考 · R 参考
lincom x + z
{ L <- c(0,1,1); c(estimate=sum(L*stats::coef(fit)),se=sqrt(drop(t(L)%*%stats::vcov(fit)%*%L))) }
stats
估计两个斜率之和及标准误
与 Stata 有差异: 对比向量假定系数顺序为截距、x、z。仅返回估计及按协方差计算的标准误;Stata还打印检验和置信限。
Stata 参考 · R 参考
lincom x - z
{ L <- c(0,1,-1); c(estimate=sum(L*stats::coef(fit)),se=sqrt(drop(t(L)%*%stats::vcov(fit)%*%L))) }
stats
估计两个斜率之差及标准误
与 Stata 有差异: 对比向量假定系数顺序为截距、x、z。仅返回估计及按协方差计算的标准误;Stata还打印检验和置信限。
Stata 参考 · R 参考
linktest
{ data$hat <- stats::fitted(fit); stats::lm(y ~ hat+I(hat^2),data=data) }
stats
通过拟合值及平方项检查模型设定
此例用于最小二乘模型;其他模型的连接检验需重新拟合对应分布族。
Stata 参考 · R 参考
lrtest reduced full
lmtest::lrtest(reduced,full)
lmtest
比较嵌套的最大似然模型
与 Stata 有差异: 固定流程。
Stata 参考 · R 参考
margins, at(x=(2 3 4))
vapply(c(2,3,4),function(value) { newdata <- data; newdata$x <- value; mean(stats::predict(fit,newdata=newdata,type="response")) },numeric(1))
stats
在指定协变量值处计算预测
与 Stata 有差异: 在每个x取值处,按z的实际观测分布对预测值取平均。
Stata 参考 · R 参考
margins, dydx(x)
{ X <- stats::model.matrix(fit); beta <- stats::coef(fit); p <- stats::fitted(fit); gradient <- beta["x"]*colMeans(X*as.vector(p*(1-p)*(1-2*p))); gradient["x"] <- gradient["x"]+mean(p*(1-p)); c(estimate=unname(beta["x"]*mean(p*(1-p))),se=sqrt(drop(t(gradient)%*%stats::vcov(fit)%*%gradient))) }
stats
计算连续解释变量的平均边际效应
与 Stata 有差异: 使用已拟合GLM及其估计数据;需明确选择参照网格与平均规则。
Stata 参考 · R 参考
margins, dydx(x) atmeans
{ X <- colMeans(stats::model.matrix(fit)); beta <- stats::coef(fit); p <- stats::plogis(sum(X*beta)); c(estimate=unname(beta["x"]*p*(1-p))) }
stats
在协变量均值处计算边际效应
与 Stata 有差异: 返回协变量均值处的导数;标准误需另外计算Delta方法梯度。
Stata 参考 · R 参考
margins, expression(predict(xb))
{ L <- colMeans(stats::model.matrix(fit)); c(estimate=sum(L*stats::coef(fit)),se=sqrt(drop(t(L)%*%stats::vcov(fit)%*%L))) }
stats
计算线性指数尺度的平均预测
与 Stata 有差异: 使用已拟合GLM及其估计数据;需明确选择参照网格与平均规则。
Stata 参考 · R 参考
nlcom _b[x]/_b[z]
car::deltaMethod(fit,"x / z")
car
使用Delta方法估计斜率比
与 Stata 有差异: 对具名已拟合系数采用一阶delta方法。返回变换估计和标准误;Stata还打印参考检验及置信限。
Stata 参考 · R 参考
nlcom exp(_b[x])
car::deltaMethod(fit,"exp(x)")
car
使用Delta方法估计指数化斜率
与 Stata 有差异: 对具名已拟合系数采用一阶delta方法。返回变换估计和标准误;Stata还打印参考检验及置信限。
Stata 参考 · R 参考
predict result, cooksd
data$result <- stats::cooks.distance(fit)
stats
计算Cook影响距离
与 Stata 有差异: 先运行fit <- lm(y ~ x + z, data=data)。
Stata 参考 · R 参考
predict result, deviance
data$result <- stats::residuals(fit,type="deviance")
stats
计算二项模型偏差残差
与 Stata 有差异: 在二项响应广义线性模型拟合后使用;预测选项因模型而异。
Stata 参考 · R 参考
predict result, dfits
data$result <- stats::dffits(fit)
stats
计算DFFITS影响统计量
与 Stata 有差异: 先运行fit <- lm(y ~ x + z, data=data)。
Stata 参考 · R 参考
predict result, hat
data$result <- stats::hatvalues(fit)
stats
计算杠杆值
与 Stata 有差异: 先运行fit <- lm(y ~ x + z, data=data)。
Stata 参考 · R 参考
predict result, pearson
data$result <- stats::residuals(fit,type="pearson")
stats
计算二项模型Pearson残差
与 Stata 有差异: 在二项响应广义线性模型拟合后使用;预测选项因模型而异。
Stata 参考 · R 参考
predict result, pr
data$result <- stats::predict(fit,type="response")
stats
计算逻辑回归预测概率
与 Stata 有差异: 在二项响应广义线性模型拟合后使用;预测选项因模型而异。
Stata 参考 · R 参考
predict result, residuals
data$result <- stats::residuals(fit)
stats
计算最小二乘原始残差
与 Stata 有差异: 先运行fit <- lm(y ~ x + z, data=data)。
Stata 参考 · R 参考
predict result, rstandard
data$result <- stats::rstandard(fit)
stats
计算内部标准化残差
与 Stata 有差异: 先运行fit <- lm(y ~ x + z, data=data)。
Stata 参考 · R 参考
predict result, rstudent
data$result <- stats::rstudent(fit)
stats
计算外部学生化残差
与 Stata 有差异: 先运行fit <- lm(y ~ x + z, data=data)。
Stata 参考 · R 参考
predict result, stdf
data$result <- sqrt(stats::predict(fit,se.fit=TRUE)$se.fit^2+summary(fit)$sigma^2)
stats
计算包含残差方差的预测标准误
与 Stata 有差异: 将残差方差加到OLS拟合均值标准误的平方上。这是新个体预测的标准误,不是拟合均值标准误;假定同方差误差且模型样本一致。
Stata 参考 · R 参考
predict result, stdp
data$result <- stats::predict(fit,se.fit=TRUE)$se.fit
stats
计算拟合均值标准误
与 Stata 有差异: 先运行fit <- lm(y ~ x + z, data=data)。
Stata 参考 · R 参考
predict result, xb
data$result <- stats::predict(fit)
stats
计算线性拟合值
与 Stata 有差异: 先运行fit <- lm(y ~ x + z, data=data)。
Stata 参考 · R 参考
predict result, xb
data$result <- stats::predict(fit,type="link")
stats
计算逻辑回归线性指数
与 Stata 有差异: 在二项响应广义线性模型拟合后使用;预测选项因模型而异。
Stata 参考 · R 参考
roccomp b x z
pROC::roc.test(pROC::roc(data$b,data$x,levels=c(0,1),direction="<",quiet=TRUE),pROC::roc(data$b,data$z,levels=c(0,1),direction="<",quiet=TRUE),paired=TRUE,method="delong")
pROC
使用DeLong推断比较配对标记的ROC面积
与 Stata 有差异: 配对推断要求两个标记在相同完整样本受试者上测量。
Stata 参考 · R 参考
roctab b x
pROC::roc(data$b,data$x,levels=c(0,1),direction="<",quiet=TRUE)
pROC
估计诊断标记的非参数ROC曲线下面积
与 Stata 有差异: 显式指定较大标记值表示病例;固定方向可避免按数据自动反向。
Stata 参考 · R 参考
roctab b x, detail
pROC::coords(pROC::roc(data$b,data$x,levels=c(0,1),direction="<",quiet=TRUE),x="all",ret=c("threshold","sensitivity","specificity"))
pROC
列出不同ROC阈值的敏感度与特异度
与 Stata 有差异: 在显式事件方向下返回pROC全部阈值、敏感度和特异度。阈值位置及端点约定不同于Stata的roctab detail切点。
Stata 参考 · R 参考
test x = 0
car::linearHypothesis(fit,"x = 0")
car
检验单个回归系数
与 Stata 有差异: 对已有模型检验所示系数约束。car根据模型类选择参考统计量;GLM的卡方检验不同于Stata regress后估计的OLS F检验。
Stata 参考 · R 参考
test x = z
car::linearHypothesis(fit,"x = z")
car
检验两个回归斜率相等
与 Stata 有差异: 对已有模型检验所示系数约束。car根据模型类选择参考统计量;GLM的卡方检验不同于Stata regress后估计的OLS F检验。
Stata 参考 · R 参考
test x z
car::linearHypothesis(fit,c("x = 0","z = 0"))
car
联合检验两个回归系数
与 Stata 有差异: 对已有模型检验所示系数约束。car根据模型类选择参考统计量;GLM的卡方检验不同于Stata regress后估计的OLS F检验。
Stata 参考 · R 参考
testnl exp(_b[x]) = 1
{ d <- car::deltaMethod(fit,"exp(x)"); w <- ((d$Estimate-1)/d$SE)^2; c(chisq=w,p.value=stats::pchisq(w,df=1,lower.tail=FALSE)) }
car
用非线性Wald检验检验指数化系数
与 Stata 有差异: 用一阶delta标准误构造单自由度Wald卡方。R向量不包含Stata的系数及置信区间输出。
Stata 参考 · R 参考
testparm i.g
car::linearHypothesis(fit,c("g6 = 0","g8 = 0"))
car
联合检验分类解释变量
与 Stata 有差异: 约束显式指定已拟合的因子系数。参考水平或对比编码不同时须修改系数名;不自动展开任意Stata因子变量表达式。
Stata 参考 · R 参考

假设检验与置信区间

Stata R 用途、差异及来源
bitest b = 0.5
stats::binom.test(sum(data$b),nrow(data),p=0.5)
stats
精确检验二元变量成功概率
与 Stata 有差异: 返回精确双侧二项检验。代码假定所示二元样本无缺失;Stata还打印下尾和上尾概率。
Stata 参考 · R 参考
bitesti 20 7 0.5
stats::binom.test(7,20,p=0.5)
stats
根据计数运行精确二项检验
与 Stata 有差异: 按给定次数和总数采用精确双侧二项检验。R报告一个htest结果;Stata还显示两个单侧概率。
Stata 参考 · R 参考
ci means y
stats::t.test(data$y)$conf.int
stats
计算均值的Student-t置信区间
与 Stata 有差异: 仅返回所选置信限,不含Stata的样本量和点估计列。须统一非缺失样本量、置信水平及显式区间方法。
Stata 参考 · R 参考
ci proportions b, exact
stats::binom.test(sum(data$b),nrow(data))$conf.int
stats
计算Clopper-Pearson比例置信区间
与 Stata 有差异: 仅返回所选置信限,不含Stata的样本量和点估计列。须统一非缺失样本量、置信水平及显式区间方法。
Stata 参考 · R 参考
ci proportions b, wilson
stats::prop.test(sum(data$b),nrow(data),correct=FALSE)$conf.int
stats
计算比例的Wilson得分置信区间
与 Stata 有差异: 仅返回所选置信限,不含Stata的样本量和点估计列。须统一非缺失样本量、置信水平及显式区间方法。
Stata 参考 · R 参考
ci variances y
(length(data$y)-1)*stats::var(data$y)/stats::qchisq(c(0.975,0.025),df=length(data$y)-1)
stats
计算正态理论方差置信区间
与 Stata 有差异: 仅返回所选置信限,不含Stata的样本量和点估计列。须统一非缺失样本量、置信水平及显式区间方法。
Stata 参考 · R 参考
ci variances y, sd
sqrt((length(data$y)-1)*stats::var(data$y)/stats::qchisq(c(0.975,0.025),df=length(data$y)-1))
stats
计算正态理论标准差置信区间
与 Stata 有差异: 仅返回所选置信限,不含Stata的样本量和点估计列。须统一非缺失样本量、置信水平及显式区间方法。
Stata 参考 · R 参考
cii means 50 10 2
10+c(-1,1)*stats::qt(0.975,49)*2/sqrt(50)
stats
根据汇总统计量计算均值区间
与 Stata 有差异: 按所示汇总输入计算置信限。R结果省略Stata的样本量和点估计列;区间取决于指定方法和置信水平。
Stata 参考 · R 参考
cii proportions 20 7, exact
stats::binom.test(7,20)$conf.int
stats
根据计数计算精确比例置信区间
与 Stata 有差异: 按所示汇总输入计算置信限。R结果省略Stata的样本量和点估计列;区间取决于指定方法和置信水平。
Stata 参考 · R 参考
ksmirnov y, by(g)
stats::ks.test(data$y[data$g=="a"],data$y[data$g=="b"],exact=FALSE)
stats
比较两个经验分布函数
与 Stata 有差异: 双样本形式使用分组变量;单样本检验则需要完整指定参照累积分布函数。
Stata 参考 · R 参考
ktau y x
stats::cor.test(data$y,data$x,method="kendall",exact=FALSE)
stats
检验Kendall秩相关
与 Stata 有差异: 采用渐近Kendall检验。须统一并列修正和tau变体;R返回一个htest对象,而非Stata全部一致性汇总。
Stata 参考 · R 参考
kwallis y, by(g)
stats::kruskal.test(y~g,data=data)
stats
检验多个组的分布相等
与 Stata 有差异: 计算经并列修正的Kruskal-Wallis卡方近似。R返回htest对象,不含Stata的各组秩和汇总。
Stata 参考 · R 参考
median y, by(g)
stats::chisq.test(table(data$g,data$y>stats::median(data$y)),correct=FALSE)
stats
运行两组中位数检验
与 Stata 有差异: 检验组别与高于合并中位数指标的独立性。本例将恰等于中位数的观测归入低类别;比较前须统一Stata的ties()处理。
Stata 参考 · R 参考
nptrend b, group(g) carmitage
stats::prop.trend.test(c(10,18,28),c(40,40,40),score=c(1,2,3))
stats
检验比例的有序趋势
与 Stata 有差异: 示例使用三个有序组得分下的汇总成功次数与分母。
Stata 参考 · R 参考
oneway y g, bonferroni
stats::pairwise.t.test(data$y,data$g,p.adjust.method="bonferroni",pool.sd=TRUE)
stats
使用Bonferroni校正比较组均值
与 Stata 有差异: 按所示代码使用常规等方差单因素模型或合并方差成对t检验。R对象布局不同,不复现Stata全部tabulate列或比较显示。
Stata 参考 · R 参考
oneway y g, tabulate
stats::aov(y~factor(g),data=data)
stats
拟合单因素方差分析
与 Stata 有差异: 按所示代码使用常规等方差单因素模型或合并方差成对t检验。R对象布局不同,不复现Stata全部tabulate列或比较显示。
Stata 参考 · R 参考
pcorr y x z
stats::cor(stats::residuals(stats::lm(y~z,data=data)),stats::residuals(stats::lm(x~z,data=data)))
stats
计算控制z后的y与x偏相关
与 Stata 有差异: 此例返回y与x的偏相关;Stata的pcorr还报告每个解释变量的半偏相关。
Stata 参考 · R 参考
prtest b == 0.5
stats::prop.test(sum(data$b),nrow(data),p=0.5,correct=FALSE)
stats
运行无连续性校正的大样本单比例检验
与 Stata 有差异: 关闭R比例正态近似检验的连续性修正。R报告卡方,其平方根是Stata z的绝对值;正负方向取决于组序。
Stata 参考 · R 参考
prtest b, by(g)
stats::prop.test(tapply(data$b,data$g,sum),as.vector(table(data$g)),correct=FALSE)
stats
比较两个比例且不使用连续性校正
与 Stata 有差异: 关闭R比例正态近似检验的连续性修正。R报告卡方,其平方根是Stata z的绝对值;正负方向取决于组序。
Stata 参考 · R 参考
prtesti 100 0.4 120 0.5
stats::prop.test(c(40,60),c(100,120),correct=FALSE)
stats
根据汇总样本量比较比例
与 Stata 有差异: 不作连续性修正。R返回卡方检验,Stata报告带符号z和单侧概率;给定相同计数时双侧p值对应。
Stata 参考 · R 参考
ranksum y, by(g)
stats::wilcox.test(y~g,data=data,exact=FALSE,correct=FALSE)
stats
使用秩和检验比较独立分布
与 Stata 有差异: 按要求选择精确或未作连续性修正的渐近Wilcoxon计算。须统一并列处理、组序及报告秩和还是U统计量的约定。
Stata 参考 · R 参考
ranksum y, by(g) exact
stats::wilcox.test(y~g,data=data,exact=TRUE)
stats
在无并列值时使用精确秩和推断
与 Stata 有差异: 按要求选择精确或未作连续性修正的渐近Wilcoxon计算。须统一并列处理、组序及报告秩和还是U统计量的约定。
Stata 参考 · R 参考
sdtest y == 3
{ statistic <- (length(data$y)-1)*stats::var(data$y)/3^2; c(chisq=statistic,p.value=2*min(stats::pchisq(statistic,11),stats::pchisq(statistic,11,lower.tail=FALSE))) }
stats
检验一个正态总体的标准差
与 Stata 有差异: 采用正态理论的方差比或卡方检验。R以htest对象或向量返回检验分量;Stata还报告单侧备择及额外置信限。
Stata 参考 · R 参考
sdtest y == x
stats::var.test(data$y,data$x)
stats
比较两个非配对样本方差
与 Stata 有差异: 采用正态理论的方差比或卡方检验。R以htest对象或向量返回检验分量;Stata还报告单侧备择及额外置信限。
Stata 参考 · R 参考
sdtest y, by(g)
stats::var.test(y~g,data=data)
stats
比较两个独立正态样本的方差
与 Stata 有差异: 采用正态理论的方差比或卡方检验。R以htest对象或向量返回检验分量;Stata还报告单侧备择及额外置信限。
Stata 参考 · R 参考
sdtesti 30 2 40 3
{ f <- 2^2/3^2; c(F=f,p.value=2*min(stats::pf(f,29,39),stats::pf(f,29,39,lower.tail=FALSE))) }
stats
根据样本量和标准差比较方差
与 Stata 有差异: 按给定汇总量计算正态理论双侧方差比检验。R向量不含Stata的置信区间及单侧概率列。
Stata 参考 · R 参考
signrank y = x
stats::wilcox.test(data$y,data$x,paired=TRUE,exact=FALSE,correct=FALSE)
stats
对含并列值的配对差使用符号秩检验
与 Stata 有差异: 采用无连续性修正的配对Wilcoxon渐近计算。R忽略零差值;并列值及小样本方差约定会影响参考近似。
Stata 参考 · R 参考
signtest y = x
{ d <- data$y-data$x; stats::binom.test(sum(d>0),sum(d!=0),p=0.5) }
stats
使用符号检验检验配对差的中位数
与 Stata 有差异: 剔除配对零差值并采用精确双侧二项检验。R显示的区间针对正差概率,而非配对中位数的置信区间。
Stata 参考 · R 参考
spearman y x
stats::cor.test(data$y,data$x,method="spearman",exact=FALSE)
stats
对含并列值的数据检验Spearman秩相关
与 Stata 有差异: 显式采用渐近Spearman检验。R与Stata的p值近似可能不同,尤其存在并列值时;应在相同完整配对上比较秩相关。
Stata 参考 · R 参考
swilk y
stats::shapiro.test(data$y)
stats
使用Shapiro-Wilk检验单变量正态性
与 Stata 有差异: 计算Shapiro-Wilk W检验;R允许3至5000个非缺失观测。Stata还显示变换统计量,并采用自身的近似及样本量规则。
Stata 参考 · R 参考
symmetry rater1 rater2
stats::mcnemar.test(table(data$rater1,data$rater2),correct=FALSE)
stats
检验匹配二元表的对称性
与 Stata 有差异: 对于2×2表,此例为无连续性校正的McNemar检验;更大表格需使用其他程序。
Stata 参考 · R 参考
tabi 12 8 \ 5 15, chi2
stats::chisq.test(matrix(c(12,8,5,15),nrow=2,byrow=TRUE),correct=FALSE)
stats
根据直接输入单元格计数运行Pearson检验
与 Stata 有差异: 按行构造所示表格,Pearson卡方不作连续性修正。R返回htest对象,而非Stata的列联表输出。
Stata 参考 · R 参考
tabulate g b, chi2
stats::chisq.test(table(data$g,data$b),correct=FALSE)
stats
检验双向计数表中的关联
与 Stata 有差异: table排除缺失观测,未使用因子水平可能影响维度。R的htest对象提供所选Pearson或Fisher检验,不含Stata的行列百分比显示。
Stata 参考 · R 参考
tabulate g b, exact
stats::fisher.test(table(data$g,data$b))
stats
运行双向表Fisher精确检验
与 Stata 有差异: table排除缺失观测,未使用因子水平可能影响维度。R的htest对象提供所选Pearson或Fisher检验,不含Stata的行列百分比显示。
Stata 参考 · R 参考
ttest y == 8
stats::t.test(data$y,mu=8)
stats
对指定值检验总体均值
与 Stata 有差异: 显式选择合并方差、Welch或配对推断。R返回htest对象;因子水平顺序不同时差值方向可能相反,须统一组序和非缺失样本。
Stata 参考 · R 参考
ttest y == 8, level(90)
stats::t.test(data$y,mu=8,conf.level=0.90)
stats
计算均值的90%置信区间
与 Stata 有差异: 显式选择合并方差、Welch或配对推断。R返回htest对象;因子水平顺序不同时差值方向可能相反,须统一组序和非缺失样本。
Stata 参考 · R 参考
ttest y == x
stats::t.test(data$y,data$x,paired=TRUE)
stats
检验配对均值之差
与 Stata 有差异: 显式选择合并方差、Welch或配对推断。R返回htest对象;因子水平顺序不同时差值方向可能相反,须统一组序和非缺失样本。
Stata 参考 · R 参考
ttest y, by(g)
stats::t.test(y~g,data=data,var.equal=TRUE)
stats
使用合并方差比较两个独立均值
与 Stata 有差异: 显式选择合并方差、Welch或配对推断。R返回htest对象;因子水平顺序不同时差值方向可能相反,须统一组序和非缺失样本。
Stata 参考 · R 参考
ttest y, by(g) unequal
stats::t.test(y~g,data=data,var.equal=FALSE)
stats
使用Welch异方差方法比较均值
与 Stata 有差异: 显式选择合并方差、Welch或配对推断。R返回htest对象;因子水平顺序不同时差值方向可能相反,须统一组序和非缺失样本。
Stata 参考 · R 参考
ttesti 30 10 2 8
{ t <- (10-8)/(2/sqrt(30)); c(t=t,df=29,p.value=2*stats::pt(-abs(t),29)) }
stats
根据汇总统计量运行单均值t检验
与 Stata 有差异: 按给定汇总量计算单样本t统计量、自由度和双侧p值。R向量不含置信区间及单侧概率。
Stata 参考 · R 参考

多变量与心理测量方法

Stata R 用途、差异及来源
alpha q1 q2 q3, asis
psych::alpha(data[c("q1","q2","q3")],check.keys=FALSE)
psych
不自动反向计分地估计原始Cronbach alpha
与 Stata 有差异: asis关闭Stata题项方向自动调整;R中显式指定check.keys=FALSE。
Stata 参考 · R 参考
alpha q1 q2 q3, generate(score) asis
score <- rowMeans(data[c("q1","q2","q3")])
base
根据量表题项生成均值得分
与 Stata 有差异: asis关闭Stata题项方向自动调整;R中显式指定check.keys=FALSE。
Stata 参考 · R 参考
alpha q1 q2 q3, item asis
psych::alpha(data[c("q1","q2","q3")],check.keys=FALSE)$alpha.drop
psych
检查删除各题项后的信度
与 Stata 有差异: asis关闭Stata题项方向自动调整;R中显式指定check.keys=FALSE。
Stata 参考 · R 参考
alpha q1 q2 q3, std asis
psych::alpha(data[c("q1","q2","q3")],check.keys=FALSE)$total$std.alpha
psych
估计标准化Cronbach alpha
与 Stata 有差异: asis关闭Stata题项方向自动调整;R中显式指定check.keys=FALSE。
Stata 参考 · R 参考
ca g h
MASS::corresp(unclass(table(data$g,data$h)),nf=2)
MASS
对列联表进行简单对应分析
与 Stata 有差异: MASS返回标准坐标;Stata的ca默认normalize(symmetric),故坐标尺度不同。奇异值和惯量可比,但坐标轴符号可能反向。列联表保留类别名称。
Stata 参考 · R 参考
camat C, dimensions(2)
MASS::corresp(C,nf=2)
MASS
对给定计数矩阵进行对应分析
与 Stata 有差异: MASS返回标准对应坐标;Stata默认采用对称归一化。奇异值可比,但坐标缩放和轴符号可能不同。
Stata 参考 · R 参考
candisc x y z w, group(g)
MASS::lda(g ~ x+y+z+w,data=data,prior=rep(1/3,3))
MASS
估计典型线性判别方向
与 Stata 有差异: MASS的lda以等类别先验提供判别方向。这是判别分析流程,不是Stata的candisc全部典型检验及归一化输出。
Stata 参考 · R 参考
canon (x y) (z w)
stats::cancor(data[c("x","y")],data[c("z","w")])
stats
估计两组变量间的典型相关
与 Stata 有差异: 返回两个变量组的典型相关及系数矩阵。典型变量符号和系数归一化任意;Stata还报告显著性检验。
Stata 参考 · R 参考
cluster averagelinkage x y z w
stats::hclust(stats::dist(scale(as.matrix(data[c("x","y","z","w")]))),method="average")
stats
对标准化变量进行平均连接层次聚类
与 Stata 有差异: 对应的Stata调用前需先标准化变量;Ward距离及平方约定需特别核对。
Stata 参考 · R 参考
cluster centroidlinkage x y z w
stats::hclust(stats::dist(scale(as.matrix(data[c("x","y","z","w")]))),method="centroid")
stats
对标准化变量进行质心连接层次聚类
与 Stata 有差异: 对应的Stata调用前需先标准化变量;Ward距离及平方约定需特别核对。
Stata 参考 · R 参考
cluster completelinkage x y z w
stats::hclust(stats::dist(scale(as.matrix(data[c("x","y","z","w")]))),method="complete")
stats
对标准化变量进行完全连接层次聚类
与 Stata 有差异: 对应的Stata调用前需先标准化变量;Ward距离及平方约定需特别核对。
Stata 参考 · R 参考
cluster generate group = groups(3)
stats::cutree(fit,k=3)
stats
把层次聚类树切分为三组
与 Stata 有差异: 将已有hclust树切为三组。结果为整数成员向量,聚类标签任意,而Stata生成具名数据变量。
Stata 参考 · R 参考
cluster kmeans x y z w, k(3)
stats::kmeans(scale(as.matrix(data[c("x","y","z","w")])),centers=3,nstart=10)
stats
把标准化观测划分为三个k均值聚类
与 Stata 有差异: 算法、起点与随机序列不同,聚类编号和局部最优解可能不同。
Stata 参考 · R 参考
cluster medianlinkage x y z w
stats::hclust(stats::dist(scale(as.matrix(data[c("x","y","z","w")]))),method="median")
stats
对标准化变量进行中位连接层次聚类
与 Stata 有差异: 对应的Stata调用前需先标准化变量;Ward距离及平方约定需特别核对。
Stata 参考 · R 参考
cluster singlelinkage x y z w
stats::hclust(stats::dist(scale(as.matrix(data[c("x","y","z","w")]))),method="single")
stats
对标准化变量进行单连接层次聚类
与 Stata 有差异: 对应的Stata调用前需先标准化变量;Ward距离及平方约定需特别核对。
Stata 参考 · R 参考
cluster wardslinkage x y z w
stats::hclust(stats::dist(scale(as.matrix(data[c("x","y","z","w")]))),method="ward.D2")
stats
对标准化变量进行Ward层次聚类
与 Stata 有差异: 对应的Stata调用前需先标准化变量;Ward距离及平方约定需特别核对。
Stata 参考 · R 参考
cluster waveragelinkage x y z w
stats::hclust(stats::dist(scale(as.matrix(data[c("x","y","z","w")]))),method="mcquitty")
stats
对标准化变量进行加权平均连接层次聚类
与 Stata 有差异: 对应的Stata调用前需先标准化变量;Ward距离及平方约定需特别核对。
Stata 参考 · R 参考
clustermat completelinkage D
stats::hclust(stats::as.dist(D),method="complete")
stats
对预先计算的相异性矩阵聚类
与 Stata 有差异: 对给定不相似矩阵采用完全连接法。距离定义和并列处理影响树;R返回hclust对象,而非Stata具名聚类解。
Stata 参考 · R 参考
discrim knn x y z w, group(g) k(5)
class::knn(train=as.matrix(data[c("x","y","z","w")]),test=as.matrix(data[c("x","y","z","w")]),cl=data$g,k=5)
class
使用五个最近邻进行分类
与 Stata 有差异: 按名称选择预测变量并对训练样本分类。class::knn采用不加权多数投票并随机处理并列;Stata默认采用等类别先验,类别不平衡时判别可能不同。预测准确率应在留出数据上评估。
Stata 参考 · R 参考
discrim lda x y z w, group(g)
MASS::lda(g ~ x+y+z+w,data=data,prior=rep(1/3,3))
MASS
拟合线性判别分析
与 Stata 有差异: 比较结果前需明确类别先验概率与协方差估计约定。
Stata 参考 · R 参考
discrim lda x y z w, group(g) lootable
MASS::lda(g ~ x+y+z+w,data=data,CV=TRUE,prior=rep(1/3,3))
MASS
使用留一法线性判别分析分类
Stata的lootable请求留一法分类;MASS的CV=TRUE完成对应预测流程。
Stata 参考 · R 参考
discrim lda x y z w, group(g) priors(equal)
MASS::lda(g ~ x+y+z+w,data=data,prior=rep(1/3,3))
MASS
在线性判别分析中使用相等先验概率
与 Stata 有差异: 所示代码显式使用等类别先验。MASS的系数归一化及类别顺序可能不同于Stata;须统一先验和协方差估计后比较后验分类。
Stata 参考 · R 参考
discrim qda x y z w, group(g)
{ analysis <- droplevels(stats::model.frame(g ~ x + y + z + w, data = data, na.action = stats::na.omit)); groups <- length(unique(analysis$g)); MASS::qda(g ~ x + y + z + w, data = analysis, prior = rep(1 / groups, groups)) }
MASS
拟合二次判别分析
与 Stata 有差异: 先对响应及预测变量筛选完整观测并去除未使用的类别,再按剩余类别计算等先验,匹配Stata的discrim qda默认priors(equal)。否则MASS采用样本类别比例。比较后验概率前须统一协方差归一化和类别标签。
Stata 参考 · R 参考
estat gof, stats(all)
lavaan::fitMeasures(fit,c("chisq","df","cfi","tli","rmsea","srmr"))
lavaan
报告验证性因子模型拟合指标
与 Stata 有差异: 选择六个lavaan SEM拟合指标。须统一模型识别、似然缩放、缺失数据估计及基线模型定义;不包含Stata stats(all)的全部统计量。
Stata 参考 · R 参考
estat kmo
psych::KMO(stats::cor(X))
psych
使用KMO指标评估因子分析适用性
与 Stata 有差异: 从给定相关矩阵计算KMO。R以列表返回总体和各变量测度;须与Stata factor使用相同相关矩阵及缺失处理样本。
Stata 参考 · R 参考
estat mindices
lavaan::modindices(fit)
lavaan
检查结构方程模型修正指数
与 Stata 有差异: 返回lavaan对可释放参数的修正指数。须统一模型约束、信息矩阵和缺失数据似然;候选参数集合可能不同于Stata。
Stata 参考 · R 参考
estat residuals
lavaan::lavResiduals(fit,type="raw")
lavaan
检查结构方程模型残差相关
与 Stata 有差异: 使用观测减模型隐含协方差的原始残差,对应Stata默认原始残差。lavaan还返回按自身尺度标准化的汇总,不能视作相同Stata输出列。
Stata 参考 · R 参考
estat smc
1-1/diag(solve(stats::cor(X)))
stats
计算量表题项的复相关平方
与 Stata 有差异: 按一减相关逆矩阵对角元素倒数计算平方复相关。要求相关矩阵非奇异,并返回向量而非Stata显示表。
Stata 参考 · R 参考
factor q1 q2 q3 q4 q5 q6, factors(1) ml
stats::factanal(as.matrix(data[c("q1","q2","q3","q4","q5","q6")]),factors=1,rotation="none")
stats
拟合单因子最大似然因子模型
与 Stata 有差异: 匹配所示ML或主成分提取方法及因子数。载荷符号和旋转不唯一;psych的主成分得分与缩放不必复现Stata的factor后估计。
Stata 参考 · R 参考
factor q1 q2 q3 q4 q5 q6, factors(2) ipf
psych::fa(as.matrix(data[c("q1","q2","q3","q4","q5","q6")]),nfactors=2,fm="pa",rotate="none")
psych
拟合迭代主轴因子模型
与 Stata 有差异: 主轴算法与收敛容差可能不同,不应假定载荷完全相同。
Stata 参考 · R 参考
factor q1 q2 q3 q4 q5 q6, factors(2) ml
stats::factanal(as.matrix(data[c("q1","q2","q3","q4","q5","q6")]),factors=2,rotation="none")
stats
拟合双因子最大似然因子模型
与 Stata 有差异: 匹配所示ML或主成分提取方法及因子数。载荷符号和旋转不唯一;psych的主成分得分与缩放不必复现Stata的factor后估计。
Stata 参考 · R 参考
factor q1 q2 q3 q4 q5 q6, factors(2) pcf
psych::principal(as.matrix(data[c("q1","q2","q3","q4","q5","q6")]),nfactors=2,rotate="none")
psych
拟合主成分因子解
与 Stata 有差异: 匹配所示ML或主成分提取方法及因子数。载荷符号和旋转不唯一;psych的主成分得分与缩放不必复现Stata的factor后估计。
Stata 参考 · R 参考
correlate q1 q2 q3 q4 q5 q6
matrix R = r(C)
factormat R, n(300) factors(2) ml
stats::factanal(covmat=R,n.obs=300,factors=2,rotation="none")
stats
根据相关矩阵拟合最大似然因子模型
与 Stata 有差异: 固定流程。R为固定相关矩阵对象;样本量用于计算基于似然的拟合统计量。
Stata 参考 · R 参考
hotelling x y
{ n <- nrow(data); k <- 2; m <- colMeans(data[c("x","y")]); T2 <- n*drop(t(m)%*%solve(stats::cov(data[c("x","y")]),m)); F <- (n-k)/(k*(n-1))*T2; c(T2=T2,F=F,p.value=stats::pf(F,k,n-k,lower.tail=FALSE)) }
stats
使用Hotelling T平方检验均值向量为零
与 Stata 有差异: 对这两个变量计算单样本Hotelling T平方及其F变换。假定样本完整且协方差可逆;Stata还显示均值汇总。
Stata 参考 · R 参考
kap rater1 rater2
psych::cohen.kappa(table(data$rater1,data$rater2))$kappa
psych
估计两名评分者的非加权Cohen kappa
与 Stata 有差异: 从列联表返回未加权Cohen kappa。不含Stata的一致率汇总、标准误和置信区间;须统一缺失及类别处理。
Stata 参考 · R 参考
manova y z = g
summary(stats::manova(cbind(y,z)~g,data=data),test="Pillai")
stats
使用Pillai检验多变量组间差异
与 Stata 有差异: Stata显示四种MANOVA统计量;此R示例选择其中指定的一种。
Stata 参考 · R 参考
manova y z = g c.x
stats::manova(cbind(y,z)~g+x,data=data)
stats
拟合多变量协方差分析
与 Stata 有差异: 拟合所示多变量线性模型。R的summary默认Pillai,Stata显示多个多变量准则;须选择相同准则、假设和因子对比。
Stata 参考 · R 参考
manova y z = g
summary(stats::manova(cbind(y,z)~g,data=data),test="Wilks")
stats
使用Wilks检验多变量组间差异
与 Stata 有差异: Stata显示四种MANOVA统计量;此R示例选择其中指定的一种。
Stata 参考 · R 参考
manova y z = g
summary(stats::manova(cbind(y,z)~g,data=data),test="Hotelling-Lawley")
stats
使用Hotelling-Lawley检验多变量组间差异
与 Stata 有差异: Stata显示四种MANOVA统计量;此R示例选择其中指定的一种。
Stata 参考 · R 参考
manova y z = g
summary(stats::manova(cbind(y,z)~g,data=data),test="Roy")
stats
使用Roy检验多变量组间差异
与 Stata 有差异: Stata显示四种MANOVA统计量;此R示例选择其中指定的一种。
Stata 参考 · R 参考
mca g h j, method(indicator)
MASS::mca(data, nf=2)
MASS
通过指示矩阵MCA分析多个分类变量
与 Stata 有差异: MASS采用指示矩阵MCA;惯量归一化不同于调整MCA和联合MCA。
Stata 参考 · R 参考
mds x y z w, id(id) dimension(2) noplot
stats::cmdscale(stats::dist(as.matrix(data[c("x","y","z","w")])),k=2,eig=TRUE)
stats
拟合经典度量多维尺度分析
与 Stata 有差异: 对欧氏距离采用经典度量缩放。Stata的mds默认方法及应力准则可能不同;须统一距离、方法、旋转和反射后比较坐标。
Stata 参考 · R 参考
mds x y z w, id(id) method(nonmetric) std noplot
MASS::isoMDS(stats::dist(scale(as.matrix(data[c("x","y","z","w")]))),k=2,trace=FALSE)
MASS
拟合非度量多维尺度分析
与 Stata 有差异: 非度量优化、应力定义与初始配置可能不同。
Stata 参考 · R 参考
mdsmat D, dimension(2) noplot
stats::cmdscale(stats::as.dist(D),k=2)
stats
对给定相异性矩阵进行尺度分析
与 Stata 有差异: 对给定不相似矩阵采用经典度量缩放。须统一Stata的度量方法及特征值处理;坐标旋转和反射任意。
Stata 参考 · R 参考
mvreg y z = x w
stats::lm(cbind(y,z) ~ x+w,data=data)
stats
拟合多响应多元线性回归
与 Stata 有差异: 在共同完整样本上返回多变量lm拟合。Stata的mvreg显示各方程及跨方程汇总;R中须显式提取相应汇总。
Stata 参考 · R 参考
mvtest normality x y z w, stats(skewness kurtosis)
psych::mardia(X,plot=FALSE)
psych
计算Mardia多变量偏度与峰度检验
与 Stata 有差异: 小样本校正可能不同;此例选择Mardia分量,而非Stata默认Doornik-Hansen检验。
Stata 参考 · R 参考
pca x y z w
stats::prcomp(as.matrix(data[c("x","y","z","w")]),center=TRUE,scale.=TRUE)
stats
拟合相关矩阵主成分分析
与 Stata 有差异: 显式选择相关矩阵或协方差矩阵PCA。成分符号任意;prcomp返回基于奇异值的对象及得分,其缩放不同于Stata显示。
Stata 参考 · R 参考
pca x y z w, components(2)
stats::prcomp(as.matrix(data[c("x","y","z","w")]),scale.=TRUE,rank.=2)
stats
保留两个主成分
与 Stata 有差异: 显式选择相关矩阵或协方差矩阵PCA。成分符号任意;prcomp返回基于奇异值的对象及得分,其缩放不同于Stata显示。
Stata 参考 · R 参考
pca x y z w, covariance
stats::prcomp(as.matrix(data[c("x","y","z","w")]),center=TRUE,scale.=FALSE)
stats
拟合协方差矩阵主成分分析
与 Stata 有差异: 显式选择相关矩阵或协方差矩阵PCA。成分符号任意;prcomp返回基于奇异值的对象及得分,其缩放不同于Stata显示。
Stata 参考 · R 参考
correlate x y z w
matrix R = r(C)
pcamat R, n(50)
stats::princomp(covmat=R)
stats
直接根据相关矩阵执行主成分分析
与 Stata 有差异: 固定流程。
Stata 参考 · R 参考
predict p1 p2 p3, pr
data[c("p1","p2","p3")] <- stats::predict(fit)$posterior
MASS
预测所有判别类别的后验概率
与 Stata 有差异: 使用已有判别模型及其类别顺序。返回标签或后验概率列须对应拟合类别;R因子顺序不必等于Stata类别编码顺序。
Stata 参考 · R 参考
predict pc1 pc2, score
data[c("pc1","pc2")] <- stats::predict(fit)[,1:2,drop=FALSE]
stats
计算前两个主成分得分
与 Stata 有差异: 从已有PCA模型返回得分。R得分缩放及任意成分符号可能不同于Stata的predict, score;比较数值前须统一标准化。
Stata 参考 · R 参考
predict predicted, classification
data$predicted <- stats::predict(fit)$class
MASS
预测判别分析类别归属
与 Stata 有差异: 使用已有判别模型及其类别顺序。返回标签或后验概率列须对应拟合类别;R因子顺序不必等于Stata类别编码顺序。
Stata 参考 · R 参考
predict score1 score2, bartlett
data[c("score1","score2")] <- stats::factanal(as.matrix(data[c("q1","q2","q3","q4","q5","q6")]),factors=2,rotation="none",scores="Bartlett")$scores
stats
计算Bartlett方法的因子得分
与 Stata 有差异: 使用题项q1-q6的固定测量模型;可以更改输出得分列名。
Stata 参考 · R 参考
predict score1 score2, regression
data[c("score1","score2")] <- stats::factanal(as.matrix(data[c("q1","q2","q3","q4","q5","q6")]),factors=2,rotation="none",scores="regression")$scores
stats
计算回归方法的因子得分
与 Stata 有差异: 使用题项q1-q6的固定测量模型;可以更改输出得分列名。
Stata 参考 · R 参考
rotate, oblique oblimin
GPArotation::oblimin(unclass(fit$loadings))
GPArotation
使用斜交oblimin载荷旋转准则
与 Stata 有差异: 仅旋转给定载荷矩阵。载荷符号、轴序和归一化可能不同于Stata;相关因子解还须比较因子相关矩阵。
Stata 参考 · R 参考
rotate, orthogonal quartimax
GPArotation::quartimax(unclass(fit$loadings))
GPArotation
使用正交quartimax载荷旋转准则
与 Stata 有差异: 仅旋转给定载荷矩阵。载荷符号、轴序和归一化可能不同于Stata;相关因子解还须比较因子相关矩阵。
Stata 参考 · R 参考
rotate, promax
stats::promax(fit$loadings,m=3)
stats
使用promax旋转因子载荷
与 Stata 有差异: 载荷的符号和排列顺序并不唯一;旋转归一化约定可能不同。
Stata 参考 · R 参考
rotate, varimax
stats::varimax(fit$loadings,normalize=FALSE)
stats
使用varimax旋转因子载荷
与 Stata 有差异: 载荷的符号和排列顺序并不唯一;旋转归一化约定可能不同。
Stata 参考 · R 参考
rotatemat L, varimax
stats::varimax(L)
stats
旋转外部给定的载荷矩阵
与 Stata 有差异: 对给定矩阵采用varimax。须统一归一化和列序;等价旋转解可能反转列符号。
Stata 参考 · R 参考
sem (visual -> x1 x2 x3) (textual -> x4 x5 x6) (speed -> x7 x8 x9), latent(visual textual speed)
lavaan::cfa("visual =~ x1+x2+x3; textual =~ x4+x5+x6; speed =~ x7+x8+x9",data=data)
lavaan
拟合三因子验证性测量模型
与 Stata 有差异: 比较估计时需统一潜变量定标约束与均值结构。
Stata 参考 · R 参考
sem, standardized
lavaan::standardizedSolution(fit)
lavaan
报告标准化结构方程模型参数
与 Stata 有差异: 固定流程。
Stata 参考 · R 参考
tetrachoric a b
polycor::polychor(data$a,data$b,ML=TRUE,std.err=TRUE)
polycor
使用最大似然估计四分相关
与 Stata 有差异: 每个二元变量都必须观察到两个水平;推断假设潜在二元正态分布。
Stata 参考 · R 参考

检验功效与精度设计

Stata R 用途、差异及来源
ciwidth onemean, sd(2) n(50)
2*stats::qt(0.975,df=49)*2/sqrt(50)
stats
计算均值置信区间预期全宽
预期宽度流程以设计标准差代替未来样本标准差;区间宽度指上限减下限。Stata还支持区间宽度概率设计,此处未实现。
Stata 参考 · R 参考
ciwidth onemean, sd(2) width(1)
ceiling(stats::uniroot(function(n) 2*stats::qt(0.975,n-1)*2/sqrt(n)-1,c(3,1000))$root)
stats
按目标均值区间宽度设计样本量
预期宽度流程以设计标准差代替未来样本标准差;区间宽度指上限减下限。Stata还支持区间宽度概率设计,此处未实现。
Stata 参考 · R 参考
ciwidth pairedmeans, sddiff(2) n(50)
2*stats::qt(0.975,49)*2/sqrt(50)
stats
计算配对均值差区间宽度
预期宽度流程以设计标准差代替未来样本标准差;区间宽度指上限减下限。Stata还支持区间宽度概率设计,此处未实现。
Stata 参考 · R 参考
ciwidth twomeans, sd(2) n1(40) n2(60)
2*stats::qt(0.975,98)*2*sqrt(1/40+1/60)
stats
计算等方差双均值差区间宽度
预期宽度流程以设计标准差代替未来样本标准差;区间宽度指上限减下限。Stata还支持区间宽度概率设计,此处未实现。
Stata 参考 · R 参考
power onecorrelation 0 0.3, n(100)
pwr::pwr.r.test(r=0.3,n=100,sig.level=0.05)
pwr
计算固定样本量下相关检验功效
与 Stata 有差异: pwr使用其文档规定的近似与效应参数化;数值结果不保证与Stata相同。
Stata 参考 · R 参考
power onecorrelation 0 0.3, power(0.8)
pwr::pwr.r.test(r=0.3,power=0.8,sig.level=0.05)
pwr
设计检出相关系数的样本量
与 Stata 有差异: pwr使用其文档规定的近似与效应参数化;数值结果不保证与Stata相同。
Stata 参考 · R 参考
power onecorrelation 0, n(100) power(0.8)
pwr::pwr.r.test(r=NULL,n=100,power=0.8,sig.level=0.05)
pwr
计算固定样本量可检测的相关系数
与 Stata 有差异: pwr使用其文档规定的近似与效应参数化;数值结果不保证与Stata相同。
Stata 参考 · R 参考
power onemean 0 0.5, sd(1) knownsd n(40)
pwr::pwr.norm.test(d=0.5,n=40,sig.level=0.05)
pwr
在标准差已知时计算单均值z检验功效
与 Stata 有差异: pwr以标准差为单位报告均值差;knownsd将此设计与t检验区分。
Stata 参考 · R 参考
power onemean 0 0.5, sd(1) knownsd power(0.8)
pwr::pwr.norm.test(d=0.5,power=0.8,sig.level=0.05)
pwr
在标准差已知时设计单均值z检验样本量
与 Stata 有差异: pwr以标准差为单位报告均值差;knownsd将此设计与t检验区分。
Stata 参考 · R 参考
power onemean 0 0.5, sd(1) n(40)
stats::power.t.test(n=40,delta=0.5,sd=1,type="one.sample",sig.level=0.05)
stats
计算固定样本量单均值t检验功效
与 Stata 有差异: 计算所示正态理论t检验或两比例功效设计。R两样本n表示每组人数,Stata的n()表示总人数;须统一备择、分配及双侧拒绝规则。
Stata 参考 · R 参考
power onemean 0 0.5, sd(1) n(40) onesided
stats::power.t.test(n=40,delta=0.5,sd=1,type="one.sample",alternative="one.sided")
stats
计算单侧单均值t检验功效
与 Stata 有差异: 计算所示正态理论t检验或两比例功效设计。R两样本n表示每组人数,Stata的n()表示总人数;须统一备择、分配及双侧拒绝规则。
Stata 参考 · R 参考
power onemean 0 0.5, sd(1) power(0.8)
stats::power.t.test(delta=0.5,sd=1,type="one.sample",sig.level=0.05,power=0.8)
stats
设计单均值t检验所需样本量
与 Stata 有差异: 独立双样本检验中R报告每组样本量;样本量应向上取整。
Stata 参考 · R 参考
power onemean 0, sd(1) knownsd n(40) power(0.8)
pwr::pwr.norm.test(d=NULL,n=40,power=0.8,sig.level=0.05)
pwr
计算单均值z检验可检测效应
与 Stata 有差异: pwr以标准差为单位报告均值差;knownsd将此设计与t检验区分。
Stata 参考 · R 参考
power onemean 0, sd(1) n(40) power(0.8)
stats::power.t.test(n=40,delta=NULL,sd=1,power=0.8,type="one.sample")
stats
计算单均值t检验可检测差值
与 Stata 有差异: R返回正的可检测差值;加上原假设均值即可得到备择均值。
Stata 参考 · R 参考
power oneproportion 0.3 0.5, n(100)
pwr::pwr.p.test(h=pwr::ES.h(0.5,0.3),n=100,sig.level=0.05)
pwr
近似计算固定样本单比例功效
使用反正弦效应h,是Stata默认得分检验计算的替代流程。
Stata 参考 · R 参考
power oneproportion 0.3 0.5, power(0.8)
pwr::pwr.p.test(h=pwr::ES.h(0.5,0.3),power=0.8,sig.level=0.05)
pwr
使用Cohen h近似设计单比例检验
使用反正弦效应h,是Stata默认得分检验计算的替代流程。
Stata 参考 · R 参考
power oneway 0 0.5 1, varerror(1) n(90)
pwr::pwr.anova.test(k=3,n=30,f=sqrt(mean((c(0,0.5,1)-0.5)^2)))
pwr
计算平衡单因素方差分析功效
与 Stata 有差异: pwr使用其文档规定的近似与效应参数化;数值结果不保证与Stata相同。
Stata 参考 · R 参考
power oneway 0 0.5 1, varerror(1) power(0.8)
pwr::pwr.anova.test(k=3,f=sqrt(mean((c(0,0.5,1)-0.5)^2)),power=0.8)
pwr
设计平衡单因素方差分析每组样本量
与 Stata 有差异: pwr使用其文档规定的近似与效应参数化;数值结果不保证与Stata相同。
Stata 参考 · R 参考
power pairedmeans 0 0.5, sddiff(1) n(40)
stats::power.t.test(n=40,delta=0.5,sd=1,type="paired",sig.level=0.05)
stats
计算固定样本量配对均值t检验功效
与 Stata 有差异: 计算所示正态理论t检验或两比例功效设计。R两样本n表示每组人数,Stata的n()表示总人数;须统一备择、分配及双侧拒绝规则。
Stata 参考 · R 参考
power pairedmeans 0 0.5, sddiff(1) power(0.8)
stats::power.t.test(delta=0.5,sd=1,type="paired",sig.level=0.05,power=0.8)
stats
设计配对均值t检验所需样本量
与 Stata 有差异: 独立双样本检验中R报告每组样本量;样本量应向上取整。
Stata 参考 · R 参考
power pairedmeans 0, sddiff(1) n(40) power(0.8)
stats::power.t.test(n=40,delta=NULL,sd=1,power=0.8,type="paired")
stats
计算配对均值t检验可检测差值
与 Stata 有差异: R返回正的可检测差值;加上原假设均值即可得到备择均值。
Stata 参考 · R 参考
power rsquared 0.1, n(100) ntested(3)
pwr::pwr.f2.test(u=3,v=96,f2=0.1/(1-0.1))
pwr
计算三个解释变量整体R平方检验功效
与 Stata 有差异: f2=(完整模型R2-约束模型R2)/(1-完整模型R2);残差自由度等于N减去全部解释变量数再减一。
Stata 参考 · R 参考
power rsquared 0.1, power(0.8) ntested(3)
{ design <- pwr::pwr.f2.test(u=3,f2=0.1/(1-0.1),power=0.8); ceiling(design$v+3+1) }
pwr
设计整体R平方检验总样本量
与 Stata 有差异: f2=(完整模型R2-约束模型R2)/(1-完整模型R2);残差自由度等于N减去全部解释变量数再减一。
Stata 参考 · R 参考
power rsquared 0.2 0.3, n(120) ntested(2) ncontrol(3)
pwr::pwr.f2.test(u=2,v=114,f2=(0.3-0.2)/(1-0.3))
pwr
计算增量解释方差的检验功效
与 Stata 有差异: f2=(完整模型R2-约束模型R2)/(1-完整模型R2);残差自由度等于N减去全部解释变量数再减一。
Stata 参考 · R 参考
power twomeans 0 0.5, sd(1) n(80)
stats::power.t.test(n=40.0,delta=0.5,sd=1,type="two.sample",sig.level=0.05)
stats
计算固定样本量双均值t检验功效
与 Stata 有差异: 计算所示正态理论t检验或两比例功效设计。R两样本n表示每组人数,Stata的n()表示总人数;须统一备择、分配及双侧拒绝规则。
Stata 参考 · R 参考
power twomeans 0 0.5, sd(1) n1(30) n2(50)
pwr::pwr.t2n.test(n1=30,n2=50,d=0.5,sig.level=0.05)
pwr
计算独立组样本量不等时的功效
与 Stata 有差异: 采用合并方差的标准化均值差模型,不是Welch异方差设计。
Stata 参考 · R 参考
power twomeans 0 0.5, sd(1) power(0.8)
stats::power.t.test(delta=0.5,sd=1,type="two.sample",sig.level=0.05,power=0.8)
stats
设计双均值t检验所需样本量
与 Stata 有差异: 独立双样本检验中R报告每组样本量;样本量应向上取整。
Stata 参考 · R 参考
power twomeans 0, sd(1) n(80) power(0.8)
stats::power.t.test(n=40.0,delta=NULL,sd=1,power=0.8,type="two.sample")
stats
计算双均值t检验可检测差值
与 Stata 有差异: R返回正的可检测差值;加上原假设均值即可得到备择均值。
Stata 参考 · R 参考
power twoproportions 0.3 0.5, n(200)
stats::power.prop.test(n=100,p1=0.3,p2=0.5,sig.level=0.05)
stats
计算固定双样本比例检验功效
与 Stata 有差异: 计算所示正态理论t检验或两比例功效设计。R两样本n表示每组人数,Stata的n()表示总人数;须统一备择、分配及双侧拒绝规则。
Stata 参考 · R 参考
power twoproportions 0.3 0.5, n(200) onesided
stats::power.prop.test(n=100,p1=0.3,p2=0.5,alternative="one.sided")
stats
计算单侧双比例检验功效
与 Stata 有差异: 计算所示正态理论t检验或两比例功效设计。R两样本n表示每组人数,Stata的n()表示总人数;须统一备择、分配及双侧拒绝规则。
Stata 参考 · R 参考
power twoproportions 0.3 0.5, power(0.8)
stats::power.prop.test(p1=0.3,p2=0.5,power=0.8,sig.level=0.05)
stats
设计两个独立比例检验的样本量
与 Stata 有差异: R报告每组样本量;正态近似约定与连续性校正可能不同。
Stata 参考 · R 参考
power twoproportions 0.3, n(200) power(0.8)
stats::power.prop.test(n=100,p1=0.3,p2=NULL,power=0.8,sig.level=0.05)
stats
计算可检测的备择比例
与 Stata 有差异: 计算所示正态理论t检验或两比例功效设计。R两样本n表示每组人数,Stata的n()表示总人数;须统一备择、分配及双侧拒绝规则。
Stata 参考 · R 参考

重抽样与模拟

Stata R 用途、差异及来源
bayesboot _b[x], reps(199): regress y x
replicate(199,{ weights <- stats::rexp(nrow(data)); unname(stats::coef(stats::lm(y~x,data=data,weights=weights))["x"]) })
stats
使用贝叶斯自助Dirichlet权重估计斜率
固定流程。独立指数权重归一化为总和一后服从Dirichlet(1,...,1);统一缩放不影响加权最小二乘系数。
Stata 参考 · R 参考
bootstrap _b, reps(199) strata(g): regress y x
boot::boot(data,statistic=function(d,i) stats::coef(stats::lm(y~x,data=d[i,])),R=199,strata=data$g)
boot
在固定分层内自助重抽样回归系数
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap difference=(_b[x]-_b[z]), reps(199): regress y x z
boot::boot(data,statistic=function(d,i) unname(diff(stats::coef(stats::lm(y~x+z,data=d[i,]))[c("z","x")])),R=199)
boot
对两个回归斜率之差进行自助估计
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap mean=r(mean), reps(199) cluster(g): summarize y
{ ids <- unique(data$g); replicate(199,{ picked <- sample(ids,length(ids),replace=TRUE); sample_data <- do.call(rbind,lapply(picked,function(id) data[data$g==id,,drop=FALSE])); mean(sample_data$y) }) }
base
通过重抽样完整聚类自助估计均值
固定流程。对聚类标识重抽样,并保留被抽中聚类中的全部观测;三个聚类仅用于演示。
Stata 参考 · R 参考
bootstrap mean=r(mean), reps(199): summarize y
boot::boot(data,statistic=function(d,i) mean(d$y[i]),R=199)
boot
对样本均值进行自助重抽样
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap mean=r(mean), reps(499) bca: summarize y
{ boot_fit <- boot::boot(data,function(d,i) mean(d$y[i]),R=499); boot::boot.ci(boot_fit,type="bca") }
boot
计算偏差校正加速自助置信区间
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap median=r(p50), reps(199): summarize y, detail
boot::boot(data,statistic=function(d,i) stats::median(d$y[i]),R=199)
boot
对样本中位数进行自助重抽样
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap q1=r(p25), reps(199): summarize y, detail
boot::boot(data,statistic=function(d,i) unname(stats::quantile(d$y[i],0.25,type=2)),R=199)
boot
对下四分位数进行自助重抽样
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap q3=r(p75), reps(199): summarize y, detail
boot::boot(data,statistic=function(d,i) unname(stats::quantile(d$y[i],0.75,type=2)),R=199)
boot
对上四分位数进行自助重抽样
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap sd=r(sd), reps(199): summarize y
boot::boot(data,statistic=function(d,i) stats::sd(d$y[i]),R=199)
boot
对样本标准差进行自助重抽样
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap slope=_b[x], reps(199): regress y x
boot::boot(data,statistic=function(d,i) unname(stats::coef(stats::lm(y~x,data=d[i,]))["x"]),R=199)
boot
通过重抽样观测对回归斜率进行自助估计
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bootstrap variance=r(Var), reps(199): summarize y
boot::boot(data,statistic=function(d,i) stats::var(d$y[i]),R=199)
boot
对样本方差进行自助重抽样
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bsample
data[sample.int(nrow(data),nrow(data),replace=TRUE),,drop=FALSE]
base
抽取非参数观测自助样本
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bsample, strata(g)
do.call(rbind,lapply(split(data,data$g),function(d) d[sample.int(nrow(d),nrow(d),replace=TRUE),,drop=FALSE]))
base
抽取分层观测自助样本
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
bstat
c(estimate=boot_fit$t0,bias=mean(boot_fit$t)-boot_fit$t0,se=stats::sd(boot_fit$t))
stats
汇总已保存的自助估计值、偏差与标准误
软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
estat bootstrap, normal
boot::boot.ci(boot_fit,type="norm")
boot
计算正态自助置信区间
软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
estat bootstrap, percentile
boot::boot.ci(boot_fit,type="perc")
boot
计算百分位自助置信区间
软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
jackknife _b[x]: regress y x
{ n <- nrow(data); deleted <- vapply(seq_len(n),function(i) unname(stats::coef(stats::lm(y~x,data=data[-i,]))["x"]),numeric(1)); c(estimate=unname(stats::coef(stats::lm(y~x,data=data))["x"]),se=sqrt((n-1)/n*sum((deleted-mean(deleted))^2))) }
stats
对回归斜率进行刀切估计
固定流程。删除单个观测的刀切法为确定性流程;方差等于(n-1)/n乘以重复估计值离均差的平方和。
Stata 参考 · R 参考
jackknife mean=r(mean), rclass cluster(g): summarize y
{ groups <- unique(data$g); deleted <- vapply(groups,function(id) mean(data$y[data$g!=id]),numeric(1)); length(groups) }
base
枚举删除一个聚类的刀切重抽样
固定流程。返回重复次数并保留删除估计值;聚类大小不等时的方差校正需明确选择刀切设计。
Stata 参考 · R 参考
jackknife mean=r(mean), rclass keep: summarize y
{ n <- nrow(data); deleted <- vapply(seq_len(n),function(i) mean(data$y[-i]),numeric(1)); n*mean(data$y)-(n-1)*deleted }
base
生成样本均值的刀切伪值
固定流程。删除单个观测的刀切法为确定性流程;方差等于(n-1)/n乘以重复估计值离均差的平方和。
Stata 参考 · R 参考
jackknife mean=r(mean), rclass: summarize y
{ n <- nrow(data); deleted <- vapply(seq_len(n),function(i) mean(data$y[-i]),numeric(1)); c(estimate=mean(data$y),se=sqrt((n-1)/n*sum((deleted-mean(deleted))^2))) }
stats
对样本均值进行刀切估计
固定流程。删除单个观测的刀切法为确定性流程;方差等于(n-1)/n乘以重复估计值离均差的平方和。
Stata 参考 · R 参考
jackknife sd=r(sd), rclass: summarize y
{ n <- nrow(data); deleted <- vapply(seq_len(n),function(i) stats::sd(data$y[-i]),numeric(1)); c(estimate=stats::sd(data$y),se=sqrt((n-1)/n*sum((deleted-mean(deleted))^2))) }
stats
对样本标准差进行刀切估计
固定流程。删除单个观测的刀切法为确定性流程;方差等于(n-1)/n乘以重复估计值离均差的平方和。
Stata 参考 · R 参考
permute y _b[x], reps(199) strata(g): regress y x
replicate(199,{ d <- data; d$y <- unsplit(lapply(split(data$y,data$g),sample),data$g); unname(stats::coef(stats::lm(y~x,data=d))["x"]) })
stats
在固定分层内部置换结果变量
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
permute y _b[x], reps(199): regress y x
replicate(199,{ d <- data; d$y <- sample(d$y); unname(stats::coef(stats::lm(y~x,data=d))["x"]) })
stats
生成回归斜率的置换分布
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
permute y r(rho), reps(199): correlate y x
replicate(199,stats::cor(sample(data$y),data$x))
stats
生成相关系数的置换分布
固定流程。软件间随机序列和重抽样默认值不同;固定R种子使此流程可复现。
Stata 参考 · R 参考
program define mymean, rclass
    preserve
    clear
    set obs 40
    generate y = rnormal(2,1)
    summarize y
    local estimate = r(mean)
    restore
    return scalar mean = `estimate'
end
simulate mean=r(mean), reps(199): mymean
replicate(199,mean(stats::rnorm(40,mean=2,sd=1)))
stats
模拟正态样本均值的抽样分布
固定流程。mymean是在Stata中定义的程序,抽取40个normal(2,1)观测并返回均值;此例为固定流程。
Stata 参考 · R 参考

模型报告

Stata R 用途、差异及来源
estimates stats
broom::glance(fit)
broom
提取单行模型拟合统计量
返回R表格的流程替代方法,不复现Stata表格格式。
Stata 参考 · R 参考
etable, cstat(_r_b) cstat(_r_se)
broom::tidy(fit,conf.int=TRUE)
broom
生成包含不确定性的整洁系数表
固定流程。返回R表格的流程替代方法,不复现Stata表格格式。
Stata 参考 · R 参考
predict result, residuals
broom::augment(fit)
broom
附加拟合值、残差与影响诊断
固定流程。返回R表格的流程替代方法,不复现Stata表格格式。
Stata 参考 · R 参考

空间分析流程

Stata R 用途、差异及来源
spbalance, balance
{ counts <- table(data$time); common <- as.numeric(names(counts)[counts == length(unique(data$id))]); data[data$time %in% common, , drop = FALSE] }
base
保留共同时间期以平衡空间面板
与 Stata 有差异: 固定流程;请明确调整示例列名。要求空间单元和时间组合唯一;对应spbalance保留空间单元而剔除不完整时间期的方式,不填补缺失结局。
Stata 参考 · R 参考
spdistance 1 2
sqrt(sum((as.numeric(data[data$id == 1, c("x", "y")]) - as.numeric(data[data$id == 2, c("x", "y")]))^2))
base
两个指定平面位置之间的距离
与 Stata 有差异: 固定流程;请明确调整示例列名。仅计算平面欧氏距离;经纬度应使用大地距离并明确单位。
Stata 参考 · R 参考
spgenerate nearby = W*value
drop(W %*% data$value)
base
计算空间滞后协变量
与 Stata 有差异: 固定流程;请明确调整示例列名。W必须与数据采用完全一致的空间单元顺序;该运算不拟合空间自回归模型。
Stata 参考 · R 参考
spmatrix create idistance W, normalize(row)
{ D <- as.matrix(stats::dist(data[c("x", "y")])); W <- matrix(0, nrow(D), ncol(D)); off <- row(D) != col(D); W[off] <- 1 / D[off]; W / rowSums(W) }
stats
行标准化逆距离空间权重
与 Stata 有差异: 固定流程;请明确调整示例列名。要求平面距离、位置互异且矩阵行列ID顺序一致;Stata默认谱标准化,本例明确使用行标准化。
Stata 参考 · R 参考
spset id, coord(x y)
sf::st_as_sf(data, coords = c("x", "y"), crs = 3857, remove = FALSE)
sf
声明平面点几何及坐标参考系统
与 Stata 有差异: 固定流程;请明确调整示例列名。sf对象不设置Stata数据元信息;坐标与CRS必须符合真实数据,不能给经纬度直接指定投影坐标系。
Stata 参考 · R 参考

因果推断

Stata R 用途、差异及来源
boottest treat, cluster(group) reps(199) weighttype(rademacher) seed(128)
fwildclusterboot::boottest(fit, param = "treat", clustid = "group", B = 199, type = "rademacher", impose_null = TRUE, conf_int = FALSE, engine = "R-lean")
fwildclusterboot
施加原假设的野生聚类自助法:rademacher权重
与 Stata 有差异: 固定流程;请明确调整示例列名。较少重复次数仅供可执行示范;须统一自助法类型、聚类和有限样本修正。软件首次报告随机种子行为变更警告;R及dqrng随机数均已设种子。 fwildclusterboot 0.13 改变了随机数种子机制,不应预期相同种子与旧版本结果完全一致。
Stata 参考 · R 参考
boottest treat, cluster(group) reps(199) weighttype(webb) seed(128)
fwildclusterboot::boottest(fit, param = "treat", clustid = "group", B = 199, type = "webb", impose_null = TRUE, conf_int = FALSE, engine = "R-lean")
fwildclusterboot
施加原假设的野生聚类自助法:webb权重
与 Stata 有差异: 固定流程;请明确调整示例列名。较少重复次数仅供可执行示范;须统一自助法类型、聚类和有限样本修正。软件首次报告随机种子行为变更警告;R及dqrng随机数均已设种子。 fwildclusterboot 0.13 改变了随机数种子机制,不应预期相同种子与旧版本结果完全一致。
Stata 参考 · R 参考
cem category, treatment(treat)
MatchIt::matchit(treat ~ category, data = transform(data, category = as.integer(category) - 1L), method = "cem", estimand = "ATT", cutpoints = list(category = 0))
MatchIt
分类协变量的粗化精确匹配
固定流程;请明确调整示例列名。仅进行匹配预处理;分类水平不需要连续切点。连续变量须明确统一切点和目标估计量,不能依赖不同软件默认值。
Stata 参考 · R 参考
did_imputation y id time cohort
{ baseline <- stats::lm(y ~ factor(id) + factor(time) + x, data = data, subset = treated == 0); effects <- data$y - stats::predict(baseline, newdata = data); mean(effects[data$treated == 1]) }
stats
所有处理观察的平均插补处理效应
固定流程;请明确调整示例列名。仅点估计流程;未处理结局模型、权重及受支持的处理观察须明确选择。
Stata 参考 · R 参考
did_imputation y id time cohort, allhorizons
{ untreated <- data$treated == 0; baseline <- stats::lm(y ~ factor(id) + factor(time) + x, data = data, subset = untreated); effects <- data$y - stats::predict(baseline, newdata = data); keep <- data$treated == 1; stats::aggregate(effects[keep], list(horizon = data$time[keep] - data$cohort[keep]), mean) }
stats
按事件时间汇总未处理结果插补效应
固定流程;请明确调整示例列名。仅使用未处理观察学习个体和时间效应的点估计示例。Stata的从未处理队列应设缺失,本例R使用范围外标记;不复现影响函数方差、自动样本或前趋势检验。
Stata 参考 · R 参考
drdid y x, ivar(id) time(time) treatment(treated) dripw
{ ps <- stats::fitted(stats::glm(treated ~ x, data = data, family = stats::binomial())); m0 <- stats::predict(stats::lm(dy ~ x, data = data, subset = treated == 0), data); weighted.mean(data$dy - m0, data$treated) - weighted.mean(data$dy - m0, (1 - data$treated) * ps / (1 - ps)) }
stats
两期面板双重稳健DiD ATT点估计
固定流程;请明确调整示例列名。宽数据的dripw点估计:Logistic倾向模型加对照组结局变化OLS。Stata使用长数据;不含影响函数方差或改进drimp估计量。
Stata 参考 · R 参考
drdid y x, ivar(id) time(time) treatment(treated) reg
{ m0 <- stats::predict(stats::lm(dy ~ x, data = data, subset = treated == 0), data); mean((data$dy - m0)[data$treated == 1]) }
stats
面板结果回归DiD ATT点估计
固定流程;请明确调整示例列名。两期宽数据回归调整流程;要求条件平行趋势和无预期,不计算标准误。
Stata 参考 · R 参考
drdid y x, ivar(id) time(time) treatment(treated) stdipw
{ ps <- stats::fitted(stats::glm(treated ~ x, data = data, family = stats::binomial())); mean(data$dy[data$treated == 1]) - weighted.mean(data$dy, (1 - data$treated) * ps / (1 - ps)) }
stats
稳定逆概率加权DiD ATT
固定流程;请明确调整示例列名。两期宽数据点估计,不含影响函数方差,未实现重复截面估计。
Stata 参考 · R 参考
ebalance treat x z, targets(1)
WeightIt::weightit(treat ~ x + z, data = data, method = "ebal", estimand = "ATT", moments = 1)
WeightIt
熵平衡处理与对照协变量:至1阶矩
固定流程;请明确调整示例列名。针对处理组总体的预处理权重;须统一归一化、高阶矩和优化容差,不含结局标准误。
Stata 参考 · R 参考
ebalance treat x z, targets(2)
WeightIt::weightit(treat ~ x + z, data = data, method = "ebal", estimand = "ATT", moments = 2)
WeightIt
熵平衡处理与对照协变量:至2阶矩
固定流程;请明确调整示例列名。针对处理组总体的预处理权重;须统一归一化、高阶矩和优化容差,不含结局标准误。
Stata 参考 · R 参考
estat endogenous
summary(AER::ivreg(y ~ x + w | z + w, data = data), diagnostics = TRUE)$diagnostics
AER
工具变量弱相关和内生性诊断
与 Stata 有差异: 固定流程;请明确调整示例列名。Wu-Hausman检验依赖模型假设;恰好识别模型不能做过度识别检验。
Stata 参考 · R 参考
estat firststage
summary(stats::lm(x ~ z + w, data = data))
stats
第一阶段工具变量相关性回归
固定流程;请明确调整示例列名。展示完整第一阶段回归;排除工具变量联合F检验可能需要嵌套比较。
Stata 参考 · R 参考
eventstudyinteract y lead3 lead2 lag0 lag1 lag2, absorb(id time) cohort(cohort) control_cohort(never)
{ fit <- fixest::feols(y ~ sunab(cohort, time, ref.p = -1) | id + time, data = data, vcov = ~id, nthreads = 1); stats::aggregate(fit, agg = "ATT") }
fixest
汇总队列交互的处理后效应
固定流程;请明确调整示例列名。ATT汇总为R后估计步骤;须匹配事件时间及队列权重,不能直接等权平均系数。
Stata 参考 · R 参考
eventstudyinteract y lead3 lead2 lag0 lag1 lag2, absorb(id time) cohort(cohort) control_cohort(never) covariates(x) vce(cluster id)
fixest::feols(y ~ sunab(cohort, time, ref.p = -1) + x | id + time, data = data, vcov = ~id, nthreads = 1)
fixest
Sun-Abraham队列交互事件研究估计
与 Stata 有差异: 固定流程;请明确调整示例列名。使用从未处理队列为对照,事件时间-1为参考;须统一期限支持、队列份额汇总和协方差约定。
Stata 参考 · R 参考
gencohort cohort, group(id) time(time) treat(treated)
transform(data, cohort = ave(ifelse(treated == 1, time, Inf), id, FUN = function(v) { first <- min(v); rep(if(is.infinite(first)) 0 else first, length(v)) }))
stats
构造首次处理队列并标记从未处理者
与 Stata 有差异: 固定流程;请明确调整示例列名。以零表示从未处理队列;要求处理一旦开始便持续且个体时间组合唯一。插补估计量可能要求用缺失表示从未处理时间。
Stata 参考 · R 参考
ivreghdfe y z (x = instrument), absorb(id time)
fixest::feols(y ~ z | id + time | x ~ instrument, data = data, vcov = "iid", nthreads = 1)
fixest
双重吸收固定效应工具变量
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;推断比较前须统一单例处理、协方差修正和吸收效应自由度。
Stata 参考 · R 参考
ivreghdfe y z (x = instrument), absorb(id time) cluster(id)
fixest::feols(y ~ z | id + time | x ~ instrument, data = data, vcov = ~id, nthreads = 1)
fixest
聚类稳健吸收效应工具变量
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;推断比较前须统一单例处理、协方差修正和吸收效应自由度。
Stata 参考 · R 参考
ivreghdfe y z (x = instrument), absorb(id time) robust
fixest::feols(y ~ z | id + time | x ~ instrument, data = data, vcov = "hetero", nthreads = 1)
fixest
异方差稳健吸收效应工具变量
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;推断比较前须统一单例处理、协方差修正和吸收效应自由度。
Stata 参考 · R 参考
ivreghdfe y z (x = instrument), absorb(id)
fixest::feols(y ~ z | id | x ~ instrument, data = data, vcov = "iid", nthreads = 1)
fixest
个体固定效应工具变量
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;推断比较前须统一单例处理、协方差修正和吸收效应自由度。
Stata 参考 · R 参考
ivregress 2sls y w (x = z)
AER::ivreg(y ~ x + w | z + w, data = data)
AER
公式式工具变量回归
与 Stata 有差异: 固定流程;请明确调整示例列名。使用公式竖线分隔结构解释变量和工具变量。
Stata 参考 · R 参考
ivregress 2sls y w (x = z), vce(cluster cluster)
estimatr::iv_robust(y ~ x + w | z + w, data = data, clusters = cluster, se_type = "stata")
estimatr
聚类稳健两阶段最小二乘
与 Stata 有差异: 固定流程;请明确调整示例列名。已明确采用小聚类参考自由度。
Stata 参考 · R 参考
ivregress 2sls y w (x = z), vce(robust)
estimatr::iv_robust(y ~ x + w | z + w, data = data, se_type = "HC2")
estimatr
两阶段最小二乘协方差:HC2
与 Stata 有差异: 固定流程;请明确调整示例列名。HC修正不同;estimatr的stata选项在非聚类IV中对应HC1。
Stata 参考 · R 参考
ivregress 2sls y w (x = z), vce(robust)
estimatr::iv_robust(y ~ x + w | z + w, data = data, se_type = "HC3")
estimatr
两阶段最小二乘协方差:HC3
与 Stata 有差异: 固定流程;请明确调整示例列名。HC修正不同;estimatr的stata选项在非聚类IV中对应HC1。
Stata 参考 · R 参考
ivregress 2sls y w (x = z), vce(robust) small
estimatr::iv_robust(y ~ x + w | z + w, data = data, se_type = "HC1")
estimatr
两阶段最小二乘协方差:HC1
与 Stata 有差异: Stata的small请求N/(N-K)的HC1修正及t分布推断。无聚类IV中,estimatr的se_type="stata"是HC1的别名。不指定small时,ivregress vce(robust)采用HC0和正态参考分布,默认推断不同。
Stata 参考 · R 参考
ivregress 2sls y w (x = z), vce(robust) small
estimatr::iv_robust(y ~ x + w | z + w, data = data, se_type = "stata")
estimatr
两阶段最小二乘协方差:stata
与 Stata 有差异: Stata的small请求N/(N-K)的HC1修正及t分布推断。无聚类IV中,estimatr的se_type="stata"是HC1的别名。不指定small时,ivregress vce(robust)采用HC0和正态参考分布,默认推断不同。
Stata 参考 · R 参考
kmatch eb treat x z (y), att targets(1)
WeightIt::weightit(treat ~ x + z, data = data, method = "ebal", estimand = "ATT", moments = 1)
WeightIt
熵平衡处理与对照协变量:至1阶矩
固定流程;请明确调整示例列名。针对处理组总体的预处理权重;须统一归一化、高阶矩和优化容差,不含结局标准误。
Stata 参考 · R 参考
kmatch eb treat x z (y), att targets(2)
WeightIt::weightit(treat ~ x + z, data = data, method = "ebal", estimand = "ATT", moments = 2)
WeightIt
熵平衡处理与对照协变量:至2阶矩
固定流程;请明确调整示例列名。针对处理组总体的预处理权重;须统一归一化、高阶矩和优化容差,不含结局标准误。
Stata 参考 · R 参考
kmatch em treat category (y), att
MatchIt::matchit(treat ~ category, data = data, method = "exact", estimand = "ATT")
MatchIt
分类协变量的精确匹配
固定流程;请明确调整示例列名。精确匹配预处理;目标估计量和分层归一化均已明确。
Stata 参考 · R 参考
kmatch ipw treat x z (y), att
WeightIt::weightit(treat ~ x + z, data = data, method = "glm", estimand = "ATT")
WeightIt
处理组目标的逆概率加权
固定流程;请明确调整示例列名。仅提供权重;结局对比和倾向估计方差须另行估计。
Stata 参考 · R 参考
kmatch md treat x z (y), att nn(1)
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "mahalanobis", replace = TRUE, estimand = "ATT")
MatchIt
多变量Mahalanobis匹配
固定流程;请明确调整示例列名。明确采用最近邻,替代kmatch默认核匹配;仅匹配预处理。
Stata 参考 · R 参考
kmatch ps treat x z (y), att nn(1)
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "glm", replace = TRUE, estimand = "ATT")
MatchIt
倾向得分最近邻匹配
固定流程;请明确调整示例列名。明确采用最近邻,替代kmatch默认核匹配;仅匹配预处理。
Stata 参考 · R 参考
psmatch2 treat x z, outcome(y) logit neighbor(1)
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "glm", link = "logit", replace = TRUE, estimand = "ATT")
MatchIt
倾向得分最近邻匹配:有放回
固定流程;请明确调整示例列名。返回匹配预处理,不返回psmatch2结局估计及方差;须明确放回、并列值和匹配顺序。
Stata 参考 · R 参考
psmatch2 treat x z, outcome(y) logit neighbor(1)
{ match <- MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "glm", replace = TRUE, estimand = "ATT"); matched <- MatchIt::match_data(match); with(matched, weighted.mean(y[treat == 1], weights[treat == 1]) - weighted.mean(y[treat == 0], weights[treat == 0])) }
MatchIt
倾向得分匹配后的ATT点对比
固定流程;请明确调整示例列名。仅点对比,不估计方差;匹配并列值和顺序可能不同。
Stata 参考 · R 参考
psmatch2 treat x z, outcome(y) logit neighbor(1) caliper(.1)
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "glm", link = "logit", replace = TRUE, caliper = .1, std.caliper = FALSE, estimand = "ATT")
MatchIt
绝对卡尺倾向得分匹配
固定流程;请明确调整示例列名。使用概率尺度绝对卡尺;MatchIt默认标准化卡尺,必须显式关闭。结局估计另行进行。
Stata 参考 · R 参考
psmatch2 treat x z, outcome(y) logit neighbor(1) noreplacement
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "glm", link = "logit", replace = FALSE, estimand = "ATT")
MatchIt
倾向得分最近邻匹配:无放回
固定流程;请明确调整示例列名。返回匹配预处理,不返回psmatch2结局估计及方差;须明确放回、并列值和匹配顺序。
Stata 参考 · R 参考
psmatch2 treat, outcome(y) mahalanobis(x z) neighbor(1)
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "mahalanobis", replace = TRUE, estimand = "ATT")
MatchIt
有放回Mahalanobis匹配
固定流程;请明确调整示例列名。仅匹配预处理;协方差归一化和并列处理可能不同于psmatch2。
Stata 参考 · R 参考
pstest x z, both
cobalt::bal.tab(match, un = TRUE)
cobalt
匹配前后标准化协变量平衡
固定流程;请明确调整示例列名。psmatch2配套命令;须选择相同标准化分母。cobalt平衡表不复现pstest所有t检验和总体汇总量。
Stata 参考 · R 参考
rdbwdensity x
rddensity::rdbwdensity(x)
rddensity
密度断点检验带宽选择
与 Stata 有差异: 固定流程;请明确调整示例列名。带宽优化针对密度估计,而非处理效应估计。
Stata 参考 · R 参考
rdbwselect y x, bwselect(cerrd)
rdrobust::rdbwselect(y, x, bwselect = "cerrd")
rdrobust
断点带宽选择:cerrd
与 Stata 有差异: 固定流程;请明确调整示例列名。rdrobust官方配套命令;各带宽选择方法对应不同优化目标。
Stata 参考 · R 参考
rdbwselect y x, bwselect(certwo)
rdrobust::rdbwselect(y, x, bwselect = "certwo")
rdrobust
断点带宽选择:certwo
与 Stata 有差异: 固定流程;请明确调整示例列名。rdrobust官方配套命令;各带宽选择方法对应不同优化目标。
Stata 参考 · R 参考
rdbwselect y x, bwselect(mserd)
rdrobust::rdbwselect(y, x, bwselect = "mserd")
rdrobust
断点带宽选择:mserd
与 Stata 有差异: 固定流程;请明确调整示例列名。rdrobust官方配套命令;各带宽选择方法对应不同优化目标。
Stata 参考 · R 参考
rdbwselect y x, bwselect(msetwo)
rdrobust::rdbwselect(y, x, bwselect = "msetwo")
rdrobust
断点带宽选择:msetwo
与 Stata 有差异: 固定流程;请明确调整示例列名。rdrobust官方配套命令;各带宽选择方法对应不同优化目标。
Stata 参考 · R 参考
rddensity x
rddensity::rddensity(x)
rddensity
处理阈值处密度连续性
与 Stata 有差异: 固定流程;请明确调整示例列名。仅检验密度连续性,不能检验全部断点识别假设。
Stata 参考 · R 参考
rddensity x, h(.4 .4)
rddensity::rddensity(x, h = c(.4, .4))
rddensity
固定带宽密度连续性
与 Stata 有差异: 固定流程;请明确调整示例列名。仅检验密度连续性,不能检验全部断点识别假设。
Stata 参考 · R 参考
rddensity x, p(3)
rddensity::rddensity(x, p = 3)
rddensity
三次局部多项式密度断点
与 Stata 有差异: 固定流程;请明确调整示例列名。仅检验密度连续性,不能检验全部断点识别假设。
Stata 参考 · R 参考
rdrobust y x
rdrobust::rdrobust(y, x)
rdrobust
精确局部线性断点回归
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, bwselect(cerrd)
rdrobust::rdrobust(y, x, bwselect = "cerrd")
rdrobust
覆盖误差最优断点带宽
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, bwselect(msetwo)
rdrobust::rdrobust(y, x, bwselect = "msetwo")
rdrobust
两侧分别选择MSE最优带宽
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, cluster(cluster)
rdrobust::rdrobust(y, x, cluster = cluster)
rdrobust
聚类稳健断点推断
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, covs(z)
rdrobust::rdrobust(y, x, covs = z)
rdrobust
协变量调整断点回归
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, fuzzy(treat)
rdrobust::rdrobust(y, x, fuzzy = treat)
rdrobust
模糊断点回归
与 Stata 有差异: 固定流程;请明确调整示例列名。要求排除限制、处理概率断点及适当单调性假设。
Stata 参考 · R 参考
rdrobust y x, h(.4)
rdrobust::rdrobust(y, x, h = .4)
rdrobust
固定对称带宽断点回归
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, kernel(epanechnikov)
rdrobust::rdrobust(y, x, kernel = "epanechnikov")
rdrobust
Epanechnikov核断点回归
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, kernel(uniform)
rdrobust::rdrobust(y, x, kernel = "uniform")
rdrobust
均匀核断点回归
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, level(90)
rdrobust::rdrobust(y, x, level = 90)
rdrobust
90%置信区间断点回归
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
rdrobust y x, p(2)
rdrobust::rdrobust(y, x, p = 2)
rdrobust
局部二次断点回归
与 Stata 有差异: 固定流程;请明确调整示例列名。用户编写的Stata命令;须统一版本、带宽、核和方差设置,不声称示例数值完全一致。
Stata 参考 · R 参考
tebalance summarize
cobalt::bal.tab(w, un = TRUE)
cobalt
加权前后协变量平衡
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一标准化分母和二元变量尺度。
Stata 参考 · R 参考
teffects aipw (y x z) (treat x z)
{ ps <- stats::fitted(stats::glm(treat ~ x + z, data, family = stats::binomial())); m0 <- stats::predict(stats::lm(y ~ x + z, data, subset = treat == 0), data); m1 <- stats::predict(stats::lm(y ~ x + z, data, subset = treat == 1), data); mean(m1 - m0 + data$treat * (data$y - m1) / ps - (1 - data$treat) * (data$y - m0) / (1 - ps)) }
stats
增广逆概率加权ATE点估计
与 Stata 有差异: 固定流程;请明确调整示例列名。不计算标准误;双重稳健仍要求重叠性及因果识别假设。
Stata 参考 · R 参考
teffects ipw (y) (treat x z)
WeightIt::weightit(treat ~ x + z, data = data, method = "glm", estimand = "ATE")
WeightIt
倾向得分权重目标:ATE
固定流程;请明确调整示例列名。仅计算权重,不计算处理效应或标准误;ATO和ATC属于替代目标总体。
Stata 参考 · R 参考
teffects ipw (y) (treat x z)
WeightIt::weightit(treat ~ x + z, data = data, method = "glm", estimand = "ATC")
WeightIt
倾向得分权重目标:ATC
固定流程;请明确调整示例列名。仅计算权重,不计算处理效应或标准误;ATO和ATC属于替代目标总体。
Stata 参考 · R 参考
teffects ipw (y) (treat x z)
WeightIt::weightit(treat ~ x + z, data = data, method = "glm", estimand = "ATO")
WeightIt
倾向得分权重目标:ATO
固定流程;请明确调整示例列名。仅计算权重,不计算处理效应或标准误;ATO和ATC属于替代目标总体。
Stata 参考 · R 参考
teffects ipw (y) (treat x z)
{ w <- WeightIt::weightit(treat ~ x + z, data = data, method = "glm", estimand = "ATE")$weights; weighted.mean(data$y[data$treat == 1], w[data$treat == 1]) - weighted.mean(data$y[data$treat == 0], w[data$treat == 0]) }
WeightIt
ATE目标的归一化逆概率加权点效应
与 Stata 有差异: 固定流程;请明确调整示例列名。仅点估计;无结局权重要求条件可交换性和重叠性,未量化估计权重的不确定性。
Stata 参考 · R 参考
teffects ipw (y) (treat x z) , atet
WeightIt::weightit(treat ~ x + z, data = data, method = "glm", estimand = "ATT")
WeightIt
倾向得分权重目标:ATT
固定流程;请明确调整示例列名。仅计算权重,不计算处理效应或标准误;ATO和ATC属于替代目标总体。
Stata 参考 · R 参考
teffects ipw (y) (treat x z) , atet
{ w <- WeightIt::weightit(treat ~ x + z, data = data, method = "glm", estimand = "ATT")$weights; weighted.mean(data$y[data$treat == 1], w[data$treat == 1]) - weighted.mean(data$y[data$treat == 0], w[data$treat == 0]) }
WeightIt
ATT目标的归一化逆概率加权点效应
与 Stata 有差异: 固定流程;请明确调整示例列名。仅点估计;无结局权重要求条件可交换性和重叠性,未量化估计权重的不确定性。
Stata 参考 · R 参考
teffects ipwra (y x z) (treat x z)
{ ps <- stats::fitted(stats::glm(treat ~ x + z, data, family = stats::binomial())); data$w <- ifelse(data$treat == 1, 1 / ps, 1 / (1 - ps)); m0 <- stats::predict(stats::lm(y ~ x + z, data, subset = treat == 0, weights = w), data); m1 <- stats::predict(stats::lm(y ~ x + z, data, subset = treat == 1, weights = w), data); mean(m1 - m0) }
stats
逆概率加权结果回归ATE
与 Stata 有差异: 固定流程;请明确调整示例列名。仅点估计;Stata同时计算估计方程方差。
Stata 参考 · R 参考
teffects nnmatch (y x z) (treat), atet
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "mahalanobis", replace = TRUE, estimand = "ATT")
MatchIt
Mahalanobis最近邻预处理
与teffects一样使用放回匹配。MatchIt返回预处理权重和匹配关系,不返回处理效应估计;并列处理、距离约定、偏差修正及Abadie-Imbens标准误须另行统一。
Stata 参考 · R 参考
teffects psmatch (y) (treat x z), nneighbor(1) atet
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "glm", ratio = 1, replace = TRUE, estimand = "ATT")
MatchIt
一对一最近倾向得分匹配
与teffects一样使用放回匹配。MatchIt返回预处理权重和匹配关系,不返回处理效应估计;并列处理、距离约定、偏差修正及Abadie-Imbens标准误须另行统一。
Stata 参考 · R 参考
teffects psmatch (y) (treat x z), nneighbor(1) atet
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "glm", ratio = 1, replace = TRUE, estimand = "ATT")
MatchIt
有放回倾向得分匹配
固定流程;请明确调整示例列名。仅匹配预处理,不复现teffects偏差修正或Abadie-Imbens标准误。
Stata 参考 · R 参考
teffects psmatch (y) (treat x z), nneighbor(2) atet
MatchIt::matchit(treat ~ x + z, data = data, method = "nearest", distance = "glm", ratio = 2, replace = TRUE, estimand = "ATT")
MatchIt
一对二最近倾向得分匹配
与teffects一样使用放回匹配。MatchIt返回预处理权重和匹配关系,不返回处理效应估计;并列处理、距离约定、偏差修正及Abadie-Imbens标准误须另行统一。
Stata 参考 · R 参考
teffects ra (y x z) (treat)
{ fit0 <- stats::lm(y ~ x + z, data, subset = treat == 0); fit1 <- stats::lm(y ~ x + z, data, subset = treat == 1); mean(stats::predict(fit1, data) - stats::predict(fit0, data)) }
stats
回归调整平均处理效应
与 Stata 有差异: 固定流程;请明确调整示例列名。在潜在结局模型正确时进行g计算点估计;仅拟合模型不能建立因果识别。
Stata 参考 · R 参考
teffects ra (y x z) (treat), atet
{ fit0 <- stats::lm(y ~ x + z, data, subset = treat == 0); fit1 <- stats::lm(y ~ x + z, data, subset = treat == 1); treated <- data[data$treat == 1, ]; mean(stats::predict(fit1, treated) - stats::predict(fit0, treated)) }
stats
处理组的回归调整效应
与 Stata 有差异: 固定流程;请明确调整示例列名。在处理组协变量分布上平均反事实差异。
Stata 参考 · R 参考
teoverlap
{ ps <- stats::fitted(stats::glm(treat ~ x + z, data, family = stats::binomial())); lapply(split(ps, data$treat), function(v) stats::quantile(v, c(0, .05, .5, .95, 1))) }
stats
按处理状态汇总倾向得分重叠
固定流程;请明确调整示例列名。仅提供数值重叠诊断,不绘制密度或自动修剪样本。
Stata 参考 · R 参考
xtdidregress (y x) (treated), group(id) time(time)
fixest::feols(y ~ treated + x | id + time, data = data, vcov = ~id, nthreads = 1)
fixest
个体和时期固定效应面板双重差分
与 Stata 有差异: 固定流程;请明确调整示例列名。示例为平行趋势和无预期下的两组同质效应设计。处理错时且效应异质时,TWFE不能替代现代队列特异估计;协方差有限样本约定可能不同。
Stata 参考 · R 参考

面板数据

Stata R 用途、差异及来源
hausman fixed random
plm::phtest(fe, re)
plm
固定与随机效应Hausman比较
与 Stata 有差异: 固定流程;请明确调整示例列名。要求解释变量相同且协方差假设相容。
Stata 参考 · R 参考
xtcloglog binary x, re
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "cloglog"), nAGQ = 12)
lme4
随机截距面板互补对数模型
与 Stata 有差异: 采用正态面板随机截距和12点自适应求积,与Stata的intpoints(12)一致;求积适配方法和收敛准则仍因软件而异。
Stata 参考 · R 参考
xtdpd y L.y x, div(x) dgmmiv(y, lagrange(2 3))
{ plm <- plm::plm; plm::pgmm(y ~ lag(y, 1) + x | lag(y, 2:3), data = pd, effect = "individual", model = "onestep", transformation = "d", collapse = TRUE) }
plm
动态面板一步差分GMM
与 Stata 有差异: 固定流程;请明确调整示例列名。仅支持标准差分GMM子集,并明确压缩工具变量。xtdpd还支持更复杂误差过程;比较前须统一工具变量、初始权重矩阵及有限样本修正。
Stata 参考 · R 参考
xtdpdsys y x, maxldep(3)
{ plm <- plm::plm; plm::pgmm(y ~ lag(y, 1) + x | lag(y, 2:3), data = pd, effect = "individual", model = "onestep", transformation = "ld", collapse = TRUE) }
plm
水平方程与差分方程的系统GMM
与 Stata 有差异: 固定流程;请明确调整示例列名。额外水平方程矩条件要求更强的初始条件假设;须明确统一工具变量压缩、范围及权重,不能声称与xtdpdsys默认设置完全相同。
Stata 参考 · R 参考
xtgee binary x, family( binomial ) corr( ar1 )
geepack::geeglm(binary ~ x, id = id, waves = time, data = data, family = stats::binomial(), corstr = "ar1")
geepack
binomial GEE:ar1工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgee binary x, family( binomial ) corr( exchangeable )
geepack::geeglm(binary ~ x, id = id, waves = time, data = data, family = stats::binomial(), corstr = "exchangeable")
geepack
binomial GEE:exchangeable工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgee binary x, family( binomial ) corr( independence )
geepack::geeglm(binary ~ x, id = id, waves = time, data = data, family = stats::binomial(), corstr = "independence")
geepack
binomial GEE:independence工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgee count x, family( poisson ) corr( ar1 )
geepack::geeglm(count ~ x, id = id, waves = time, data = data, family = stats::poisson(), corstr = "ar1")
geepack
poisson GEE:ar1工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgee count x, family( poisson ) corr( exchangeable )
geepack::geeglm(count ~ x, id = id, waves = time, data = data, family = stats::poisson(), corstr = "exchangeable")
geepack
poisson GEE:exchangeable工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgee count x, family( poisson ) corr( independence )
geepack::geeglm(count ~ x, id = id, waves = time, data = data, family = stats::poisson(), corstr = "independence")
geepack
poisson GEE:independence工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgee y x, family( gaussian ) corr( ar1 )
geepack::geeglm(y ~ x, id = id, waves = time, data = data, family = stats::gaussian(), corstr = "ar1")
geepack
gaussian GEE:ar1工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgee y x, family( gaussian ) corr( exchangeable )
geepack::geeglm(y ~ x, id = id, waves = time, data = data, family = stats::gaussian(), corstr = "exchangeable")
geepack
gaussian GEE:exchangeable工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgee y x, family( gaussian ) corr( independence )
geepack::geeglm(y ~ x, id = id, waves = time, data = data, family = stats::gaussian(), corstr = "independence")
geepack
gaussian GEE:independence工作相关结构
与 Stata 有差异: 观测须按连续面板排序。geeglm默认用夹心稳健标准误(std.err="san.se"),对应xtgee, vce(robust);Stata默认采用常规模型型标准误。尺度估计、有限样本修正和相关结构估计仍可能不同。
Stata 参考 · R 参考
xtgls y x z, panels(heteroskedastic) igls
nlme::gls(y ~ x + z, data = data, weights = nlme::varIdent(form = ~1 | id), method = "ML")
nlme
组间异方差面板极大似然GLS
固定流程;请明确调整列名。共同斜率、独立残差及组别特异残差方差;似然、方差归一化和收敛标准可能不同。
Stata 参考 · R 参考
xthtaylor y x1 x2 a b, endog(x2 b) constant(a b)
plm::plm(y ~ x1 + x2 + a + b | x1 + a | x2, data = data, index = c("id", "time"), random.method = "ht", model = "random", inst.method = "baltagi")
plm
含时变与时不变内生协变量的Hausman-Taylor模型
与 Stata 有差异: 固定流程;请明确调整示例列名。R三部分公式明确区分外生协变量及时变内生协变量;时不变内生效应识别要求足够的外生时变工具变量,这些分类须有实质依据。
Stata 参考 · R 参考
xtivreg y z (x = instrument), fe
plm::plm(y ~ x + z | instrument + z, data = pd, model = "within")
plm
固定效应工具变量回归
与 Stata 有差异: 固定流程;请明确调整示例列名。工具变量有效性须有实质论证;此数据仅检验代码可执行性。
Stata 参考 · R 参考
xtlogit binary x, fe
{ coxph <- survival::coxph; survival::clogit(binary ~ x + survival::strata(id), data = data) }
survival
条件固定效应Logistic回归
与 Stata 有差异: 固定流程;请明确调整示例列名。通过条件似然消去组截距;组内结局不变化的组不提供系数信息。
Stata 参考 · R 参考
xtpcse y x z, correlation(independent)
{ fit <- plm::plm(y ~ x + z, data = pd, model = "pooling"); lmtest::coeftest(fit, vcov. = plm::vcovBK(fit, type = "HC0", cluster = "time")) }
plm
Beck-Katz面板修正协方差
与 Stata 有差异: vcovBK(cluster="time")允许PCSE所需的同期跨面板相关;面板平衡性、成对缺失处理、有限样本缩放及检验参考分布仍可能与xtpcse不同。
Stata 参考 · R 参考
xtpoisson count x, re normal
lme4::glmer(count ~ x + (1 | id), data = data, family = stats::poisson(link = "log"), nAGQ = 12)
lme4
随机截距面板Poisson
与 Stata 有差异: 采用正态面板随机截距和12点自适应求积,与Stata的默认求积点数一致。xtpoisson须指定re normal才采用该分布,其单独re的默认分布为gamma。求积适配方法和收敛准则仍因软件而异。
Stata 参考 · R 参考
xtprobit binary x, re
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "probit"), nAGQ = 12)
lme4
随机截距面板Probit
与 Stata 有差异: 采用正态面板随机截距和12点自适应求积,与Stata的intpoints(12)一致;求积适配方法和收敛准则仍因软件而异。
Stata 参考 · R 参考
xtrc y x z
nlme::lme(y ~ x + z, random = ~ x + z | id, data = data, method = "ML")
nlme
随机系数面板模型流程
截距、x和z三个系数均随面板变化。nlme用ML拟合高斯混合模型;xtrc采用Swamy随机系数GLS,故估计方法和协方差估计不同。
Stata 参考 · R 参考
xtreg y x z i.time, fe
plm::plm(y ~ x + z, data = pd, model = "within", effect = "twoways")
plm
个体和时间双向固定效应
与 Stata 有差异: 固定流程;请明确调整示例列名。一阶差分和混合回归是明确的基准替代;须匹配估计量和效应结构。
Stata 参考 · R 参考
xtreg y x z, be
plm::plm(y ~ x + z, data = pd, model = "between", effect = "individual")
plm
组间回归
与 Stata 有差异: 固定流程;请明确调整示例列名。一阶差分和混合回归是明确的基准替代;须匹配估计量和效应结构。
Stata 参考 · R 参考
xtreg y x z, fe
plm::plm(y ~ x + z, data = pd, model = "within", effect = "individual")
plm
个体固定效应
与 Stata 有差异: 固定流程;请明确调整示例列名。一阶差分和混合回归是明确的基准替代;须匹配估计量和效应结构。
Stata 参考 · R 参考
xtreg y x z, fe
plm::plm(y ~ x + z, data = pd, model = "within", effect = "individual")
plm
拟合组内固定效应面板回归
两端均通过组内变换拟合个体固定效应。plm报告变换模型系数向量,不含Stata所报告截距;残差自由度和协方差缩放须另行统一。
Stata 参考 · R 参考
xtreg y x z, fe vce(cluster id)
{ V <- plm::vcovHC(fit, method = "arellano", type = "HC1", cluster = "group"); lmtest::coeftest(fit, vcov. = V) }
plm
按个体聚类的面板稳健标准误
与 Stata 有差异: Stata的xtreg, fe vce(robust)等同于vce(cluster id)。plm的HC1采用N/(N-K),K按组内模型系数计数,coeftest采用残差自由度;Stata还应用聚类修正,并以G-1为检验自由度。因此标准误和p值不构成Stata有限样本精确对应。
Stata 参考 · R 参考
xtreg y x z, fe vce(robust)
{ V <- plm::vcovHC(fit, method = "arellano", type = "HC1", cluster = "group"); lmtest::coeftest(fit, vcov. = V) }
plm
组内估计的面板聚类稳健标准误
与 Stata 有差异: Stata的xtreg, fe vce(robust)等同于vce(cluster id)。plm的HC1采用N/(N-K),K按组内模型系数计数,coeftest采用残差自由度;Stata还应用聚类修正,并以G-1为检验自由度。因此标准误和p值不构成Stata有限样本精确对应。
Stata 参考 · R 参考
xtreg y x z, pa corr(independent)
plm::plm(y ~ x + z, data = pd, model = "pooling", effect = "individual")
plm
混合面板回归基准
工作相关结构为独立时,高斯总体平均GEE与混合OLS的系数相同。xtreg, pa默认采用常规模型型GEE协方差,须显式指定才使用稳健协方差;plm混合回归按OLS残差缩放,故报告的标准误可能不同。
Stata 参考 · R 参考
xtreg y x z, re
plm::plm(y ~ x + z, data = pd, model = "random", effect = "individual")
plm
随机效应面板回归
与 Stata 有差异: 固定流程;请明确调整示例列名。一阶差分和混合回归是明确的基准替代;须匹配估计量和效应结构。
Stata 参考 · R 参考
xtreg y x z, re
plm::plm(y ~ x + z, data = pd, model = "random", random.method = "swar")
plm
随机效应方差分量估计:swar
固定流程;请明确调整示例列名。这些是不同的方差分量估计方法,方法一致时方可比较估计值。
Stata 参考 · R 参考
xtreg y x z, re
plm::plm(y ~ x + z, data = pd, model = "random", random.method = "walhus")
plm
随机效应方差分量估计:walhus
Walhus是R中的替代方差分量估计方法,xtreg没有对应选项。Stata的xtreg, re使用默认方法,或以sa选择Swamy-Arora;所示Stata命令不选择Walhus,不表示数值对应。
Stata 参考 · R 参考
xtreg y x z, re
plm::plm(y ~ x + z, data = pd, model = "random", random.method = "amemiya")
plm
随机效应方差分量估计:amemiya
Amemiya是R中的替代方差分量估计方法,xtreg没有对应选项。Stata的xtreg, re使用默认方法,或以sa选择Swamy-Arora;所示Stata命令不选择Amemiya,不表示数值对应。
Stata 参考 · R 参考
xtreg y x z, re
plm::plm(y ~ x + z, data = pd, model = "random", random.method = "nerlove")
plm
随机效应方差分量估计:nerlove
Nerlove是R中的替代方差分量估计方法,xtreg没有对应选项。Stata的xtreg, re使用默认方法,或以sa选择Swamy-Arora;所示Stata命令不选择Nerlove,不表示数值对应。
Stata 参考 · R 参考
xtregar y x z, re
nlme::lme(y ~ x + z, random = ~1 | id, correlation = nlme::corAR1(form = ~time | id), data = data, method = "ML")
nlme
随机截距加AR(1)残差相关
固定流程;请明确调整示例列名。基于似然的混合模型流程与xtregar估计量不同。
Stata 参考 · R 参考
xtscc y x z, fe lag(2)
{ V <- plm::vcovSCC(fit, type = "HC1", maxlag = 2); lmtest::coeftest(fit, vcov. = V) }
plm
Driscoll-Kraay协方差
与 Stata 有差异: 需要社区命令xtscc(ssc install xtscc);xtreg没有vce(dkraay)选项。两者均使用组内估计及滞后2阶的Driscoll-Kraay协方差,但有限样本缩放和检验自由度不同。
Stata 参考 · R 参考
xtreg y x z, re
xttest0
plm::plmtest(plm::plm(y ~ x + z, data = pd, model = "pooling"), type = "bp", effect = "individual")
plm
个体随机效应Breusch-Pagan检验
与 Stata 有差异: 固定流程;请明确调整示例列名。Stata的边界修正混合分布可能不同于plm的卡方参考分布。
Stata 参考 · R 参考
xtunitroot fisher y, dfuller lags(1)
plm::purtest(pd$y, test = "madwu", exo = "intercept", lags = 1, pmax = 1)
plm
面板单位根检验:madwu
与 Stata 有差异: 固定流程;请明确调整示例列名。Hadri的原假设为平稳性;确定项和滞后规则须一致。
Stata 参考 · R 参考
xtunitroot hadri y, robust
plm::purtest(pd$y, test = "hadri", exo = "intercept", Hcons = TRUE)
plm
面板单位根检验:hadri
与 Stata 有差异: 原假设是面板平稳。Hcons=TRUE选择异方差稳健Hadri统计量,对应Stata的robust;plm的Hadri检验忽略滞后选择,且不提供Bartlett HAC核修正。
Stata 参考 · R 参考
xtunitroot ips y, lags(1)
plm::purtest(pd$y, test = "ips", exo = "intercept", lags = 1, pmax = 1)
plm
面板单位根检验:ips
与 Stata 有差异: 固定流程;请明确调整示例列名。Hadri的原假设为平稳性;确定项和滞后规则须一致。
Stata 参考 · R 参考
xtunitroot llc y, lags(1)
plm::purtest(pd$y, test = "levinlin", exo = "intercept", lags = 1, pmax = 1)
plm
面板单位根检验:levinlin
与 Stata 有差异: 固定流程;请明确调整示例列名。Hadri的原假设为平稳性;确定项和滞后规则须一致。
Stata 参考 · R 参考

时间序列与预测

Stata R 用途、差异及来源
ac y, lags(12)
stats::acf(y, lag.max = 12, plot = FALSE)
stats
自相关函数
与 Stata 有差异: 固定流程;请明确调整示例列名。R返回数值相关系数;绘图需另行调用。
Stata 参考 · R 参考
arch y, arch(1) garch(1) noconstant
tseries::garch(as.numeric(y), order = c(1, 1), trace = FALSE)
tseries
GARCH(1,1)条件方差模型
与 Stata 有差异: 固定流程;请明确调整示例列名。须另拟合均值模型;优化和初始化方式不同。
Stata 参考 · R 参考
arch y, arch(1) noconstant
tseries::garch(as.numeric(y), order = c(0, 1), trace = FALSE)
tseries
ARCH(1)条件方差模型
与 Stata 有差异: 固定流程;请明确调整示例列名。tseries::garch针对零均值序列;须先去除或明确建模条件均值。
Stata 参考 · R 参考
arfima y, ar(1) ma(1)
fracdiff::fracdiff(y, nar = 1, nma = 1)
fracdiff
分数阶差分ARMA估计
与 Stata 有差异: 固定流程;请明确调整示例列名。fracdiff使用近似似然,且MA参数符号约定不同。
Stata 参考 · R 参考
arfimasoc y, maxar(1) maxma(1)
{ grid <- expand.grid(p = 0:1, q = 0:1); grid$AIC <- mapply(function(p, q) { f <- fracdiff::fracdiff(y, nar = p, nma = q); -2 * f$log.likelihood + 2 * (p + q + 2) }, grid$p, grid$q); grid }
fracdiff
分数阶ARMA阶数比较
固定流程;请明确调整示例列名。使用近似似然进行选阶,不声称数值完全一致。
Stata 参考 · R 参考
arima y x, arima(1,0,0)
stats::arima(y, order = c(1, 0, 0), xreg = x)
stats
包含外生变量的ARMAX模型
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(0,0,0) sarima(0,1,1,4)
stats::arima(y, order = c(0, 0, 0), seasonal = list(order = c(0, 1, 1), period = 4))
stats
季节差分移动平均模型
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(0,0,0) sarima(1,0,0,4)
stats::arima(y, order = c(0, 0, 0), seasonal = list(order = c(1, 0, 0), period = 4))
stats
季节自回归模型
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(0,0,1)
stats::arima(y, order = c(0, 0, 1))
stats
含截距MA(1)
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(0,1,1)
stats::arima(y, order = c(0, 1, 1))
stats
差分移动平均模型
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(1,0,0)
stats::arima(y, order = c(1, 0, 0))
stats
含截距AR(1)
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(1,0,0) diffuse
stats::arima(y, order = c(1, 0, 0), method = "ML", SSinit = "Rossignol2011")
stats
状态空间极大似然估计
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(1,0,0) noconstant
stats::arima(y, order = c(1, 0, 0), include.mean = FALSE)
stats
零均值自回归模型
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(1,0,1)
stats::arima(y, order = c(1, 0, 1))
stats
ARMA(1,1)模型
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arima y, arima(1,0,1)
stats::arima(y, order = c(1, 0, 1), method = "ML")
stats
ARMA估计方法:ML
与 Stata 有差异: 固定流程;请明确调整示例列名。明确指定似然方法,避免依赖R默认CSS-ML初始化。
Stata 参考 · R 参考
arima y, arima(1,0,1) // conditional least-squares alternative
stats::arima(y, order = c(1, 0, 1), method = "CSS")
stats
ARMA估计方法:CSS
固定流程;请明确调整示例列名。条件平方和是替代流程,并非Stata默认似然。
Stata 参考 · R 参考
arima y, arima(1,1,0)
stats::arima(y, order = c(1, 1, 0))
stats
一阶差分ARIMA
与 Stata 有差异: 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
Stata 参考 · R 参考
arimasoc y, maxar(2) maxma(2)
{ grid <- expand.grid(p = 0:2, q = 0:2); grid$AIC <- mapply(function(p, q) stats::AIC(stats::arima(y, order = c(p, 0, q), method = "ML")), grid$p, grid$q); grid }
stats
ARMA信息准则比较
固定流程;请明确调整示例列名。应在可比较样本上选阶;R和Stata的似然常数可能不同。
Stata 参考 · R 参考
corrgram y, lags(8)
list(ac = stats::acf(y, lag.max = 8, plot = FALSE), pac = stats::pacf(y, lag.max = 8, plot = FALSE))
stats
自相关与偏自相关表
与 Stata 有差异: 固定流程;请明确调整示例列名。R返回数值相关系数;绘图需另行调用。
Stata 参考 · R 参考
cumsp y
{ sp <- stats::spectrum(y, plot = FALSE, taper = 0); data.frame(frequency = sp$freq, cumulative = cumsum(sp$spec) / sum(sp$spec)) }
stats
累积谱分布
固定流程;请明确调整示例列名。仅计算曲线数据,不含置信带。
Stata 参考 · R 参考
dfgls y, maxlag(4)
urca::ur.ers(y, type = "DF-GLS", model = "trend", lag.max = 4)
urca
DF-GLS单位根检验:trend
与 Stata 有差异: 固定流程;请明确调整示例列名。滞后选择和有限样本临界值可能不同。
Stata 参考 · R 参考
dfgls y, maxlag(4) notrend
urca::ur.ers(y, type = "DF-GLS", model = "constant", lag.max = 4)
urca
DF-GLS单位根检验:constant
与 Stata 有差异: 固定流程;请明确调整示例列名。滞后选择和有限样本临界值可能不同。
Stata 参考 · R 参考
dfuller y, lags(0)
urca::ur.df(y, type = "drift", lags = 0)
urca
ADF单位根检验:drift,0阶增广滞后
与 Stata 有差异: 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
Stata 参考 · R 参考
dfuller y, lags(0) noconstant
urca::ur.df(y, type = "none", lags = 0)
urca
ADF单位根检验:none,0阶增广滞后
与 Stata 有差异: 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
Stata 参考 · R 参考
dfuller y, lags(0) trend
urca::ur.df(y, type = "trend", lags = 0)
urca
ADF单位根检验:trend,0阶增广滞后
与 Stata 有差异: 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
Stata 参考 · R 参考
dfuller y, lags(2)
urca::ur.df(y, type = "drift", lags = 2)
urca
ADF单位根检验:drift,2阶增广滞后
与 Stata 有差异: 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
Stata 参考 · R 参考
dfuller y, lags(2) noconstant
urca::ur.df(y, type = "none", lags = 2)
urca
ADF单位根检验:none,2阶增广滞后
与 Stata 有差异: 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
Stata 参考 · R 参考
dfuller y, lags(2) trend
urca::ur.df(y, type = "trend", lags = 2)
urca
ADF单位根检验:trend,2阶增广滞后
与 Stata 有差异: 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
Stata 参考 · R 参考
fcast compute pred, step(8)
{ out <- matrix(NA_real_, 8, 2); last <- tail(Y, 1); intercept <- stats::coef(fit)[1, ]; for (h in 1:8) { last <- matrix(intercept + drop(A %*% drop(last)), nrow = 1); out[h, ] <- last }; colnames(out) <- colnames(Y); out }
stats
迭代双变量VAR点预测
与 Stata 有差异: 固定流程;请明确调整示例列名。仅点预测,不计算系统预测误差协方差和区间。
Stata 参考 · R 参考
forecast solve, begin(161)
forecast::forecast(fit, h = 8)
forecast
八期ARIMA预测
固定流程;请明确调整示例列名。仅提供单方程预测流程,不翻译预测系统中的恒等式。
Stata 参考 · R 参考
forecast solve, begin(161) periods(8) simulate(errors, statistic(stddev, prefix(sd_)))
forecast::forecast(fit, h = 8, level = 90)
forecast
含90%预测区间的预测
固定流程;请明确调整示例列名。仅提供单方程预测流程,不翻译预测系统中的恒等式。R直接计算90%解析预测区间;Stata示例模拟预测标准差,须另行构造区间。
Stata 参考 · R 参考
forecast solve, begin(161) static
stats::fitted(forecast::Arima(y, order = c(1, 0, 0)))
forecast
ARIMA一步拟合值
固定流程;请明确调整示例列名。提供样本内一步预测流程;Stata须另设置forecast模型。
Stata 参考 · R 参考
irf create model, step(8)
{ powers <- vector("list", 9); powers[[1]] <- diag(2); for (h in 2:9) powers[[h]] <- powers[[h - 1]] %*% A; powers }
base
简约式VAR(1)脉冲响应矩阵
与 Stata 有差异: 固定流程;请明确调整示例列名。针对单位简约式创新的响应;正交结构响应还需要识别方案。
Stata 参考 · R 参考
irf create model, step(8) // orthogonalized responses
{ impact <- t(chol(crossprod(stats::residuals(fit)) / stats::nobs(fit))); powers <- vector("list", 9); powers[[1]] <- impact; for (h in 2:9) powers[[h]] <- A %*% powers[[h - 1]]; powers }
base
Cholesky正交化VAR响应
与 Stata 有差异: 固定流程;请明确调整示例列名。递归顺序为y再x;协方差除数和识别假设影响结果。
Stata 参考 · R 参考
ivlpirf y, endogenous(x = z) step(8) lags(1)
vapply(0:8, function(h) { i <- 2:(nrow(data) - h); d <- data.frame(outcome = data$y[i + h], impulse = data$x[i], Ly = data$y[i - 1], instrument = data$z[i]); unname(stats::coef(AER::ivreg(outcome ~ impulse + Ly | instrument + Ly, data = d))[2]) }, numeric(1))
AER
工具变量局部投影点响应
固定流程;请明确调整示例列名。按期限进行2SLS;工具变量有效性、归一化和HAC推断须另行决定。
Stata 参考 · R 参考
lpirf y, exog(x) step(8) lags(1)
vapply(0:8, function(h) { i <- 2:(nrow(data) - h); unname(stats::coef(stats::lm(data$y[i + h] ~ data$x[i] + data$y[i - 1] + data$x[i - 1]))[2]) }, numeric(1))
stats
局部投影的外生冲击动态响应
固定流程;请明确调整示例列名。按期限分别进行点估计;研究分析仍须补充HAC推断及系统约束。
Stata 参考 · R 参考
newey y x, lag(4)
{ fit <- stats::lm(y ~ x, data = data); lmtest::coeftest(fit, vcov. = sandwich::NeweyWest(fit, lag = 4, prewhite = FALSE, adjust = TRUE)) }
sandwich
Newey-West HAC系数推断
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一带宽、预白化和有限样本修正。
Stata 参考 · R 参考
pac y, lags(12)
stats::pacf(y, lag.max = 12, plot = FALSE)
stats
偏自相关函数
与 Stata 有差异: 固定流程;请明确调整示例列名。R返回数值相关系数;绘图需另行调用。
Stata 参考 · R 参考
pergram y
stats::spectrum(y, plot = FALSE, taper = 0, detrend = FALSE)
stats
原始周期图
与 Stata 有差异: 固定流程;请明确调整示例列名。归一化方法和默认渐消窗可能不同。
Stata 参考 · R 参考
pperron y, lags(4)
urca::ur.pp(y, type = "Z-tau", model = "constant", use.lag = 4)
urca
Phillips-Perron Z-tau检验:constant
与 Stata 有差异: 固定流程;请明确调整示例列名。Stata同时报告多个统计量,R每次选择一个;须匹配核函数和确定项。
Stata 参考 · R 参考
pperron y, lags(4)
urca::ur.pp(y, type = "Z-alpha", model = "constant", use.lag = 4)
urca
Phillips-Perron Z-alpha检验:constant
与 Stata 有差异: 固定流程;请明确调整示例列名。Stata同时报告多个统计量,R每次选择一个;须匹配核函数和确定项。
Stata 参考 · R 参考
pperron y, lags(4) trend
urca::ur.pp(y, type = "Z-tau", model = "trend", use.lag = 4)
urca
Phillips-Perron Z-tau检验:trend
与 Stata 有差异: 固定流程;请明确调整示例列名。Stata同时报告多个统计量,R每次选择一个;须匹配核函数和确定项。
Stata 参考 · R 参考
pperron y, lags(4) trend
urca::ur.pp(y, type = "Z-alpha", model = "trend", use.lag = 4)
urca
Phillips-Perron Z-alpha检验:trend
与 Stata 有差异: 固定流程;请明确调整示例列名。Stata同时报告多个统计量,R每次选择一个;须匹配核函数和确定项。
Stata 参考 · R 参考
predict yhat, y dynamic(161)
stats::predict(fit, n.ahead = 8)
stats
动态ARIMA预测及标准误
固定流程;请明确调整示例列名。仅提供单方程预测流程,不翻译预测系统中的恒等式。
Stata 参考 · R 参考
arima y, arima(1,0,0)
psdensity density, n(64)
{ phi <- unname(fit$coef["ar1"]); omega <- seq(0, pi, length.out = 64); data.frame(frequency = omega / (2 * pi), density = fit$sigma2 / (2 * pi * Mod(1 - phi * exp(-1i * omega))^2)) }
stats
参数化AR(1)谱密度
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一频率尺度及密度归一化。
Stata 参考 · R 参考
rolling _b, window(40) recursive: regress y x
t(vapply(40:nrow(data), function(i) stats::coef(stats::lm(y ~ x, data[seq_len(i), ])), numeric(2)))
stats
扩展窗口递归回归
与 Stata 有差异: 固定流程;请明确调整示例列名。固定首个观察,逐步扩展估计终点。
Stata 参考 · R 参考
rolling _b, window(40): regress y x
zoo::rollapply(data, width = 40, FUN = function(z) stats::coef(stats::lm(y ~ x, data = as.data.frame(z))), by.column = FALSE, align = "right")
zoo
滚动窗口回归系数
与 Stata 有差异: 固定流程;请明确调整示例列名。输出行对应完整右对齐窗口;实际使用须明确处理拟合失败。
Stata 参考 · R 参考
rolling sd=r(sd), window(20): summarize y
zoo::rollapply(y, width = 20, FUN = stats::sd, align = "right")
zoo
滚动样本波动率
与 Stata 有差异: 固定流程;请明确调整示例列名。计算样本标准差,并非模型条件波动率。
Stata 参考 · R 参考
sspace (level L.level L.slope, state noconstant) (slope L.slope, state noconstant) (y level, noconstant)
stats::StructTS(y, type = "trend")
stats
局部线性趋势状态空间模型
与 Stata 有差异: 固定流程;请明确调整示例列名。对应特定局部线性趋势模型;初始化可能不同。
Stata 参考 · R 参考
sspace (level L.level, state noconstant) (y level, noconstant)
stats::StructTS(y, type = "level")
stats
局部水平状态空间模型
与 Stata 有差异: 固定流程;请明确调整示例列名。对应特定局部水平模型;sspace支持更广泛的模型。
Stata 参考 · R 参考
tsfilter bk cycle = y, minperiod(6) maxperiod(32) smaorder(12)
{ K <- 12; j <- -K:K; low <- 2 * pi / 32; high <- 2 * pi / 6; w <- ifelse(j == 0, (high - low) / pi, (sin(high * j) - sin(low * j)) / (pi * j)); w <- w - mean(w); stats::filter(y, w, sides = 2) }
stats
Baxter-King近似带通周期
与 Stata 有差异: 固定流程;请明确调整示例列名。对称有限阶带通滤波损失端点观察。
Stata 参考 · R 参考
tsfilter hp cycle = y, smooth(1600) trend(trend)
{ n <- length(y); D <- diff(diag(n), differences = 2); trend <- drop(solve(diag(n) + 1600 * crossprod(D), as.numeric(y))); data.frame(trend = trend, cycle = as.numeric(y) - trend) }
base
Hodrick-Prescott趋势周期分解
与 Stata 有差异: 固定流程;请明确调整示例列名。要求完整规则序列;通过惩罚最小二乘直接求解双侧HP滤波。
Stata 参考 · R 参考
tsreport, report
data.frame(previous = head(data$t, -1), next_time = tail(data$t, -1), gap = diff(data$t))[diff(data$t) != 1, ]
base
定位缺失时间期
固定流程;请明确调整示例列名。假设时间为单位间隔整数;日期日历须明确间隔规则。
Stata 参考 · R 参考
tssmooth exponential smooth = y, parms(.3)
stats::HoltWinters(y, alpha = .3, beta = FALSE, gamma = FALSE)
stats
简单指数平滑
固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
Stata 参考 · R 参考
tssmooth hwinters smooth = y
stats::HoltWinters(y, gamma = FALSE)
stats
Holt趋势平滑流程
固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
Stata 参考 · R 参考
tssmooth ma smooth = y, window(2 1 2)
stats::filter(y, rep(1 / 5, 5), sides = 2)
stats
五期居中移动平均
固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
Stata 参考 · R 参考
tssmooth ma smooth = y, window(3 1 0)
stats::filter(y, rep(1 / 4, 4), sides = 1)
stats
四期向后移动平均
固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
Stata 参考 · R 参考
tssmooth nl smooth = y, smoother(3)
stats::runmed(as.numeric(y), k = 3, endrule = "median")
stats
滑动中位数非线性平滑
与 Stata 有差异: 固定流程;请明确调整示例列名。比较前须单独核对端点处理规则。
Stata 参考 · R 参考
tssmooth shwinters smooth = y
stats::HoltWinters(y, seasonal = "additive")
stats
加法季节Holt-Winters平滑
固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
Stata 参考 · R 参考
ucm y, model(llevel)
stats::StructTS(y, type = "level")
stats
不可观测成分模型:level
与 Stata 有差异: 固定流程;请明确调整示例列名。R仅支持部分结构模型;Stata ucm允许更多成分和约束。
Stata 参考 · R 参考
ucm y, model(lltrend)
stats::StructTS(y, type = "trend")
stats
不可观测成分模型:trend
与 Stata 有差异: 固定流程;请明确调整示例列名。R仅支持部分结构模型;Stata ucm允许更多成分和约束。
Stata 参考 · R 参考
ucm y, model(lltrend) seasonal(4)
stats::StructTS(y, type = "BSM")
stats
不可观测成分模型:BSM
与 Stata 有差异: 固定流程;请明确调整示例列名。R仅支持部分结构模型;Stata ucm允许更多成分和约束。
Stata 参考 · R 参考
var y x, lags(1)
stats::lm(cbind(y, x) ~ Ly + Lx, data = lagged)
stats
逐方程OLS的双变量VAR(1)
与 Stata 有差异: 固定流程;请明确调整示例列名。对共同样本上的无约束VAR给出相应系数;系统协方差报告不同。
Stata 参考 · R 参考
var y x, lags(1) exog(trend)
stats::lm(cbind(y, x) ~ Ly + Lx + seq_len(nrow(lagged)), data = lagged)
stats
含确定性时间趋势VAR
与 Stata 有差异: 固定流程;请明确调整示例列名。趋势起点影响截距;须统一样本和趋势编号。
Stata 参考 · R 参考
var y x, lags(1) noconstant
stats::lm(cbind(y, x) ~ 0 + Ly + Lx, data = lagged)
stats
无截距双变量VAR
与 Stata 有差异: 固定流程;请明确调整示例列名。须指定相同的滞后矩阵和确定项。
Stata 参考 · R 参考
var y x, lags(1)
vargranger
lmtest::grangertest(y ~ x, order = 1, data = data)
lmtest
检验x是否Granger预测y
与 Stata 有差异: 先拟合var y x, lags(1)再运行vargranger;否则Stata的VAR默认滞后1和2阶。grangertest采用F参考分布,vargranger报告Wald卡方;须统一方向和样本,且预测性不等于结构因果。
Stata 参考 · R 参考
var y x, lags(1)
vargranger
lmtest::grangertest(x ~ y, order = 1, data = data)
lmtest
检验y是否Granger预测x
与 Stata 有差异: 先拟合var y x, lags(1)再运行vargranger;否则Stata的VAR默认滞后1和2阶。grangertest采用F参考分布,vargranger报告Wald卡方;须统一方向和样本,且预测性不等于结构因果。
Stata 参考 · R 参考
varstable
eigen(A, only.values = TRUE)$values
base
VAR(1)伴随矩阵特征值
与 Stata 有差异: 固定流程;请明确调整示例列名。稳定性要求所有伴随矩阵根严格位于单位圆内。
Stata 参考 · R 参考
vec y x, rank(1) lags(2)
urca::cajorls(urca::ca.jo(Y, type = "trace", ecdet = "none", K = 2, spec = "transitory"), r = 1)
urca
秩一向量误差修正模型
与 Stata 有差异: urca的ecdet="const"对应Stata的trend(rconstant);ecdet="none"包含不受约束的截距,对应trend(constant);ecdet="trend"对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
Stata 参考 · R 参考
vecrank y x, lags(2) trend(constant)
urca::ca.jo(Y, type = "trace", ecdet = "none", K = 2, spec = "transitory")
urca
检验含不受约束截距的协整秩
与 Stata 有差异: urca的ecdet="const"对应Stata的trend(rconstant);ecdet="none"包含不受约束的截距,对应trend(constant);ecdet="trend"对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
Stata 参考 · R 参考
vecrank y x, lags(2) trend(constant) max
urca::ca.jo(Y, type = "eigen", ecdet = "none", K = 2, spec = "transitory")
urca
检验含不受约束截距的协整秩
与 Stata 有差异: urca的ecdet="const"对应Stata的trend(rconstant);ecdet="none"包含不受约束的截距,对应trend(constant);ecdet="trend"对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
Stata 参考 · R 参考
vecrank y x, lags(2) trend(rconstant)
urca::ca.jo(Y, type = "trace", ecdet = "const", K = 2, spec = "transitory")
urca
检验含受约束常数项的协整秩
与 Stata 有差异: urca的ecdet="const"对应Stata的trend(rconstant);ecdet="none"包含不受约束的截距,对应trend(constant);ecdet="trend"对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
Stata 参考 · R 参考
vecrank y x, lags(2) trend(rconstant) max
urca::ca.jo(Y, type = "eigen", ecdet = "const", K = 2, spec = "transitory")
urca
检验含受约束常数项的协整秩
与 Stata 有差异: urca的ecdet="const"对应Stata的trend(rconstant);ecdet="none"包含不受约束的截距,对应trend(constant);ecdet="trend"对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
Stata 参考 · R 参考
vecrank y x, lags(2) trend(rtrend)
urca::ca.jo(Y, type = "trace", ecdet = "trend", K = 2, spec = "transitory")
urca
检验含受约束趋势项的协整秩
与 Stata 有差异: urca的ecdet="const"对应Stata的trend(rconstant);ecdet="none"包含不受约束的截距,对应trend(constant);ecdet="trend"对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
Stata 参考 · R 参考
vecrank y x, lags(2) trend(rtrend) max
urca::ca.jo(Y, type = "eigen", ecdet = "trend", K = 2, spec = "transitory")
urca
检验含受约束趋势项的协整秩
与 Stata 有差异: urca的ecdet="const"对应Stata的trend(rconstant);ecdet="none"包含不受约束的截距,对应trend(constant);ecdet="trend"对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
Stata 参考 · R 参考
predict e, residuals
wntestq e, lags(8)
stats::Box.test(stats::residuals(fit), lag = 8, type = "Ljung-Box", fitdf = 1)
stats
AR(1)残差的Ljung-Box检验
与 Stata 有差异: 固定流程;请明确调整示例列名。R明确从参考自由度中扣除所估计的AR参数。
Stata 参考 · R 参考
wntestq y, lags(8)
stats::Box.test(y, lag = 8, type = "Ljung-Box")
stats
Ljung-Box 序列相关联合检验
与 Stata 有差异: 固定流程;请明确调整示例列名。检验拟合模型残差时应指定fitdf。
Stata 参考 · R 参考
xcorr y x, lags(8)
stats::ccf(y, x, lag.max = 8, plot = FALSE)
stats
正负滞后的互相关
与 Stata 有差异: 固定流程;请明确调整示例列名。解释领先或滞后方向前须核对滞后符号约定。
Stata 参考 · R 参考

复杂抽样分析

Stata R 用途、差异及来源
estat cv
survey::cv(survey::svymean(~y, des))
survey
调查均值变异系数
与 Stata 有差异: 固定流程;请明确调整示例列名。估计均值接近零时,相对标准误不稳定。
Stata 参考 · R 参考
estat effects
survey::deff(survey::svymean(~y, des, deff = TRUE))
survey
调查均值设计效应
与 Stata 有差异: 固定流程;请明确调整示例列名。设计效应取决于SRS比较方式、有限总体修正和权重尺度。
Stata 参考 · R 参考
svy bootstrap: mean y
{ reps <- survey::as.svrepdesign(des, type = "bootstrap"); survey::svymean(~y, reps) }
survey
bootstrap重复方差调查均值
与 Stata 有差异: 固定流程;请明确调整示例列名。点均值与抽样权重一致;重复方差依赖所选方案。
Stata 参考 · R 参考
svy brr: mean y
{ reps <- survey::as.svrepdesign(des, type = "BRR"); survey::svymean(~y, reps) }
survey
BRR重复方差调查均值
与 Stata 有差异: 固定流程;请明确调整示例列名。点均值与抽样权重一致;重复方差依赖所选方案。
Stata 参考 · R 参考
svy jackknife: mean y
{ reps <- survey::as.svrepdesign(des, type = "JKn"); survey::svymean(~y, reps) }
survey
JKn重复方差调查均值
与 Stata 有差异: 固定流程;请明确调整示例列名。点均值与抽样权重一致;重复方差依赖所选方案。
Stata 参考 · R 参考
svy, subpop(if group==1): mean y
survey::svymean(~y, subset(des, group == "1"))
survey
调查子总体均值
与 Stata 有差异: 固定流程;请明确调整示例列名。应对子总体提取调查设计的子集,保留抽样结构,不能筛选后重新建模设计。
Stata 参考 · R 参考
svy: glm y x, family(gamma) link(log)
survey::svyglm(y ~ x, des, family = stats::Gamma(link = "log"))
survey
调查Gamma对数连接模型
与 Stata 有差异: 固定流程;请明确调整示例列名。准似然族保留均值方差结构并避免非整数计数警告;须统一设计自由度。
Stata 参考 · R 参考
svy: logit yes x
survey::svyglm(yes ~ x, des, family = stats::quasibinomial())
survey
调查Logistic回归
与 Stata 有差异: 固定流程;请明确调整示例列名。准似然族保留均值方差结构并避免非整数计数警告;须统一设计自由度。
Stata 参考 · R 参考
svy: mean y
survey::svymean(~y, des)
survey
调查加权均值
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: mean y x
survey::svymean(~y + x, des)
survey
联合均值及协方差矩阵
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: mean y, over(group)
survey::svyby(~y, ~group, des, survey::svymean)
survey
分域均值
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: poisson y x
survey::svyglm(y ~ x, des, family = stats::quasipoisson())
survey
调查Poisson均值模型
与 Stata 有差异: 固定流程;请明确调整示例列名。准似然族保留均值方差结构并避免非整数计数警告;须统一设计自由度。
Stata 参考 · R 参考
svy: probit yes x
survey::svyglm(yes ~ x, des, family = stats::quasibinomial(link = "probit"))
survey
调查Probit回归
与 Stata 有差异: 固定流程;请明确调整示例列名。准似然族保留均值方差结构并避免非整数计数警告;须统一设计自由度。
Stata 参考 · R 参考
svy: proportion yes
survey::svymean(~factor(yes), des)
survey
调查加权分类比例
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: proportion yes
survey::svyciprop(~yes, des, method = "logit", level = .95)
survey
调查比例置信区间方法:logit
固定流程;请明确调整示例列名。区间构造方法是明确的替代方案,须匹配Stata所用变换。
Stata 参考 · R 参考
svy: proportion yes
survey::svyciprop(~yes, des, method = "likelihood", level = .95)
survey
调查比例置信区间方法:likelihood
固定流程;请明确调整示例列名。区间构造方法是明确的替代方案,须匹配Stata所用变换。
Stata 参考 · R 参考
svy: proportion yes
survey::svyciprop(~yes, des, method = "asin", level = .95)
survey
调查比例置信区间方法:asin
固定流程;请明确调整示例列名。区间构造方法是明确的替代方案,须匹配Stata所用变换。
Stata 参考 · R 参考
svy: proportion yes
survey::svyciprop(~yes, des, method = "beta", level = .95)
survey
调查比例置信区间方法:beta
固定流程;请明确调整示例列名。区间构造方法是明确的替代方案,须匹配Stata所用变换。
Stata 参考 · R 参考
svy: proportion yes
survey::svyciprop(~yes, des, method = "mean", level = .95)
survey
调查比例置信区间方法:mean
固定流程;请明确调整示例列名。区间构造方法是明确的替代方案,须匹配Stata所用变换。
Stata 参考 · R 参考
svy: proportion yes
survey::svyciprop(~yes, des, method = "xlogit", level = .95)
survey
调查比例置信区间方法:xlogit
固定流程;请明确调整示例列名。区间构造方法是明确的替代方案,须匹配Stata所用变换。
Stata 参考 · R 参考
svy: proportion yes, over(group)
survey::svyby(~factor(yes), ~group, des, survey::svymean)
survey
分域分类比例
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: ratio y/x
survey::svyratio(~y, ~x, des)
survey
调查总体总量比
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: regress y x
survey::svyglm(y ~ x, des, family = stats::gaussian())
survey
调查线性回归
与 Stata 有差异: 固定流程;请明确调整示例列名。准似然族保留均值方差结构并避免非整数计数警告;须统一设计自由度。
Stata 参考 · R 参考
svy: tabulate group yes
prop.table(survey::svytable(~group + yes, des))
survey
加权列联表计数
与 Stata 有差异: 返回加权单元比例,对应svy: tabulate双向表的默认显示。此表本身不提供Stata基于抽样设计的标准误、置信区间或调整后的关联检验。
Stata 参考 · R 参考
svy: tabulate group yes, column
prop.table(survey::svytable(~group + yes, des), margin = 2)
survey
调查列比例
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: tabulate group yes, pearson
survey::svychisq(~group + yes, des, statistic = "F")
survey
设计校正分类关联检验:F
固定流程;请明确调整示例列名。Rao-Scott和Wald方法使用不同参考分布;须明确选择目标检验。
Stata 参考 · R 参考
svy: tabulate group yes, pearson
survey::svychisq(~group + yes, des, statistic = "Chisq")
survey
设计校正分类关联检验:Chisq
固定流程;请明确调整示例列名。Rao-Scott和Wald方法使用不同参考分布;须明确选择目标检验。
Stata 参考 · R 参考
svy: tabulate group yes, pearson
survey::svychisq(~group + yes, des, statistic = "Wald")
survey
设计校正分类关联检验:Wald
固定流程;请明确调整示例列名。Rao-Scott和Wald方法使用不同参考分布;须明确选择目标检验。
Stata 参考 · R 参考
svy: tabulate group yes, pearson
survey::svychisq(~group + yes, des, statistic = "adjWald")
survey
设计校正分类关联检验:adjWald
固定流程;请明确调整示例列名。Rao-Scott和Wald方法使用不同参考分布;须明确选择目标检验。
Stata 参考 · R 参考
svy: tabulate group yes, row
prop.table(survey::svytable(~group + yes, des), margin = 1)
survey
调查行比例
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: total y
survey::svytotal(~y, des)
survey
调查加权总体总量
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: total y x
survey::svytotal(~y + x, des)
survey
联合总体总量
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svy: total y, over(group)
survey::svyby(~y, ~group, des, survey::svytotal)
survey
分域总体总量
与 Stata 有差异: 固定流程;请明确调整示例列名。设计方差使用完整抽样结构;总体总量要求权重尺度正确。
Stata 参考 · R 参考
svydescribe
list(degrees_of_freedom = survey::degf(des), strata = table(des$strata[, 1]), clusters = length(unique(des$cluster[, 1])))
survey
调查设计自由度和抽样单元数
与 Stata 有差异: 固定流程;请明确调整示例列名。按层统计观察记录;PSU数不同于记录数。
Stata 参考 · R 参考
svyset [pw=w]
survey::svydesign(ids = ~1, weights = ~w, data = data)
survey
独立不等概率抽样
与 Stata 有差异: 固定流程;请明确调整示例列名。调查对象携带抽样设计信息,不能用普通回归权重代替。
Stata 参考 · R 参考
svyset psu [pw=w], strata(stratum)
survey::svydesign(ids = ~psu, strata = ~stratum, weights = ~w, data = data)
survey
分层整群调查设计
与 Stata 有差异: 固定流程;请明确调整示例列名。调查对象携带抽样设计信息,不能用普通回归权重代替。
Stata 参考 · R 参考
svyset psu [pw=w], strata(stratum) fpc(N)
survey::svydesign(ids = ~psu, strata = ~stratum, weights = ~w, fpc = ~N, data = data)
survey
整群设计的有限总体修正
与 Stata 有差异: 固定流程;请明确调整示例列名。调查对象携带抽样设计信息,不能用普通回归权重代替。
Stata 参考 · R 参考
svyset psu [pw=w], strata(stratum) poststrata(group) postweight(pop)
survey::postStratify(des, ~group, population = population)
survey
按总体分类总量后分层调查权重
与 Stata 有差异: 固定流程;请明确调整示例列名。总体类别须覆盖样本;权重调整属于方差设计的一部分。
Stata 参考 · R 参考
svyset psu [pw=w], strata(stratum) rake(ibn.group, totals(20 30, copy) noconstant)
survey::rake(des, sample.margins = list(~group), population.margins = list(population))
survey
按已知分类边际校准样本权重
固定流程;请明确调整示例列名。调查校准流程;Stata具体语法依赖svyset选项及版本。
Stata 参考 · R 参考
svyset psu [pw=w], strata(stratum) vce(bootstrap)
survey::as.svrepdesign(des, type = "bootstrap", replicates = 50)
survey
调查自助法重复权重设计
固定流程;请明确调整示例列名。重复次数仅供示范;具体调查自助法方案和尺度可能不同。
Stata 参考 · R 参考
svyset psu [pw=w], strata(stratum) vce(brr)
survey::as.svrepdesign(des, type = "BRR")
survey
双PSU分层的平衡重复复制
与 Stata 有差异: 固定流程;请明确调整示例列名。BRR要求每层恰好两个PSU;否则须对设计作明确调整。
Stata 参考 · R 参考
svyset psu [pw=w], strata(stratum) vce(brr) fay(.3)
survey::as.svrepdesign(des, type = "Fay", fay.rho = .3)
survey
Fay平衡重复复制
与 Stata 有差异: 固定流程;请明确调整示例列名。须匹配Fay扰动参数和重复权重尺度。
Stata 参考 · R 参考
svyset psu [pw=w], vce(jackknife)
survey::as.svrepdesign(des, type = "JKn")
survey
分层删除一组Jackknife重复权重
与 Stata 有差异: 固定流程;请明确调整示例列名。调查对象携带抽样设计信息,不能用普通回归权重代替。
Stata 参考 · R 参考

元分析

Stata R 用途、差异及来源
meta bias, begg
metafor::ranktest(metafor::rma(yi, vi, data = data, method = "FE"))
metafor
秩相关小样本研究效应检验
与 Stata 有差异: 固定流程;请明确调整示例列名。秩相关和小样本p值约定可能不同。
Stata 参考 · R 参考
meta bias, egger
metafor::regtest(metafor::rma(yi, vi, data = data, method = "REML"), model = "rma", predictor = "sei")
metafor
Egger回归不对称检验
与 Stata 有差异: 假定Stata的meta声明采用默认random(reml)。model="rma"将效应对标准误回归,并以REML估计加性异质性;model="lm"采用的则是乘性离散。小样本研究效应本身不能证明发表偏差。
Stata 参考 · R 参考
meta esize a b c d, esize(lnoratio)
metafor::escalc(measure = "OR", ai = a, bi = b, ci = c, di = d, data = data)
metafor
对数优势比和方差
与 Stata 有差异: 固定流程;请明确调整示例列名。处理和对照单元格顺序须一致,连续性修正须明确选择。
Stata 参考 · R 参考
meta esize a b c d, esize(lnrratio)
metafor::escalc(measure = "RR", ai = a, bi = b, ci = c, di = d, data = data)
metafor
对数风险比和方差
与 Stata 有差异: 固定流程;请明确调整示例列名。处理和对照单元格顺序须一致,连续性修正须明确选择。
Stata 参考 · R 参考
meta esize a b c d, esize(rdiff)
metafor::escalc(measure = "RD", ai = a, bi = b, ci = c, di = d, data = data)
metafor
风险差和方差
与 Stata 有差异: 固定流程;请明确调整示例列名。处理和对照单元格顺序须一致,连续性修正须明确选择。
Stata 参考 · R 参考
meta esize cases n, esize(ftukeyprop)
metafor::escalc(measure = "PFT", xi = cases, ni = n, data = data)
metafor
Freeman-Tukey变换比例
与 Stata 有差异: 固定流程;请明确调整示例列名。须谨慎处理变换定义及反变换,尤其双反正弦变换。
Stata 参考 · R 参考
meta esize cases n, esize(logitprop)
metafor::escalc(measure = "PLO", xi = cases, ni = n, data = data)
metafor
Logit变换研究比例
与 Stata 有差异: 固定流程;请明确调整示例列名。须谨慎处理变换定义及反变换,尤其双反正弦变换。
Stata 参考 · R 参考
meta esize cases n, esize(proportion)
metafor::escalc(measure = "PR", xi = cases, ni = n, data = data)
metafor
原始研究比例和方差
与 Stata 有差异: 固定流程;请明确调整示例列名。须谨慎处理变换定义及反变换,尤其双反正弦变换。
Stata 参考 · R 参考
meta esize n1 m1 sd1 n0 m0 sd0, esize(cohend)
metafor::escalc(measure = "SMD", m1i = m1, sd1i = sd1, n1i = n1, m2i = m0, sd2i = sd0, n2i = n0, data = data, correct = FALSE)
metafor
未修正Cohen标准化均值差
与 Stata 有差异: 固定流程;请明确调整示例列名。标准化效应的抽样方差估计方法须匹配。
Stata 参考 · R 参考
meta esize n1 m1 sd1 n0 m0 sd0, esize(hedgesg)
metafor::escalc(measure = "SMD", m1i = m1, sd1i = sd1, n1i = n1, m2i = m0, sd2i = sd0, n2i = n0, data = data)
metafor
偏差修正标准化均值差
与 Stata 有差异: metafor的SMD使用gamma函数计算精确Hedges修正。Stata的hedgesg默认采用近似修正;应指定esize(hedgesg, exact)统一该修正,并另行统一抽样方差公式。
Stata 参考 · R 参考
meta esize n1 m1 sd1 n0 m0 sd0, esize(mdiff)
metafor::escalc(measure = "MD", m1i = m1, sd1i = sd1, n1i = n1, m2i = m0, sd2i = sd0, n2i = n0, data = data, vtype = "HO")
metafor
未标准化均值差
与 Stata 有差异: vtype="HO"使用组内合并方差,对应Stata的esize(mdiff)默认等方差抽样方差。metafor默认vtype="LS"使用两组各自方差,应与Stata的unequal配合。
Stata 参考 · R 参考
meta esize r n, correlation
metafor::escalc(measure = "COR", ri = r, ni = n, data = data)
metafor
原始相关系数与抽样方差
与 Stata 有差异: 固定流程;请明确调整示例列名。相关系数须严格处于(-1,1)内;抽样方差取决于变换。
Stata 参考 · R 参考
meta esize r n, fisherz
metafor::escalc(measure = "ZCOR", ri = r, ni = n, data = data)
metafor
Fisher-z变换相关系数
与 Stata 有差异: 固定流程;请明确调整示例列名。相关系数须严格处于(-1,1)内;抽样方差取决于变换。
Stata 参考 · R 参考
meta regress c.year
metafor::rma(yi = yi, vi = vi, mods = ~year, data = data, method = "REML")
metafor
以中心化出版年份进行元回归
与 Stata 有差异: 按year原始尺度建模,截距与Stata命令一样对应年份零。假定Stata声明的模型为random(REML);须统一模型声明和标准误选项。
Stata 参考 · R 参考
meta regress i.x, random(reml)
metafor::rma(yi, vi, mods = ~factor(x), data = data, method = "REML")
metafor
分类元回归与Knapp-Hartung推断
与 Stata 有差异: 采用常规正态参考分布的REML元回归,对应未指定se(khartung)的Stata命令。Knapp-Hartung须在两端显式指定。调节变量关联属于研究层面,不是因果子组效应。
Stata 参考 · R 参考
meta regress x
metafor::rma(yi = yi, vi = vi, mods = ~x, data = data, method = "REML")
metafor
含调节变量的随机效应元回归
与 Stata 有差异: 固定流程;请明确调整示例列名。元回归分析研究层面汇总量,不能解释为个体层面效应。
Stata 参考 · R 参考
meta set yi sei
metafor::escalc(measure = "GEN", yi = yi, sei = sei, data = data)
metafor
声明通用效应量与抽样方差
与 Stata 有差异: 两端均以sei输入标准误;metafor将其平方存为vi。escalc生成效应量数据,但不持久保存Stata式meta声明、标签或默认分析模型。
Stata 参考 · R 参考
meta summarize, cumulative(year)
metafor::cumul(metafor::rma(yi, vi, data = data, method = "REML"), order = data$year)
metafor
按年份累积的固定效应元分析
与 Stata 有差异: 假定meta set采用默认的random(reml)声明;metafor显式选择REML。Stata先前的common、fixed或random声明会改变目标。比较汇总结果前须统一研究顺序、缺失处理和异质性估计。
Stata 参考 · R 参考
meta summarize, eform
exp(c(estimate = as.numeric(fit$b), lower = fit$ci.lb, upper = fit$ci.ub))
metafor
指数化合并对数效应及区间
与 Stata 有差异: 固定流程;请明确调整示例列名。仅适用于处于对数比值尺度的效应量。
Stata 参考 · R 参考
meta summarize, fixed
metafor::rma(yi = yi, vi = vi, data = data, method = "FE")
metafor
逆方差元分析方法:FE
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一研究间方差估计量和区间方法;部分估计量的软件名称不同。
Stata 参考 · R 参考
meta summarize, leaveoneout
metafor::leave1out(metafor::rma(yi, vi, data = data, method = "REML"))
metafor
逐一剔除研究的合并估计
与 Stata 有差异: 假定meta set采用默认的random(reml)声明;metafor显式选择REML。Stata先前的common、fixed或random声明会改变目标。比较汇总结果前须统一研究顺序、缺失处理和异质性估计。
Stata 参考 · R 参考
meta summarize, random(dlaird)
metafor::rma(yi = yi, vi = vi, data = data, method = "DL")
metafor
逆方差元分析方法:DL
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一研究间方差估计量和区间方法;部分估计量的软件名称不同。
Stata 参考 · R 参考
meta summarize, random(ebayes)
metafor::rma(yi = yi, vi = vi, data = data, method = "EB")
metafor
逆方差元分析方法:EB
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一研究间方差估计量和区间方法;部分估计量的软件名称不同。
Stata 参考 · R 参考
meta summarize, random(hedges)
metafor::rma(yi = yi, vi = vi, data = data, method = "HE")
metafor
逆方差元分析方法:HE
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一研究间方差估计量和区间方法;部分估计量的软件名称不同。
Stata 参考 · R 参考
meta summarize, random(mle)
metafor::rma(yi = yi, vi = vi, data = data, method = "ML")
metafor
逆方差元分析方法:ML
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一研究间方差估计量和区间方法;部分估计量的软件名称不同。
Stata 参考 · R 参考
meta summarize, random(reml)
metafor::rma(yi = yi, vi = vi, data = data, method = "REML")
metafor
逆方差元分析方法:REML
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一研究间方差估计量和区间方法;部分估计量的软件名称不同。
Stata 参考 · R 参考
meta summarize, random(reml)
metafor::rma(yi = yi, vi = vi, data = data, method = "REML", test = "z")
metafor
随机效应合并推断:z
固定流程;请明确调整示例列名。仅knha对应Knapp-Hartung修正;z和t是明确的推断替代方法。
Stata 参考 · R 参考
meta summarize, random(reml) predinterval
stats::predict(metafor::rma(yi, vi, data = data, method = "REML"))
metafor
新研究真实效应的预测区间
与 Stata 有差异: 真实效应预测区间不同于合并均值置信区间。Stata采用t(K-2),metafor默认使用正态分位数。Stata端点应按mu +/- qt(.975,K-2)*sqrt(tau2+se^2)计算;改用metafor的test="t"会采用K-p自由度,并非相同修正。
Stata 参考 · R 参考
meta summarize, random(reml) se(khartung)
metafor::rma(yi = yi, vi = vi, data = data, method = "REML", test = "knha")
metafor
随机效应合并推断:knha
固定流程;请明确调整示例列名。仅knha对应Knapp-Hartung修正;z和t是明确的推断替代方法。
Stata 参考 · R 参考
meta summarize, random(reml) tdistribution
metafor::rma(yi = yi, vi = vi, data = data, method = "REML", test = "t")
metafor
随机效应合并推断:t
固定流程;请明确调整示例列名。仅knha对应Knapp-Hartung修正;z和t是明确的推断替代方法。
Stata 参考 · R 参考
meta summarize, random(sjonkman)
metafor::rma(yi = yi, vi = vi, data = data, method = "SJ")
metafor
逆方差元分析方法:SJ
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一研究间方差估计量和区间方法;部分估计量的软件名称不同。
Stata 参考 · R 参考
meta summarize, subgroup(x)
lapply(split(data, data$x), function(d) metafor::rma(yi, vi, data = d, method = "REML"))
metafor
按研究亚组合并随机效应
与 Stata 有差异: 固定流程;请明确调整示例列名。分别估计各组异质性,不同于共享tau参数的亚组模型。
Stata 参考 · R 参考
meta trimfill
metafor::trimfill(metafor::rma(yi, vi, data = data, method = "REML"))
metafor
剪补法敏感性分析
与 Stata 有差异: 假定meta set采用默认的random(reml)声明;metafor显式选择REML。Stata先前的common、fixed或random声明会改变目标。比较汇总结果前须统一研究顺序、缺失处理和异质性估计。
Stata 参考 · R 参考

多重插补

Stata R 用途、差异及来源
mi convert flong
mice::complete(imp, action = "long", include = TRUE)
mice
堆叠插补数据并包含原始数据
固定流程;请明确调整示例列名。R的mids元数据及存储结构不同于Stata的MI数据格式。
Stata 参考 · R 参考
mi describe
list(imputations = imp$m, missing_by_variable = imp$nmis, methods = imp$method)
mice
描述多重插补元数据
固定流程;请明确调整示例列名。R的mids元数据及存储结构不同于Stata的MI数据格式。
Stata 参考 · R 参考
mi estimate, level(90): regress y x z
summary(mice::pool(with(imp, stats::lm(y ~ x + z))), conf.int = TRUE, conf.level = .90)
mice
合并估计及90%区间
与 Stata 有差异: 固定流程;请明确调整示例列名。使用mice的合并小样本自由度规则。
Stata 参考 · R 参考
mi estimate: logit binary x z
mice::pool(with(imp, stats::glm(binary ~ x + z, family = stats::binomial())))
mice
合并Logistic回归系数
与 Stata 有差异: 固定流程;请明确调整示例列名。先在对数优势尺度合并,再进行指数变换。
Stata 参考 · R 参考
mi estimate: mean x
{ completed <- mice::complete(imp, "all"); Q <- vapply(completed, function(d) mean(d$x), numeric(1)); U <- vapply(completed, function(d) stats::var(d$x) / nrow(d), numeric(1)); mice::pool.scalar(Q, U, n = nrow(data), k = 1) }
mice
插补连续变量均值的Rubin合并
与 Stata 有差异: 固定流程;请明确调整示例列名。明确指定插补内均值方差和完整数据样本量。
Stata 参考 · R 参考
mi estimate: poisson count x z
mice::pool(with(imp, stats::glm(count ~ x + z, family = stats::poisson())))
mice
合并Poisson回归系数
与 Stata 有差异: 固定流程;请明确调整示例列名。合并对数发生率系数;过度离散须另行评估。
Stata 参考 · R 参考
mi estimate: regress y x z
mice::pool(with(imp, stats::lm(y ~ x + z)))
mice
线性回归系数的Rubin合并
与 Stata 有差异: 固定流程;请明确调整示例列名。合并插补内及插补间方差;完整数据自由度须符合分析。
Stata 参考 · R 参考
mi estimate: regress y x z
{ fits <- lapply(mice::complete(imp, "all"), function(d) stats::lm(y ~ x + z, data = d)); mitools::MIcombine(lapply(fits, stats::coef), lapply(fits, stats::vcov)) }
mitools
直接合并系数向量与协方差矩阵
与 Stata 有差异: 固定流程;请明确调整示例列名。低层Rubin合并替代流程;小样本须明确自由度假设。
Stata 参考 · R 参考
mi extract 1
mice::complete(imp, 1)
mice
提取第一个完整数据集
固定流程;请明确调整示例列名。R的mids元数据及存储结构不同于Stata的MI数据格式。
Stata 参考 · R 参考
mi impute chained (logit) category (pmm, knn(5)) x z = y, add(3)
mice::mice(data, m = 3, maxit = 3, method = methods, seed = 131, donors = 5L, printFlag = FALSE)
mice
二元Logistic链式方程插补
与 Stata 有差异: 固定流程;请明确调整示例列名。插补前设定分类变量类型并匹配模型族;跨软件随机抽样不同。
Stata 参考 · R 参考
mi impute chained (mlogit) category (pmm, knn(5)) x z = y, add(3)
mice::mice(data, m = 3, maxit = 3, method = methods, seed = 131, donors = 5L, printFlag = FALSE)
mice
无序分类链式方程插补
与 Stata 有差异: 固定流程;请明确调整示例列名。插补前设定分类变量类型并匹配模型族;跨软件随机抽样不同。
Stata 参考 · R 参考
mi impute chained (ologit) category (pmm, knn(5)) x z = y, add(3)
mice::mice(data, m = 3, maxit = 3, method = methods, seed = 131, donors = 5L, printFlag = FALSE)
mice
有序分类链式方程插补
与 Stata 有差异: 固定流程;请明确调整示例列名。插补前设定分类变量类型并匹配模型族;跨软件随机抽样不同。
Stata 参考 · R 参考
mi impute chained (pmm, knn(5)) x z = y, add(3) // restrict predictors
{ predictors <- mice::make.predictorMatrix(data); predictors["x", "z"] <- 0; mice::mice(data, m = 3, maxit = 3, predictorMatrix = predictors, seed = 132, donors = 5L, printFlag = FALSE) }
mice
自定义插补预测矩阵
固定流程;请明确调整示例列名。针对逐变量插补模型的流程;不能由Stata语法自动推断R预测矩阵。
Stata 参考 · R 参考
mi impute chained (pmm, knn(5)) x z = y, add(3) rseed(108)
mice::mice(data, m = 3, maxit = 3, method = "pmm", seed = 108, donors = 5L, printFlag = FALSE)
mice
链式方程插补方法:pmm
与 Stata 有差异: 固定流程;请明确调整示例列名。插补算法和随机抽样不同,须明确预测矩阵和各变量模型类型。
Stata 参考 · R 参考
mi impute chained (regress) x z = y, add(3) rseed(108)
mice::mice(data, m = 3, maxit = 3, method = "norm", seed = 108, printFlag = FALSE)
mice
链式方程插补方法:norm
与 Stata 有差异: 固定流程;请明确调整示例列名。插补算法和随机抽样不同,须明确预测矩阵和各变量模型类型。
Stata 参考 · R 参考
mi passive: generate square = x^2
lapply(mice::complete(imp, action = "all"), function(d) transform(d, square = x^2))
mice
在每份完整数据中一致构造非线性变量
固定流程;请明确调整示例列名。变换不参与插补预测时可在插补后派生;否则须在链中使用被动插补。
Stata 参考 · R 参考
mi test x
{ full <- with(imp, stats::lm(y ~ x + z)); reduced <- with(imp, stats::lm(y ~ z)); mice::D1(full, reduced) }
mice
合并重复完整数据Wald检验
D1合并系数估计与协方差矩阵,实施与Stata的mi test相应的多变量MI Wald检验。须统一系数顺序和完整数据自由度;D2合并检验统计量,属于不同规则。
Stata 参考 · R 参考
mi test x z
{ full <- with(imp, stats::lm(y ~ x + z)); reduced <- with(imp, stats::lm(y ~ 1)); mice::D1(full, reduced) }
mice
合并多变量Wald比较
与 Stata 有差异: 固定流程;请明确调整示例列名。D1合并嵌套模型Wald信息;系数顺序必须一致。
Stata 参考 · R 参考
mi varying
vapply(imp$imp, function(z) if (nrow(z)) any(apply(z, 1, function(v) length(unique(v)) > 1)) else FALSE, logical(1))
mice
识别插补间取值变化的变量
固定流程;请明确调整示例列名。R的mids元数据及存储结构不同于Stata的MI数据格式。
Stata 参考 · R 参考
mi xeq: summarize x
lapply(mice::complete(imp, action = "all"), function(d) summary(d$x))
mice
检查每份插补数据的变量分布
固定流程;请明确调整示例列名。R的mids元数据及存储结构不同于Stata的MI数据格式。
Stata 参考 · R 参考

多层模型

Stata R 用途、差异及来源
estat icc
{ v <- lme4::VarCorr(fit); between <- as.numeric(v$id[1, 1]); between / (between + stats::sigma(fit)^2) }
lme4
随机截距组内相关
与 Stata 有差异: 固定流程;请明确调整示例列名。ICC仅在高斯随机截距模型中恒定;随机斜率使其依赖协变量。
Stata 参考 · R 参考
estat recovariance
as.matrix(lme4::VarCorr(fit)$id)
lme4
随机效应协方差矩阵
与 Stata 有差异: 固定流程;请明确调整示例列名。协方差估计以所选随机效应结构为条件。
Stata 参考 · R 参考
estat sd
as.data.frame(lme4::VarCorr(fit))
lme4
标准差与相关系数形式的方差分量
与 Stata 有差异: 固定流程;请明确调整示例列名。包含残差标准差及随机效应相关系数。
Stata 参考 · R 参考
mecloglog binary x || id:, intpoints(1)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "cloglog"), nAGQ = 1, control = lme4::glmerControl(optimizer = "bobyqa"))
lme4
Complementary-log-log随机截距模型:Laplace近似
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。
Stata 参考 · R 参考
mecloglog binary x || id:, intpoints(9)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "cloglog"), nAGQ = 9, control = lme4::glmerControl(optimizer = "bobyqa"))
lme4
Complementary-log-log随机截距模型:自适应求积
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。
Stata 参考 · R 参考
meglm binary x || id:, family(binomial) link(cloglog)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "cloglog"), nAGQ = 7)
lme4
广义混合模型连接:cloglog
与 Stata 有差异: 固定流程;请明确调整示例列名。明确指定分布族和连接;默认设置及积分精度可能不同。
Stata 参考 · R 参考
meglm binary x || id:, family(binomial) link(logit)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "logit"), nAGQ = 7)
lme4
广义混合模型连接:logit
与 Stata 有差异: 固定流程;请明确调整示例列名。明确指定分布族和连接;默认设置及积分精度可能不同。
Stata 参考 · R 参考
meglm binary x || id:, family(binomial) link(probit)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "probit"), nAGQ = 7)
lme4
广义混合模型连接:probit
与 Stata 有差异: 固定流程;请明确调整示例列名。明确指定分布族和连接;默认设置及积分精度可能不同。
Stata 参考 · R 参考
melogit binary x || id:, intpoints(1)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "logit"), nAGQ = 1, control = lme4::glmerControl(optimizer = "bobyqa"))
lme4
Logistic随机截距模型:Laplace近似
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。
Stata 参考 · R 参考
melogit binary x || id:, intpoints(9)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "logit"), nAGQ = 9, control = lme4::glmerControl(optimizer = "bobyqa"))
lme4
Logistic随机截距模型:自适应求积
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。
Stata 参考 · R 参考
menbreg nb x || id:
glmmTMB::glmmTMB(nb ~ x + (1 | id), data = data, family = glmmTMB::nbinom2())
glmmTMB
二次均值方差负二项混合模型
与 Stata 有差异: glmmTMB采用Laplace积分;Stata的menbreg默认采用intpoints(7)自适应求积,需指定intpoints(1)才使用可比的积分近似。比较辅助参数前须统一NB2离散参数与其倒数的含义;积分近似一致本身不保证估计精确相同。
Stata 参考 · R 参考
menl y = {A}*exp({B}*x), define(A: {a0}+{U[id]})
nlme::nlme(y ~ A * exp(B * x), data = data, fixed = A + B ~ 1, random = A ~ 1 | id, start = c(A = 2, B = .25))
nlme
随机系数非线性指数增长
与 Stata 有差异: 固定流程;请明确调整示例列名。非线性混合模型流程;Stata menl语法和参数定义须符合目标模型。
Stata 参考 · R 参考
meologit ordinal x || id:
ordinal::clmm(ordinal ~ x + (1 | id), data = data, link = "logit", nAGQ = 7)
ordinal
随机截距累积Logit模型
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一阈值符号和默认求积方式。
Stata 参考 · R 参考
meoprobit ordinal x || id:
ordinal::clmm(ordinal ~ x + (1 | id), data = data, link = "probit", nAGQ = 7)
ordinal
随机截距累积Probit模型
与 Stata 有差异: 固定流程;请明确调整示例列名。潜在残差方差由Probit连接固定。
Stata 参考 · R 参考
mepoisson count x || id:, intpoints(1)
lme4::glmer(count ~ x + (1 | id), data = data, family = stats::poisson(link = "log"), nAGQ = 1, control = lme4::glmerControl(optimizer = "bobyqa"))
lme4
Poisson随机截距模型:Laplace近似
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。
Stata 参考 · R 参考
mepoisson count x || id:, intpoints(9)
lme4::glmer(count ~ x + (1 | id), data = data, family = stats::poisson(link = "log"), nAGQ = 9, control = lme4::glmerControl(optimizer = "bobyqa"))
lme4
Poisson随机截距模型:自适应求积
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。
Stata 参考 · R 参考
meprobit binary x || id:, intpoints(1)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "probit"), nAGQ = 1, control = lme4::glmerControl(optimizer = "bobyqa"))
lme4
Probit随机截距模型:Laplace近似
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。
Stata 参考 · R 参考
meprobit binary x || id:, intpoints(9)
lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(link = "probit"), nAGQ = 9, control = lme4::glmerControl(optimizer = "bobyqa"))
lme4
Probit随机截距模型:自适应求积
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一积分设置;Laplace近似不同于多点自适应求积。
Stata 参考 · R 参考
mixed y c.x##c.x || id:
lme4::lmer(y ~ x + I(x^2) + (1 | id), data = data, REML = FALSE)
lme4
二次固定趋势与随机截距
与 Stata 有差异: 固定流程;请明确调整示例列名。R默认REML,Stata mixed默认ML;须明确选择目标似然。
Stata 参考 · R 参考
mixed y x || id:
lme4::lmer(y ~ x + (1 | id), data = data, REML = FALSE)
lme4
REML随机截距模型
与 Stata 有差异: REML=FALSE显式匹配Stata的mixed默认ML估计。lme4默认不打印Stata式固定效应大样本z检验;须统一协方差结构并另行选择推断方法。
Stata 参考 · R 参考
mixed y x || id: x, covariance(independent)
lme4::lmer(y ~ x + (x || id), data = data, REML = FALSE)
lme4
独立随机截距和斜率
与 Stata 有差异: REML=FALSE显式匹配Stata的mixed默认ML估计。lme4默认不打印Stata式固定效应大样本z检验;须统一协方差结构并另行选择推断方法。
Stata 参考 · R 参考
mixed y x || id: x, covariance(unstructured)
lme4::lmer(y ~ x + (x | id), data = data, REML = FALSE)
lme4
相关随机截距和斜率
与 Stata 有差异: REML=FALSE显式匹配Stata的mixed默认ML估计。lme4默认不打印Stata式固定效应大样本z检验;须统一协方差结构并另行选择推断方法。
Stata 参考 · R 参考
mixed y x || id:, mle
lme4::lmer(y ~ x + (1 | id), data = data, REML = FALSE)
lme4
极大似然随机截距模型
与 Stata 有差异: 固定流程;请明确调整示例列名。R默认REML,Stata mixed默认ML;须明确选择目标似然。
Stata 参考 · R 参考
predict fitted, fitted
stats::predict(fit)
lme4
包含随机效应的条件拟合值
与 Stata 有差异: 固定流程;请明确调整示例列名。预测层次已明确;总体预测和组别条件预测的含义不同。
Stata 参考 · R 参考
predict residual, residuals
stats::residuals(fit)
lme4
条件混合模型残差
与 Stata 有差异: 固定流程;请明确调整示例列名。预测层次已明确;总体预测和组别条件预测的含义不同。
Stata 参考 · R 参考
predict u0 u1, reffects
lme4::ranef(fit)$id
lme4
经验Bayes随机截距和斜率
与 Stata 有差异: 固定流程;请明确调整示例列名。预测层次已明确;总体预测和组别条件预测的含义不同。
Stata 参考 · R 参考
predict xb, xb
stats::predict(fit, re.form = NA)
lme4
仅固定效应预测
与 Stata 有差异: 固定流程;请明确调整示例列名。预测层次已明确;总体预测和组别条件预测的含义不同。
Stata 参考 · R 参考
quadchk
{ fits <- lapply(c(5, 9, 15), function(q) lme4::glmer(binary ~ x + (1 | id), data = data, family = stats::binomial(), nAGQ = q)); data.frame(points = c(5, 9, 15), logLik = vapply(fits, function(f) as.numeric(stats::logLik(f)), numeric(1)), slope = vapply(fits, function(f) unname(lme4::fixef(f)[2]), numeric(1))) }
lme4
混合Logit估计对求积点数的敏感性
固定流程;请明确调整示例列名。手动检查求积敏感性,不能自动保证收敛。
Stata 参考 · R 参考
xtologit ordinal x
ordinal::clmm(ordinal ~ x + (1 | id), data = data, link = "logit", nAGQ = 12)
ordinal
随机截距累积Logit模型
与 Stata 有差异: 固定流程;请明确调整示例列名。须统一阈值符号和默认求积方式。
Stata 参考 · R 参考
xtoprobit ordinal x
ordinal::clmm(ordinal ~ x + (1 | id), data = data, link = "probit", nAGQ = 12)
ordinal
随机截距累积Probit模型
与 Stata 有差异: 固定流程;请明确调整示例列名。潜在残差方差由Probit连接固定。
Stata 参考 · R 参考

流行病学

Stata R 用途、差异及来源
cc case exposed
unname(a * d / (b * c))
base
病例对照交叉乘积优势比
与 Stata 有差异: 固定流程;请明确调整示例列名。病例对照抽样可识别优势比,不能识别绝对疾病风险。
Stata 参考 · R 参考
cc case exposed, exact
stats::fisher.test(tab, alternative = "two.sided")
stats
精确条件优势比推断
与 Stata 有差异: 固定流程;请明确调整示例列名。条件估计和双侧p值计算约定可能不同。
Stata 参考 · R 参考
cc case exposed, woolf
{ log_or <- log(a * d / (b * c)); se <- sqrt(sum(1 / tab)); exp(c(estimate = log_or, lower = log_or - qnorm(.975) * se, upper = log_or + qnorm(.975) * se)) }
stats
对数优势比近似Wald区间
与 Stata 有差异: 固定流程;请明确调整示例列名。计数不能为零;未自动施加连续性修正。
Stata 参考 · R 参考
cci 20 10 80 90
unname(a * d / (b * c))
base
病例对照交叉乘积优势比
与 Stata 有差异: 固定流程;请明确调整示例列名。病例对照抽样可识别优势比,不能识别绝对疾病风险。
Stata 参考 · R 参考
cci 20 10 80 90, exact
stats::fisher.test(tab, alternative = "two.sided")
stats
精确条件优势比推断
与 Stata 有差异: 固定流程;请明确调整示例列名。条件估计和双侧p值计算约定可能不同。
Stata 参考 · R 参考
cci 20 10 80 90, woolf
{ log_or <- log(a * d / (b * c)); se <- sqrt(sum(1 / tab)); exp(c(estimate = log_or, lower = log_or - qnorm(.975) * se, upper = log_or + qnorm(.975) * se)) }
stats
对数优势比近似Wald区间
与 Stata 有差异: 固定流程;请明确调整示例列名。计数不能为零;未自动施加连续性修正。
Stata 参考 · R 参考
cs case exposed
{ risk1 <- a / (a + c); risk0 <- b / (b + d); c(risk_exposed = risk1, risk_unexposed = risk0, risk_ratio = risk1 / risk0, risk_difference = risk1 - risk0) }
base
风险比和风险差
与 Stata 有差异: 固定流程;请明确调整示例列名。点风险量要求可比随访的队列设计;病例对照抽样不能识别绝对风险。
Stata 参考 · R 参考
cs case exposed
{ rr <- (a / (a + c)) / (b / (b + d)); af_exposed <- 1 - 1 / rr; risk_population <- (a + b) / (a + b + c + d); c(attributable_fraction_exposed = af_exposed, attributable_fraction_population = (risk_population - b / (b + d)) / risk_population) }
base
暴露组和总体归因分值
与 Stata 有差异: 固定流程;请明确调整示例列名。因果解释还要求可交换性和正确的研究抽样。
Stata 参考 · R 参考
cs case exposed, exact
stats::fisher.test(tab)
stats
队列表的Fisher精确关联检验
与 Stata 有差异: 固定流程;请明确调整示例列名。R报告条件极大似然优势比;Stata还报告样本交叉乘积指标。
Stata 参考 · R 参考
cs case exposed, or woolf
{ odds <- a * d / (b * c); se <- sqrt(1 / a + 1 / b + 1 / c + 1 / d); c(odds_ratio = odds, lower = exp(log(odds) - qnorm(.975) * se), upper = exp(log(odds) + qnorm(.975) * se)) }
stats
队列表的Woolf优势比区间
与 Stata 有差异: 固定流程;请明确调整示例列名。Woolf近似要求所有单元格计数为正。
Stata 参考 · R 参考
csi 20 10 80 90
{ risk1 <- a / (a + c); risk0 <- b / (b + d); c(risk_exposed = risk1, risk_unexposed = risk0, risk_ratio = risk1 / risk0, risk_difference = risk1 - risk0) }
base
风险比和风险差
与 Stata 有差异: 固定流程;请明确调整示例列名。点风险量要求可比随访的队列设计;病例对照抽样不能识别绝对风险。
Stata 参考 · R 参考
csi 20 10 80 90
{ rr <- (a / (a + c)) / (b / (b + d)); af_exposed <- 1 - 1 / rr; risk_population <- (a + b) / (a + b + c + d); c(attributable_fraction_exposed = af_exposed, attributable_fraction_population = (risk_population - b / (b + d)) / risk_population) }
base
暴露组和总体归因分值
与 Stata 有差异: 固定流程;请明确调整示例列名。因果解释还要求可交换性和正确的研究抽样。
Stata 参考 · R 参考
csi 20 10 80 90, exact
stats::fisher.test(tab)
stats
队列表的Fisher精确关联检验
与 Stata 有差异: 固定流程;请明确调整示例列名。R报告条件极大似然优势比;Stata还报告样本交叉乘积指标。
Stata 参考 · R 参考
csi 20 10 80 90, or woolf
{ odds <- a * d / (b * c); se <- sqrt(1 / a + 1 / b + 1 / c + 1 / d); c(odds_ratio = odds, lower = exp(log(odds) - qnorm(.975) * se), upper = exp(log(odds) + qnorm(.975) * se)) }
stats
队列表的Woolf优势比区间
与 Stata 有差异: 固定流程;请明确调整示例列名。Woolf近似要求所有单元格计数为正。
Stata 参考 · R 参考
dstdize deaths population age, by(group) base(1)
sum(data$deaths / data$population * standard / sum(standard))
base
分层发生率的直接标准化
固定流程;请明确调整示例列名。固定单总体计算;标准权重须代表目标参考总体。
Stata 参考 · R 参考
ir cases exposed time
c(rate_exposed = 20 / 100, rate_unexposed = 10 / 200, incidence_rate_ratio = (20 / 100) / (10 / 200), rate_difference = 20 / 100 - 10 / 200)
base
发生率比和发生率差
与 Stata 有差异: 固定流程;请明确调整示例列名。分母为人时,结果是发生率而非风险。
Stata 参考 · R 参考
ir cases exposed time, exact
stats::poisson.test(c(20, 10), T = c(100, 200))
stats
两组Poisson发生率的精确比较
与 Stata 有差异: 固定流程;请明确调整示例列名。Stata ir和iri默认mid-p,本例明确请求精确推断。
Stata 参考 · R 参考
iri 20 10 100 200
c(rate_exposed = 20 / 100, rate_unexposed = 10 / 200, incidence_rate_ratio = (20 / 100) / (10 / 200), rate_difference = 20 / 100 - 10 / 200)
base
发生率比和发生率差
与 Stata 有差异: 固定流程;请明确调整示例列名。分母为人时,结果是发生率而非风险。
Stata 参考 · R 参考
iri 20 10 100 200, exact
stats::poisson.test(c(20, 10), T = c(100, 200))
stats
两组Poisson发生率的精确比较
与 Stata 有差异: 固定流程;请明确调整示例列名。Stata ir和iri默认mid-p,本例明确请求精确推断。
Stata 参考 · R 参考
istdize deaths population age using reference, by(group)
{ expected <- sum(data$population * reference_rate); observed <- sum(data$deaths); c(observed = observed, expected = expected, SMR = observed / expected) }
base
间接标准化及标准化死亡比
固定流程;请明确调整示例列名。仅提供点估计;参考分层和人时单位必须匹配。
Stata 参考 · R 参考
mcc exposed_case exposed_control
stats::mcnemar.test(tab, correct = FALSE)
stats
配对二元暴露的McNemar比较
与 Stata 有差异: 固定流程;请明确调整示例列名。使用未修正的渐近统计量;精确或连续性修正方法不同。
Stata 参考 · R 参考
mcc exposed_case exposed_control
c(matched_odds_ratio = tab[1, 2] / tab[2, 1], discordant_pairs = tab[1, 2] + tab[2, 1])
base
根据不一致配对计算匹配优势比
与 Stata 有差异: 固定流程;请明确调整示例列名。一致配对不提供匹配优势比信息。
Stata 参考 · R 参考
mcci 30 12 4 54
stats::mcnemar.test(tab, correct = FALSE)
stats
配对二元暴露的McNemar比较
与 Stata 有差异: 固定流程;请明确调整示例列名。使用未修正的渐近统计量;精确或连续性修正方法不同。
Stata 参考 · R 参考
mcci 30 12 4 54
c(matched_odds_ratio = tab[1, 2] / tab[2, 1], discordant_pairs = tab[1, 2] + tab[2, 1])
base
根据不一致配对计算匹配优势比
与 Stata 有差异: 固定流程;请明确调整示例列名。一致配对不提供匹配优势比信息。
Stata 参考 · R 参考
mhodds case exposed stratum
stats::mantelhaen.test(tabs, correct = FALSE)
stats
Mantel-Haenszel共同优势比
与 Stata 有差异: 固定流程;请明确调整示例列名。表格方向决定优势比方向;假设各层共同效应。
Stata 参考 · R 参考
tabodds case exposed
{ out <- stats::aggregate(case ~ exposed, data = data, function(v) c(cases = sum(v), noncases = sum(1 - v))); data.frame(exposed = out$exposed, odds = out$case[, 1] / out$case[, 2]) }
stats
按暴露类别列出疾病优势
固定流程;请明确调整示例列名。仅计算类别优势,不包含调整后的趋势检验。
Stata 参考 · R 参考

贝叶斯分析

Stata R 用途、差异及来源
bayesmh y x, likelihood(normal({var})) prior({y:}, normal(0,100)) prior({var}, igamma(1,1)) rseed(135)
MCMCpack::MCMCregress(y ~ x, data = data, burnin = 100, mcmc = 1000, b0 = 0, B0 = .01, c0 = 2, d0 = 2, seed = 135, verbose = 0)
MCMCpack
正态及逆Gamma先验的贝叶斯高斯回归
与 Stata 有差异: 固定流程;请明确调整示例列名。仅简单正态回归模型;采样器和初始化不同。短链仅演示语法,不能证明收敛。
Stata 参考 · R 参考
bayespredict pmean, mean
drop(cbind(1, data$x) %*% colMeans(as.matrix(draws)[, c("(Intercept)", "x")]))
MCMCpack
高斯回归响应的后验均值
与 Stata 有差异: 固定流程;请明确调整示例列名。预测条件均值,观察噪声积分后为零。
Stata 参考 · R 参考
bayesreps yrep*, nreps(10)
{ set.seed(136); keep <- seq(1, nrow(draws), length.out = 10); B <- as.matrix(draws)[keep, ]; means <- cbind(1, data$x) %*% t(B[, c("(Intercept)", "x")]); means + matrix(rnorm(length(means), sd = rep(sqrt(B[, "sigma2"]), each = nrow(data))), nrow(data)) }
MCMCpack
高斯后验预测分布的重复结局
与 Stata 有差异: 固定流程;请明确调整示例列名。包含后验参数不确定性和观察噪声;不写入预测文件。
Stata 参考 · R 参考
bayesstats ess
coda::effectiveSize(draws)
coda
MCMC有效样本量
与 Stata 有差异: 固定流程;请明确调整示例列名。谱密度ESS估计量不同于部分Stata自相关或分批计算。
Stata 参考 · R 参考
bayesstats summary
summary(draws)
coda
后验均值标准差和分位数
与 Stata 有差异: 固定流程;请明确调整示例列名。汇总给定后验抽样;蒙特卡洛误差取决于估计方法。
Stata 参考 · R 参考
bayesstats summary (effect:exp({y:x}))
summary(exp(draws[, "x", drop = FALSE]))
coda
变换系数的后验汇总
与 Stata 有差异: 固定流程;请明确调整示例列名。先变换抽样再汇总;exp(E[b])不等于E[exp(b)]。
Stata 参考 · R 参考
bayesstats summary {y:x}, hpd clevel(90)
coda::HPDinterval(draws[, "x", drop = FALSE], prob = .9)
coda
90%最高后验密度区间
与 Stata 有差异: 固定流程;请明确调整示例列名。HPD算法和多峰分布处理可能不同。
Stata 参考 · R 参考
bayestest interval {y:x}, lower(0)
mean(draws[, "x"] > 0)
base
斜率为正的后验概率
与 Stata 有差异: 固定流程;请明确调整示例列名。区间假设的蒙特卡洛概率,并非频率学派p值。
Stata 参考 · R 参考
bayestest interval {y:x}, lower(1.8) upper(2.2)
mean(draws[, "x"] > 1.8 & draws[, "x"] < 2.2)
base
效应位于实质区间的后验概率
与 Stata 有差异: 固定流程;请明确调整示例列名。实质区间应在查看后验结果前确定。
Stata 参考 · R 参考

按包查阅 R 函数

R 包 Stata 说明
ivreg() AER ivregress 示例用途:公式式工具变量回归
tobit() AER Tobit(删失)回归
dbAppendTable() DBI jdbc 示例用途:将受控行追加到已有 SQL 表
dbDisconnect() DBI odbc 示例用途:通过 SQL 查询载入所选行
dbGetQuery() DBI odbc 示例用途:通过 SQL 查询载入所选行
dbListFields() DBI odbc 示例用途:查看数据库表字段名
dbListTables() DBI odbc 示例用途:查看数据库中的可用表
dbReadTable() DBI jdbc 示例用途:通过 DBI 后端载入完整 SQL 表
oblimin() GPArotation rotate 示例用途:使用斜交oblimin载荷旋转准则
quartimax() GPArotation rotate 示例用途:使用正交quartimax载荷旋转准则
boxcox() MASS boxcox 示例用途:剖面估计Box-Cox响应变换参数
corresp() MASS ca 示例用途:对列联表进行简单对应分析
glm.nb() MASS 负二项回归
isoMDS() MASS mds 示例用途:拟合非度量多维尺度分析
lda() MASS discrim 示例用途:拟合线性判别分析
mca() MASS mca 示例用途:通过指示矩阵MCA分析多个分类变量
mvrnorm() MASS drawnorm 示例用途:联合生成独立标准正态变量列
polr() MASS 有序 logit 或 probit 模型
qda() MASS discrim 示例用途:拟合二次判别分析
rlm() MASS 稳健回归
MCMCregress() MCMCpack bayesmh 示例用途:正态及逆Gamma先验的贝叶斯高斯回归
match_data() MatchIt psmatch2 示例用途:倾向得分匹配后的ATT点对比
matchit() MatchIt 用于因果推断的匹配
synth() Synth 合成控制法
SurvS4() VGAM cpoisson 示例用途:拟合右删失泊松计数模型
binom2.rho() VGAM biprobit 示例用途:联合拟合相关的二元probit方程
cens.poisson() VGAM cpoisson 示例用途:拟合右删失泊松计数模型
multinomial() VGAM slogit 示例用途:拟合秩一刻板多项logit模型
posnegbinomial() VGAM tnbreg 示例用途:拟合零截断NB2回归
posnormal() VGAM truncreg 示例用途:拟合在零处左截断的正态回归
pospoisson() VGAM tpoisson 示例用途:拟合零截断泊松回归
rrvglm() VGAM slogit 示例用途:拟合秩一刻板多项logit模型
vglm() VGAM tpoisson 示例用途:拟合零截断泊松回归
weightit() WeightIt 平衡权重,如逆概率权重
.libPaths() base adopath 示例用途:查看 R 包库搜索路径
I() base regress 示例用途:拟合二次项回归
Mod() base psdensity 示例用途:参数化AR(1)谱密度
R.home() base sysdir 示例用途:查看 R 安装与临时文件夹
Sys.Date() base 今天的日期
Sys.sleep() base sleep 示例用途:将毫秒转为秒后暂停执行
Sys.time() base c(current_time) 当前日期和时间
abs() base abs() 绝对值
all() base assert 是否所有值都为 TRUE
any() base count if 是否有任一值为 TRUE
anyDuplicated() base gisid 示例用途:使用 gisid 验证编号唯一且完整
anyNA() base gisid 示例用途:使用 gisid 验证编号唯一且完整
apply() base egen rowtotal() 对行或列应用函数
as.Date() base 转为日期
as.POSIXct() base clock 示例用途:使用显式 UTC 时区解析日期时间
as.character() base 转为文本
as.data.frame() base getmata 示例用途:将矩阵转换为具名数据列
as.double() base 转为双精度数值
as.factor() base encode 转为因子
as.integer() base 转为整数
as.matrix() base cf 示例用途:验证两个数据表指定列的值一致
as.numeric() base 转为数值
as.vector() base margins 示例用途:计算连续解释变量的平均边际效应
attr() base 读取或设定对象的属性
attributes() base char 示例用途:查看自定义列特征
body() base viewsource 示例用途:查看指定 R 函数的函数体
c() base 把多个值组合成向量
cat() base 打印不带引号的文本
cbind() base merge 1:1 _n 左右拼接(base R)
ceiling() base 向上取整
charToRaw() base changeeol 示例用途:将文本文件换行统一为 Unix 格式
character() base tokenize 示例用途:拆分带引号短语与单词
chol() base irf 示例用途:Cholesky正交化VAR响应
class() base describe 对象的类
close() base file 示例用途:写入并关闭 UTF-8 文本连接
col() base spmatrix 示例用途:行标准化逆距离空间权重
colMeans() base margins 示例用途:计算连续解释变量的平均边际效应
colSums() base missings 示例用途:按数值变量报告缺失值数
colnames() base ds 列名
crossprod() base tsfilter 示例用途:Hodrick-Prescott趋势周期分解
cumprod() base generate 累计乘积
cumsum() base 累计求和
cut() base 把数值切分为区间
data.frame() base range 示例用途:创建包含端点的等距网格
diag() base 矩阵的对角线
diff() base D. 相邻取值之差
dim() base describe 行数和列数
dir() base 列出文件夹中的文件
dir.create() base mkdir 创建文件夹
do.call() base program 用参数列表调用函数
double() base postfile 示例用途:初始化带列类型的结果容器
dput() base dataex 示例用途:为小型数据示例生成可复现 R 代码
drop() base lincom 示例用途:估计两个斜率之和及标准误
droplevels() base label define 删除未使用的因子水平
duplicated() base gegen 示例用途:标记各非缺失组的一条观测
eigen() base varstable 示例用途:VAR(1)伴随矩阵特征值
environment() base include 示例用途:在当前求值环境执行辅助代码
exp() base exp() 指数函数
expand.grid() base arimasoc 示例用途:ARMA信息准则比较
factor() base 带标签水平的类别变量
file() base file 示例用途:写入并关闭 UTF-8 文本连接
file.copy() base copy 示例用途:复制本地文件到新路径
file.exists() base confirm file 文件是否存在
file.info() base hexdump 示例用途:以十六进制字节查看文件
file.path() base global path 构建文件路径
floor() base 向下取整
format() base 设定显示格式
formatC() base string(x, "%9.2f") 按宽度和填充格式化数值
getwd() base 显示工作文件夹
grep() base unab 示例用途:展开列名前缀通配符
grepl() base 文本是否匹配某个模式
gsub() base subinstr() 替换所有匹配
iconv() base unicode 示例用途:将 Latin-1 文本转换为 UTF-8
identical() base cf 示例用途:验证两个数据表指定列的值一致
ifelse() base cond() 向量化的条件判断(base R)
integer() base gdistinct 示例用途:分别统计多列不同值数
interaction() base egen group() 把多个因子组合为一个
invisible() base exit 示例用途:提前从函数返回
is.character() base confirm string variable 向量是否为文本型
is.infinite() base gencohort 示例用途:构造首次处理队列并标记从未处理者
is.na() base 是否为缺失值
is.nan() base egen 示例用途:对多列可用值逐行求均值
is.numeric() base confirm numeric variable 向量是否为数值型
lapply() base foreach 对每个元素应用函数,返回列表
length() base count 元素个数
lengths() base wordcount 示例用途:统计简单空白分隔词数
levels() base 因子的类别
library() base ssc install 加载包
list() base 对象列表
list.files() base dir 文件夹中的文件
load() base use 从 .RData 文件载入对象
local() base tempvar 示例用途:在局部作用域使用临时向量计算
log() base 对数(默认为自然对数)
log10() base log10() 以 10 为底的对数
logical() base missings 示例用途:删除完全缺失的数值列
ls() base 列出内存中的对象
make.names() base 把文本转为合法的名称
mapply() base arimasoc 示例用途:ARMA信息准则比较
match() base rename 示例用途:同时重命名多列
match.arg() base unabcmd 示例用途:在已知 R 选项中解析唯一缩写
matrix() base 生成矩阵
max() base 最大值
mean() base 均值
merge() base merge 合并两个数据框(base R)
message() base display 打印消息
min() base 最小值
names() base 对象的名称,例如列名
nchar() base strlen() 字符个数
ncol() base describe 列数
nlevels() base levelsof 因子水平个数
normalizePath() base findfile 示例用途:在指定文件夹中查找文件
nrow() base 行数
numeric() base rangestat 示例用途:在各闭区间数值键邻域内计算均值
options() base set 设定全局选项
order() base sort 使向量排序的位置
paste() base 用分隔符连接文本
paste0() base 不加分隔符连接文本
plot() base 基础绘图
pmatch() base unab 示例用途:解析无歧义的缩写列名
pmax() base max(a, b) 多个向量的逐元素最大值
pmin() base min(a, b) 多个向量的逐元素最小值
print() base 打印对象
prop.table() base 把频数转为比例
proportions() base tabulate, row 把表格转为比例
qr() base orthog 示例用途:按指定顺序对中心化解释变量列正交化
qr.Q() base orthog 示例用途:按指定顺序对中心化解释变量列正交化
range() base summarize 最小值和最大值
rank() base 秩(相同取值取平均秩)
rbind() base append 上下拼接(base R)
readBin() base hexdump 示例用途:以十六进制字节查看文件
readLines() base changeeol 示例用途:将文本文件换行统一为 Unix 格式
readRDS() base use 读取 R 对象文件(.rds)
regexpr() base strpos 示例用途:定位 ASCII 子串并以零表示未找到
rep() base expand 重复取值
rep_len() base 把取值重复到指定长度
replace() base generate 示例用途:生成忽略缺失值的累计和
replicate() base bootstrap 示例用途:通过重抽样完整聚类自助估计均值
requireNamespace() base ftools 示例用途:查看 R 数据操作包版本与可用性
return() base exit 示例用途:提前从函数返回
rev() base gsort 反转顺序
rm() base 从内存中删除对象
round() base 按小数位数四舍五入
row() base spmatrix 示例用途:行标准化逆距离空间权重
rowMeans() base egen 示例用途:对多列可用值逐行求均值
rowSums() base 逐行求和
sample() base sample 随机抽取取值
sample.int() base bsample 示例用途:抽取非参数观测自助样本
sapply() base foreach 对每个元素应用函数并简化结果
save() base save 把对象保存为 .RData 文件
saveRDS() base 把一个 R 对象保存到文件
scale() base egen std() 标准化列
scan() base tokenize 示例用途:拆分带引号短语与单词
seq() base 数列
seq_along() base _n 向量元素的位置
seq_len() base _n 从 1 到 n 的整数
serialize() base datasignature 示例用途:保存 R 序列化结果供后续比较
set.seed() base 设定随机数种子
setwd() base 更换工作文件夹
sign() base compare 示例用途:比较指定子样本中的取值大小
signif() base round() 按有效数字取舍
sin() base tsfilter 示例用途:Baxter-King近似带通周期
sink() base 把控制台输出写入文件
solve() base estat 示例用途:计算量表题项的复相关平方
sort() base 对向量排序
source() base 运行 R 脚本
split() base by 把数据按组拆分
sprintf() base 用模板格式化数值和文本
sqrt() base 平方根
stop() base exit 198 报错并停止
stopifnot() base 条件不为 TRUE 时报错
strsplit() base split 拆分字符串
sub() base regexr() 替换第一个匹配
subset() base keep if 满足条件的行(base R)
substr() base substr() 按位置截取字符串
sum() base 求和
summary() base 对象(如模型)的概要
sys.source() base include 示例用途:在当前求值环境执行辅助代码
t() base 矩阵转置
table() base 统计各取值的个数
tapply() base bysort g: egen 分组应用函数
tempdir() base sysdir 示例用途:查看 R 安装与临时文件夹
tempfile() base 临时文件名
tolower() base strlower() 转为小写
toupper() base strupper() 转为大写
traceback() base 显示上一个错误发生的位置
transform() base expandcl 示例用途:复制完整组并赋予新的组编号
trimws() base strtrim() 去掉首尾空格
trunc() base int() 去掉小数部分
try() base capture 出错后继续运行
tryCatch() base capture 处理错误和警告
typeof() base describe 存储类型
unclass() base rotate 示例用途:使用斜交oblimin载荷旋转准则
unique() base 不重复的取值
unname() base cf 示例用途:验证两个数据表指定列的值一致
unsplit() base permute 示例用途:在固定分层内部置换结果变量
vapply() base gdistinct 示例用途:分别统计多列不同值数
vector() base irf 示例用途:简约式VAR(1)脉冲响应矩阵
warning() base display as error 发出警告
which() base list if 条件为 TRUE 的位置
with() base 在数据框的列中运行代码
writeBin() base changeeol 示例用途:将文本文件换行统一为 Unix 格式
writeLines() base checksum 示例用途:将文件摘要保存为附属文本文件
xor() base egen 示例用途:标记两列是否不同
betareg() betareg betareg 示例用途:使用logit均值连接拟合贝塔回归
binsreg() binsreg 分箱散点图及估计
boot() boot centile 示例用途:估计中位数并自助计算置信区间
boot.ci() boot centile 示例用途:估计中位数并自助计算置信区间
augment() broom predict 把拟合值和残差加到数据中
glance() broom 模型统计量的一行概要
tidy() broom 以数据框形式给出系数表
Anova() car anova II 型和 III 型方差分析表
avPlots() car 偏回归图
deltaMethod() car nlcom 示例用途:使用Delta方法估计斜率比
leveneTest() car robvar 示例用途:使用以中位数为中心的Levene方法检验组间方差相等
linearHypothesis() car test 检验系数的线性约束
vif() car 方差膨胀因子
knn() class discrim 示例用途:使用五个最近邻进行分类
bal.tab() cobalt pstest 示例用途:匹配前后标准化协变量平衡
HPDinterval() coda bayesstats 示例用途:90%最高后验密度区间
effectiveSize() coda bayesstats 示例用途:MCMC有效样本量
fread() data.table import delimited 快速读取大型文本文件
fwrite() data.table export delimited 快速写出大型文本文件
winsorize() datawizard 对极端值缩尾
att_gt() did 交错双重差分(Callaway-Sant'Anna)
across() dplyr 对多列进行相同的计算
add_count() dplyr bysort g: generate n = _N 添加分组计数列
all_of() dplyr keep `vars' 选择字符向量中列出的列
anti_join() dplyr 保留第一个数据中在第二个数据里没有匹配的行
any_of() dplyr capture keep 选择列出且存在的列
arrange() dplyr 对行排序
between() dplyr 取值是否在某个范围内
bind_cols() dplyr 把数据左右拼接
bind_rows() dplyr 把数据上下拼接
c_across() dplyr egen rowtotal() 在 rowwise() 中组合多列
case_match() dplyr recode 按取值匹配重新编码
case_when() dplyr 一次写多个条件分支
coalesce() dplyr 多个向量中第一个非缺失值
consecutive_id() dplyr tsspell 对连续相同的取值编号
contains() dplyr 选择名称包含某段文本的列
count() dplyr 统计每组的行数
cross_join() dplyr 两个数据所有行的组合
cumall() dplyr sum() 累计的 all():直到第一个 FALSE 前为 TRUE
cume_dist() dplyr cumul 累积分布
cur_group() dplyr by 当前组的分组键
cur_group_id() dplyr 当前组的编号
dense_rank() dplyr egen group() 无间隔的秩
desc() dplyr 在 arrange() 中降序排列
distinct() dplyr 保留不重复的行
ends_with() dplyr 选择名称以某段文本结尾的列
everything() dplyr _all 选择所有列
filter() dplyr 保留满足条件的行
first() dplyr x[1] 第一个值
full_join() dplyr 合并并保留两个数据的所有行
glimpse() dplyr describe 紧凑地查看所有列
group_by() dplyr 分组,使后续操作在组内进行
group_split() dplyr by 按组拆分为多个数据
group_vars() dplyr by 分组变量的名称
if_all() dplyr egen rowmin() 多列是否都满足条件
if_any() dplyr egen anymatch() 多列中是否有任一列满足条件
if_else() dplyr 条件成立取一个值,否则取另一个值
inner_join() dplyr 合并并只保留匹配成功的行
intersect() dplyr merge, keep(match) 两个数据中都有的行
join_by() dplyr joinby 合并键,包括不等式和区间合并
lag() dplyr 上一行的值
last() dplyr x[_N] 最后一个值
last_col() dplyr order 最后一列
lead() dplyr 下一行的值
left_join() dplyr 合并并保留第一个数据的所有行
matches() dplyr 选择名称匹配正则表达式的列
min_rank() dplyr egen rank(), track 秩(相同取值取最小秩)
mutate() dplyr 生成或修改列
n() dplyr 当前组的行数
n_distinct() dplyr distinct 不同取值的个数
na_if() dplyr 把某个取值改为缺失值
near() dplyr reldif() 带容差地比较数值
nth() dplyr x[5] 指定位置的值
ntile() dplyr xtile 分成 n 个大小相近的组
num_range() dplyr keep x1-x5 按编号选择 x1、x2 等列
percent_rank() dplyr egen rank() 缩放到 0 到 1 的秩
pick() dplyr varlist 在 mutate() 或 summarise() 中选取列
pull() dplyr 把一列提取为向量
reframe() dplyr collapse 每组汇总为任意行数
relocate() dplyr 移动列的位置
rename() dplyr 重命名列(新名 = 旧名)
rename_with() dplyr 用函数(如 toupper)批量重命名列
right_join() dplyr 合并并保留第二个数据的所有行
row_number() dplyr 行号
rows_update() dplyr merge, update replace 用另一个数据更新行
rowwise() dplyr egen rowmean() 逐行计算
select() dplyr 保留或删除列
semi_join() dplyr 保留第一个数据中在第二个数据里有匹配的行
setdiff() dplyr merge, keep(master) 只在第一个数据中的行
slice() dplyr 按位置保留行
slice_head() dplyr bysort g: keep if _n <= 3 每组的前几行
slice_max() dplyr gsort -x; keep in 1/5 取值最大的若干行
slice_min() dplyr sort x; keep in 1/5 取值最小的若干行
slice_sample() dplyr 随机抽取若干行
slice_tail() dplyr bysort g: keep if _n > _N - 3 每组的最后几行
starts_with() dplyr 选择名称以某段文本开头的列
summarise() dplyr 把每组汇总为一行统计量
summarize() dplyr collapse 同 summarise()
tally() dplyr count 统计行数
transmute() dplyr keep 生成新列并只保留它们
ungroup() dplyr 取消分组
union() dplyr append 两个数据中的所有行(去重)
where() dplyr ds, has(type numeric) 按类型选择列,如 where(is.numeric)
cohens_d() effectsize esize 示例用途:估计两个独立组的Cohen标准化均值差
iv_robust() estimatr ivregress 示例用途:两阶段最小二乘协方差:HC1
coefplot() fixest coefplot fixest 模型的系数图
etable() fixest esttab fixest 模型的回归表
feglm() fixest xtlogit 带固定效应的广义线性模型(如 logit)
fenegbin() fixest xtnbreg 带固定效应的负二项模型
feols() fixest 带固定效应、聚类和工具变量的线性回归
fepois() fixest 带固定效应的泊松回归
fitstat() fixest estat firststage 拟合统计量(含第一阶段 F)
sunab() fixest eventstudyinteract 示例用途:Sun-Abraham队列交互事件研究估计
flextable() flextable 用于 Word 或 PowerPoint 的格式化表格
save_as_docx() flextable 把表格保存为 Word 文件
fct_collapse() forcats recode 把多个水平合并为组
fct_count() forcats tabulate 统计各水平的个数
fct_drop() forcats label define 删除未使用的水平
fct_infreq() forcats tabulate x, sort 按频数排序水平
fct_lump_n() forcats recode 把少见的水平合并为 Other
fct_na_value_to_level() forcats tabulate x, missing 把缺失值变为一个水平
fct_recode() forcats label define, modify 重命名因子水平
fct_relevel() forcats ib3.x 把因子水平移到前面
fct_reorder() forcats graph bar, sort 按另一个变量排序水平
fct_rev() forcats label define 反转水平顺序
Arima() forecast forecast 示例用途:ARIMA一步拟合值
forecast() forecast forecast 示例用途:八期ARIMA预测
fracdiff() fracdiff arfima 示例用途:分数阶差分ARMA估计
boottest() fwildclusterboot boottest 示例用途:施加原假设的野生聚类自助法:rademacher权重
geeglm() geepack xtgee 示例用途:gaussian GEE:independence工作相关结构
aes() ggplot2 把变量映射到 x、y、颜色等图形属性
after_stat() ggplot2 histogram 示例用途:绘制密度直方图
annotate() ggplot2 text() 添加单个注释(如文本)
coord_cartesian() ggplot2 xscale(range()) 放大视图而不删除数据
coord_flip() ggplot2 交换 x 轴和 y 轴
coord_polar() ggplot2 极坐标,用于饼图
facet_grid() ggplot2 by() 按两个变量分面
facet_wrap() ggplot2 按组分面
geom_abline() ggplot2 function 给定斜率和截距的直线
geom_area() ggplot2 面积图
geom_bar() ggplot2 频数柱状图
geom_boxplot() ggplot2 箱线图
geom_col() ggplot2 graph bar (asis) 给定高度的柱状图
geom_contour() ggplot2 twoway 示例用途:在规则网格上绘制等高线
geom_density() ggplot2 密度曲线
geom_errorbar() ggplot2 误差线或带端帽的区间
geom_histogram() ggplot2 直方图
geom_hline() ggplot2 yline() 水平参考线
geom_jitter() ggplot2 scatter, jitter() 抖动的散点
geom_label() ggplot2 mlabel() 带框的文本标签
geom_line() ggplot2 连接观测值的折线
geom_linerange() ggplot2 twoway 示例用途:使用垂直线表示区间
geom_point() ggplot2 点(散点图)
geom_pointrange() ggplot2 rcap 带区间的点
geom_qq() ggplot2 分位数-分位数图的点
geom_qq_line() ggplot2 分位数-分位数图的参考线
geom_rect() ggplot2 twoway 示例用途:绘制上下限之间的区间条
geom_ribbon() ggplot2 两个值之间的阴影带
geom_segment() ggplot2 twoway 示例用途:绘制从零起始的垂直针状线
geom_sf() ggplot2 spmap 基于空间数据的地图
geom_smooth() ggplot2 拟合直线或平滑曲线
geom_step() ggplot2 line, connect(stairstep) 阶梯图
geom_text() ggplot2 图中的文本标签
geom_tile() ggplot2 heatplot 热图方块
geom_violin() ggplot2 小提琴图
geom_vline() ggplot2 竖直参考线
ggplot() ggplot2 开始绘图
ggsave() ggplot2 把图形保存为文件
labs() ggplot2 title() 标题和坐标轴标签
position_dodge() ggplot2 over() 把柱子或点并排放置
position_jitter() ggplot2 dotplot 示例用途:按类别显示各个观测
scale_colour_manual() ggplot2 mcolor() 手动指定颜色
scale_fill_brewer() ggplot2 set scheme ColorBrewer 填充颜色
scale_x_continuous() ggplot2 xlabel() 坐标轴刻度和标签
scale_x_log10() ggplot2 xscale(log) 对数刻度的 x 轴
scale_y_continuous() ggplot2 scatter 示例用途:设置纵轴刻度
scale_y_log10() ggplot2 scatter 示例用途:使用对数纵轴
stat_ecdf() ggplot2 cumul 经验累积分布图
stat_summary() ggplot2 在每个 x 处绘制 y 的汇总值(如均值)
stat_summary_2d() ggplot2 heatplot 在二维分箱内汇总变量
theme() ggplot2 graphregion() 微调图形样式
theme_bw() ggplot2 黑白图形主题
theme_classic() ggplot2 set scheme 经典图形主题
theme_minimal() ggplot2 set scheme 简洁图形主题
theme_set() ggplot2 设定所有图形的默认主题
xlim() ggplot2 xscale(range()) x 轴范围
glmmTMB() glmmTMB menbreg 示例用途:二次均值方差负二项混合模型
nbinom2() glmmTMB menbreg 示例用途:二次均值方差负二项混合模型
cv.glmnet() glmnet lasso 示例用途:拟合交叉验证的lasso线性预测模型
pairs() graphics 散点图矩阵
plot() graphics quantile 示例用途:绘制有序观测与累计比例的关系
stem() graphics 茎叶图
arrow() grid twoway 示例用途:在成对坐标间绘制箭头
tbl_cross() gtsummary tabulate x1 x2 交叉表
tbl_regression() gtsummary esttab 回归结果表
tbl_summary() gtsummary 描述统计表(“表 1”)
as_factor() haven decode 把带标签的取值转为因子
is_tagged_na() haven mvencode 示例用途:只编码一种带标记缺失
labelled() haven 给向量加上数值标签
print_labels() haven label list 显示数值标签
read_dta() haven 读取 Stata .dta 文件
read_sas() haven 读取 SAS 文件
read_sav() haven 读取 SPSS .sav 文件
read_xpt() haven import 示例用途:导入 SAS XPORT 第五版文件
tagged_na() haven replace x = .a Stata 式扩展缺失值(如 .a)
write_dta() haven 写出 Stata .dta 文件
write_sav() haven savespss 写出 SPSS 文件
write_xpt() haven export 示例用途:导出 SAS XPORT 第五版数据
zap_labels() haven 去掉数值标签
zap_missing() haven mvdecode 把特殊缺失值改为 NA
adorn_totals() janitor tabulate x1 x2 给 tabyl 加合计
clean_names() janitor rename *, lower 清理并小写变量名
get_dupes() janitor duplicates list 列出重复行
remove_empty() janitor missings dropvars 删除空行和空列
tabyl() janitor tabulate 频数表和交叉表
look_for() labelled lookfor 按名称或标签查找变量
set_variable_labels() labelled 设定变量标签
to_factor() labelled decode 把带标签的取值转为因子
val_labels() labelled label values 读取或设定数值标签
var_label() labelled label variable 读取或设定变量标签
cfa() lavaan sem 示例用途:拟合三因子验证性测量模型
fitMeasures() lavaan estat 示例用途:报告验证性因子模型拟合指标
lavResiduals() lavaan estat 示例用途:检查结构方程模型残差相关
modindices() lavaan estat 示例用途:检查结构方程模型修正指数
sem() lavaan 结构方程模型
standardizedSolution() lavaan sem 示例用途:报告标准化结构方程模型参数
VarCorr() lme4 estat sd 多层模型的方差成分
fixef() lme4 quadchk 示例用途:混合Logit估计对求积点数的敏感性
glmer() lme4 多层广义线性模型
glmerControl() lme4 melogit 示例用途:Logistic随机截距模型:Laplace近似
lmer() lme4 多层线性模型
ranef() lme4 predict, reffects 随机效应的预测值
bptest() lmtest Breusch-Pagan 异方差检验
coeftest() lmtest 使用指定方差矩阵的系数检验
grangertest() lmtest vargranger 示例用途:检验x是否Granger预测y
lrtest() lmtest 似然比检验
resettest() lmtest 遗漏变量 RESET 检验
waldtest() lmtest test 嵌套模型的 Wald 检验
as_date() lubridate dofc() 转为日期
day() lubridate 日期中的日
days() lubridate d + 7 以天为单位的时期,用于日期运算
days_in_month() lubridate daysinmonth 示例用途:获取各日历月的天数
dmy() lubridate date(s, "DMY") 把日-月-年格式文本解析为日期
floor_date() lubridate mofd() 把日期向下取整到某个单位(如月)
hour() lubridate hh() 小时
interval() lubridate 两个日期之间的时间段
make_date() lubridate 由年、月、日生成日期
make_datetime() lubridate mdyhms() 由各部分生成日期时间
mdy() lubridate date(s, "MDY") 把月-日-年格式文本解析为日期
minute() lubridate mm() 分钟
month() lubridate 日期中的月份
now() lubridate now() 当前日期和时间
quarter() lubridate quarter() 日期所在的季度
time_length() lubridate 以指定单位(如年)计算时间段长度
today() lubridate today() 今天的日期
wday() lubridate 星期几
week() lubridate week() 一年中的第几周
yday() lubridate doy() 一年中的第几天
year() lubridate 日期中的年份
years() lubridate d + 365 以年为单位的时期,用于日期运算
ymd() lubridate 把 2024-01-31 这样的文本解析为日期
ymd_hms() lubridate 把文本解析为日期时间
avg_comparisons() marginaleffects margins r.x 平均对比
avg_predictions() marginaleffects 平均预测值,类似 Stata 的 margins
avg_slopes() marginaleffects 平均边际效应
comparisons() marginaleffects margins r.x 预测值之差(对比)
hypotheses() marginaleffects 线性和非线性假设检验
plot_predictions() marginaleffects 绘制预测值,类似 marginsplot
plot_slopes() marginaleffects marginsplot 绘制边际效应
predictions() marginaleffects margins 带标准误的预测值
slopes() marginaleffects margins, dydx(x) at() 每个观测的边际效应
cumul() metafor meta 示例用途:按年份累积的固定效应元分析
escalc() metafor meta 示例用途:声明通用效应量与抽样方差
leave1out() metafor meta 示例用途:逐一剔除研究的合并估计
ranktest() metafor meta 示例用途:秩相关小样本研究效应检验
regtest() metafor meta 示例用途:Egger回归不对称检验
rma() metafor meta 示例用途:逆方差元分析方法:FE
trimfill() metafor meta 示例用途:剪补法敏感性分析
D1() mice mi 示例用途:合并多变量Wald比较
D2() mice mi 示例用途:合并重复完整数据Wald检验
complete() mice mi 示例用途:提取第一个完整数据集
make.predictorMatrix() mice mi 示例用途:自定义插补预测矩阵
mice() mice 链式方程多重插补
pool() mice 合并多个插补数据的结果
pool.scalar() mice mi 示例用途:插补连续变量均值的Rubin合并
MIcombine() mitools mi 示例用途:直接合并系数向量与协方差矩阵
datasummary() modelsummary tabstat 自定义描述统计表
datasummary_skim() modelsummary codebook 快速概览所有变量
modelplot() modelsummary 系数图
modelsummary() modelsummary 回归结果表和描述统计表
glht() multcomp contrast 示例用途:构造各组与参照类别之间的对比
mcp() multcomp contrast 示例用途:构造各组与参照类别之间的对比
dmvnorm() mvtnorm lnmvnormalden 示例用途:计算多变量正态对数密度
pmvnorm() mvtnorm binormal 示例用途:计算相关二元正态概率
corAR1() nlme xtregar 示例用途:随机截距加AR(1)残差相关
gls() nlme hetregress 示例用途:拟合带乘性异方差的正态均值模型
lme() nlme xtregar 示例用途:随机截距加AR(1)残差相关
nlme() nlme menl 示例用途:随机系数非线性指数增长
varExp() nlme hetregress 示例用途:拟合带乘性异方差的正态均值模型
varIdent() nlme xtgls 示例用途:组间异方差面板极大似然GLS
multinom() nnet 多项 logit 模型
oaxaca() oaxaca Blinder-Oaxaca 分解
clmm() ordinal meologit 示例用途:随机截距累积Logit模型
coords() pROC roctab 示例用途:列出不同ROC阈值的敏感度与特异度
roc() pROC roctab 示例用途:估计诊断标记的非参数ROC曲线下面积
roc.test() pROC roccomp 示例用途:使用DeLong推断比较配对标记的ROC面积
wrap_plots() patchwork 组合多张图
pdata.frame() plm xtset 为 plm 声明面板数据
pgmm() plm 动态面板 GMM(Arellano-Bond)
phtest() plm hausman Hausman 检验
plm() plm 面板模型:固定效应和随机效应
plmtest() plm xttest0 示例用途:个体随机效应Breusch-Pagan检验
purtest() plm xtunitroot 示例用途:面板单位根检验:levinlin
vcovBK() plm xtpcse 示例用途:Beck-Katz面板修正协方差
vcovHC() plm xtreg 示例用途:按个体聚类的面板稳健标准误
vcovSCC() plm xtreg 示例用途:Driscoll-Kraay协方差
polychor() polycor tetrachoric 示例用途:使用最大似然估计四分相关
zeroinfl() pscl zip 示例用途:拟合采用logit零膨胀部分的零膨胀泊松模型
ICC() psych icc 示例用途:估计单向模型单次测量组内相关
KMO() psych estat 示例用途:使用KMO指标评估因子分析适用性
alpha() psych alpha Cronbach α 系数
cohen.kappa() psych kap 示例用途:估计两名评分者的非加权Cohen kappa
describe() psych summarize 描述统计(与 Stata 的 describe 不同)
fa() psych factor 方法更多的因子分析
mardia() psych mvtest 示例用途:计算Mardia多变量偏度与峰度检验
principal() psych factor 示例用途:拟合主成分因子解
list_rbind() purrr append 把数据框列表上下拼接
map() purrr foreach 对每个元素应用函数,返回列表
map2() purrr forvalues 对成对的元素应用函数
map_chr() purrr foreach 对每个元素应用函数,返回文本
map_dbl() purrr foreach 对每个元素应用函数,返回数值
possibly() purrr capture 出错时返回默认值
reduce() purrr merge 依次合并元素(如多次合并)
walk() purrr foreach 为副作用(如保存文件)应用函数
ES.h() pwr power 示例用途:使用Cohen h近似设计单比例检验
pwr.anova.test() pwr power 示例用途:设计平衡单因素方差分析每组样本量
pwr.f2.test() pwr power 示例用途:计算三个解释变量整体R平方检验功效
pwr.norm.test() pwr power 示例用途:在标准差已知时设计单均值z检验样本量
pwr.p.test() pwr power 示例用途:使用Cohen h近似设计单比例检验
pwr.r.test() pwr power 示例用途:设计检出相关系数的样本量
pwr.t2n.test() pwr power 示例用途:计算独立组样本量不等时的功效
rq() quantreg 分位数回归
rdbwdensity() rddensity rdbwdensity 示例用途:密度断点检验带宽选择
rddensity() rddensity rddensity 示例用途:处理阈值处密度连续性
rdbwselect() rdrobust rdbwselect 示例用途:断点带宽选择:mserd
rdrobust() rdrobust 断点回归
parse_number() readr destring, ignore() 从 $1,200 这样的文本中提取数字
read_csv() readr 读取 CSV 文件
read_delim() readr import delimited 读取任意分隔符的文件
read_tsv() readr import delimited 读取制表符分隔的文件
write_csv() readr 写出 CSV 文件
excel_sheets() readxl import excel, describe Excel 文件的工作表名
read_excel() readxl 读取 Excel 工作表
install_github() remotes 从 GitHub 安装包
find_root() rprojroot setroot 示例用途:依据标记文件定位项目根目录
has_file() rprojroot setroot 示例用途:依据标记文件定位项目根目录
selection() sampleSelection Heckman 样本选择模型
NeweyWest() sandwich newey 示例用途:Newey-West HAC系数推断
vcovBS() sandwich 自助法方差矩阵
vcovCL() sandwich vce(cluster id) 聚类方差矩阵
vcovHC() sandwich vce(robust) 异方差稳健方差矩阵
vcovJK() sandwich 刀切法方差矩阵
st_as_sf() sf spset 示例用途:声明平面点几何及坐标参考系统
as_survey_design() srvyr 声明抽样设计
survey_mean() srvyr 考虑抽样设计的加权均值
survey_prop() srvyr 考虑抽样设计的加权比例
survey_quantile() srvyr epctile 加权分位数
survey_total() srvyr svy: total 加权总和
AIC() stats 赤池信息准则(AIC)
BIC() stats 贝叶斯信息准则(BIC)
Box.test() stats wntestq 示例用途:Ljung-Box 序列相关联合检验
Gamma() stats glm 示例用途:为正值结果拟合伽马对数连接模型
HoltWinters() stats tssmooth 示例用途:简单指数平滑
IQR() stats egen iqr() 四分位距
StructTS() stats sspace 示例用途:局部水平状态空间模型
TukeyHSD() stats pwcompare, mcompare(tukey) Tukey 多重比较
acf() stats corrgram 自相关函数
addmargins() stats tabulate x1 x2 给表格加合计
aggregate() stats collapse 分组统计(base R)
anova() stats anova 方差分析表,或嵌套模型的比较
aov() stats 方差分析
approx() stats ipolate 示例用途:线性插值内部缺失结果值
arima() stats ARIMA 时间序列模型
as.dist() stats mdsmat 示例用途:对给定相异性矩阵进行尺度分析
ave() stats stgen 示例用途:标记生存观察史中曾经暴露的受试者
bartlett.test() stats oneway Bartlett 方差齐性检验
binom.test() stats bitest 精确二项检验
binomial() stats logit 和 probit 模型的二项分布族
cancor() stats canon 示例用途:估计两组变量间的典型相关
ccf() stats xcorr 示例用途:正负滞后的互相关
chisq.test() stats tabulate x1 x2, chi2 卡方检验
cmdscale() stats mds 示例用途:拟合经典度量多维尺度分析
coef() stats 模型系数
complete.cases() stats egen rowmiss() 无缺失值的行
confint() stats regress 系数的置信区间
cooks.distance() stats predict 示例用途:计算Cook影响距离
cor() stats 相关矩阵
cor.test() stats 带显著性检验的相关系数
cov() stats correlate, covariance 协方差
cov2cor() stats estat 示例用途:提取系数估计之间的相关系数
cutree() stats cluster 示例用途:把层次聚类树切分为三组
dbeta() stats betaden 示例用途:计算贝塔分布密度
dbinom() stats binomialp 示例用途:计算二项分布概率质量
dcauchy() stats cauchyden 示例用途:计算柯西分布密度
dchisq() stats chi2den 示例用途:计算卡方分布密度
density() stats kdensity 核密度估计
dexp() stats exponentialden 示例用途:计算指数分布密度
df() stats Fden 示例用途:计算F分布密度
dfbetas() stats dfbeta 示例用途:计算删除观测对指定斜率的标准化影响
dffits() stats predict 示例用途:计算DFFITS影响统计量
dgamma() stats gammaden 示例用途:计算伽马分布密度
dhyper() stats hypergeometricp 示例用途:计算超几何分布概率质量
dist() stats mds 示例用途:拟合经典度量多维尺度分析
dlogis() stats logisticden 示例用途:计算逻辑斯蒂分布密度
dnbinom() stats nbinomialp 示例用途:计算负二项分布概率质量
dnorm() stats normalden() 正态分布密度
dpois() stats poissonp 示例用途:计算泊松分布概率质量
dt() stats tden 示例用途:计算Student t分布密度
dweibull() stats weibullden 示例用途:计算威布尔分布密度
ecdf() stats cumul 经验累积分布
expand.model.frame() stats vce(cluster g) 按拟合模型的观测提取并对齐附加变量
factanal() stats 因子分析
filter() stats tssmooth 示例用途:五期居中移动平均
fisher.test() stats Fisher 精确检验
fitted() stats 模型的拟合值
ftable() stats table 扁平化的多维表
gaussian() stats glm 示例用途:拟合高斯恒等连接广义线性模型
glm() stats 广义线性模型,如 logit 或泊松模型
hatvalues() stats predict 示例用途:计算杠杆值
hclust() stats cluster 示例用途:对标准化变量进行单连接层次聚类
inverse.gaussian() stats glm 示例用途:拟合逆高斯对数连接模型
kmeans() stats K 均值聚类
kruskal.test() stats Kruskal-Wallis 检验
ks.test() stats Kolmogorov-Smirnov 检验
lm() stats 线性回归
logLik() stats e(ll) 模型的对数似然
lowess() stats lowess Lowess 平滑
mad() stats egen mad() 中位数绝对偏差
manova() stats manova 示例用途:使用Pillai检验多变量组间差异
mantelhaen.test() stats mhodds 示例用途:Mantel-Haenszel共同优势比
mcnemar.test() stats mcc 配对比例的 McNemar 检验
median() stats 中位数
model.frame() stats estat 示例用途:汇总实际估计样本中的变量
model.matrix() stats xi 含虚拟变量的设计矩阵
na.omit() stats 删除含缺失值的行
nls() stats nl 非线性最小二乘
nobs() stats e(N) 模型使用的观测数
offset() stats poisson 示例用途:通过暴露量拟合泊松发生率
optim() stats ml 通用最优化
p.adjust() stats test, mtest 多重检验的 p 值校正
pacf() stats pac 示例用途:偏自相关函数
pairwise.t.test() stats pwmean 带校正 p 值的两两 t 检验
pbeta() stats ibeta 示例用途:计算贝塔分布累积概率
pbinom() stats binomial 示例用途:计算二项分布含边界下尾概率
pcauchy() stats cauchy 示例用途:计算柯西分布累积概率
pchisq() stats chi2tail() 卡方分布概率
pexp() stats exponential 示例用途:计算指数分布累积概率
pf() stats F 示例用途:计算F分布累积概率
pgamma() stats gammap 示例用途:计算伽马分布累积概率
phyper() stats hypergeometric 示例用途:计算超几何分布含边界下尾概率
plogis() stats predictnl 示例用途:对预测作非线性变换并计算Delta方法标准误
pnbinom() stats nbinomial 示例用途:计算负二项分布含边界下尾概率
pnorm() stats normal() 正态分布累积概率
poisson() stats glm 示例用途:拟合泊松对数连接广义线性模型
poisson.test() stats stir 示例用途:比较两组发生率
poly() stats 模型中的多项式项
power.prop.test() stats power 示例用途:设计两个独立比例检验的样本量
power.t.test() stats power twomeans t 检验的功效和样本量
ppoints() stats quantile 示例用途:绘制有序观测与累计比例的关系
ppois() stats poisson 示例用途:计算泊松分布含边界下尾概率
prcomp() stats 主成分分析
predict() stats 模型的预测值
princomp() stats pcamat 示例用途:直接根据相关矩阵执行主成分分析
promax() stats rotate 示例用途:使用promax旋转因子载荷
prop.test() stats 比例检验
prop.trend.test() stats nptrend 示例用途:检验比例的有序趋势
pt() stats ttail() t 分布概率
ptukey() stats tukeyprob 示例用途:计算学生化极差累积概率
pweibull() stats weibull 示例用途:计算威布尔分布累积概率
qbeta() stats invibeta 示例用途:计算贝塔分布第90百分位数
qcauchy() stats invcauchy 示例用途:计算柯西分布第90百分位数
qchisq() stats qchi 示例用途:比较样本分位数与卡方分位数
qexp() stats invexponential 示例用途:计算指数分布第90百分位数
qf() stats invF 示例用途:计算F分布第90百分位数
qgamma() stats invgammap 示例用途:计算伽马分布第90百分位数
qlogis() stats invlogistic 示例用途:计算逻辑斯蒂分布第90百分位数
qnorm() stats invnormal() 正态分布分位数
qqplot() stats qqplot 示例用途:使用 Q-Q 图比较两个经验分布
qt() stats invt 示例用途:计算Student t分布第90百分位数
qtukey() stats invtukeyprob 示例用途:计算Tukey多重比较临界值
quantile() stats pctile 分位数
quasibinomial() stats 适用于抽样权重的二项分布族
quasipoisson() stats svy 示例用途:调查Poisson均值模型
qweibull() stats invweibull 示例用途:计算威布尔分布第90百分位数
rbeta() stats rbeta 示例用途:模拟贝塔随机变量
rbinom() stats rbinomial() 二项分布随机数
rcauchy() stats rcauchy 示例用途:模拟柯西随机变量
rchisq() stats rchi2 示例用途:模拟卡方随机变量
relevel() stats 指定因子的参照类别
reshape() stats icc 示例用途:估计单向模型单次测量组内相关
residuals() stats predict, residuals 模型残差
rexp() stats rexponential 示例用途:模拟指数随机变量
rgamma() stats rgamma 示例用途:模拟伽马随机变量
rhyper() stats rhypergeometric 示例用途:模拟超几何随机变量
rlogis() stats rlogistic 示例用途:模拟逻辑斯蒂随机变量
rnbinom() stats rnbinomial 示例用途:模拟负二项随机变量
rnorm() stats 正态分布随机数
rpois() stats rpoisson 示例用途:模拟泊松随机变量
rstandard() stats predict 示例用途:计算内部标准化残差
rstudent() stats predict 示例用途:计算外部学生化残差
rt() stats rt 示例用途:模拟t随机变量
runif() stats 均匀分布随机数
runmed() stats tssmooth 示例用途:滑动中位数非线性平滑
rweibull() stats rweibull 示例用途:模拟威布尔随机变量
sd() stats 标准差
setNames() stats labmask 示例用途:将已有文本值设为数值标签
shapiro.test() stats Shapiro-Wilk 正态性检验
sigma() stats estat 示例用途:随机截距组内相关
spectrum() stats pergram 示例用途:原始周期图
step() stats stepwise 逐步回归选择
t.test() stats t 检验和均值的置信区间
ts() stats tsset 时间序列对象
uniroot() stats ciwidth 示例用途:按目标均值区间宽度设计样本量
update() stats regress 修改后重新拟合模型
var() stats summarize, detail 方差
var.test() stats sdtest 方差相等的 F 检验
varimax() stats rotate 示例用途:使用varimax旋转因子载荷
vcov() stats 模型的方差协方差矩阵
weighted.mean() stats summarize [aweight = w] 加权平均
wilcox.test() stats Wilcoxon 秩和检验或符号秩检验
xtabs() stats tabulate x1 x2 用公式生成交叉表
stri_reverse() stringi ustrreverse 示例用途:反转 Unicode 码点顺序
stri_trans_nfc() stringi ustrnormalize 示例用途:规范化 Unicode 规范等价文本
stri_trans_nfkc() stringi ustrnormalize 示例用途:规范化 Unicode 兼容字符
fixed() stringr 按字面匹配文本,而非正则表达式
regex() stringr 带 ignore_case 等选项的正则表达式
str_c() stringr generate s = a + b 连接字符串
str_count() stringr 统计字符串中的匹配次数
str_detect() stringr 字符串是否包含某个模式
str_dup() stringr "-" * 10 重复字符串
str_ends() stringr substr() 字符串是否以某模式结尾
str_extract() stringr 提取匹配的文本
str_extract_all() stringr ustrregexs() 提取所有匹配
str_flatten() stringr levelsof, separate() 把向量合并成一个字符串
str_glue() stringr display "`x'" 填充文本模板
str_length() stringr 字符个数
str_locate() stringr strpos() 匹配的位置
str_match() stringr regexs() 提取正则表达式的分组
str_pad() stringr string(x, "%05.0f") 把字符串填充到固定宽度
str_remove() stringr subinstr() 删除第一个匹配
str_remove_all() stringr subinstr() 删除所有匹配
str_replace() stringr 替换第一个匹配
str_replace_all() stringr 替换所有匹配
str_split() stringr split 把字符串拆分成多个部分
str_squish() stringr 去掉首尾空格并合并连续空格
str_starts() stringr substr() 字符串是否以某模式开头
str_sub() stringr 按位置截取字符串
str_subset() stringr keep if regexm() 保留匹配的字符串
str_to_lower() stringr 转为小写
str_to_sentence() stringr strproper() 句首字母大写
str_to_title() stringr 首字母大写
str_to_upper() stringr 转为大写
str_trim() stringr 去掉首尾空格
str_trunc() stringr abbrev() 把字符串截短到指定宽度
str_wrap() stringr display 把文本按宽度换行
word() stringr 从句子中提取词
as.svrepdesign() survey svyset 示例用途:分层删除一组Jackknife重复权重
cv() survey estat 示例用途:调查均值变异系数
deff() survey estat 示例用途:调查均值设计效应
degf() survey svydescribe 示例用途:调查设计自由度和抽样单元数
postStratify() survey svyset 示例用途:按总体分类总量后分层调查权重
rake() survey svyset 示例用途:按已知分类边际校准样本权重
svyby() survey svy 示例用途:分域均值
svychisq() survey svy 示例用途:设计校正分类关联检验:F
svyciprop() survey svy 示例用途:调查比例置信区间方法:logit
svydesign() survey svyset 声明抽样设计(survey 包)
svyglm() survey 考虑抽样设计的回归
svymean() survey svy: mean 加权均值(survey 包)
svyratio() survey svy 示例用途:调查总体总量比
svytable() survey svy: tabulate 加权频数表
svytotal() survey svy 示例用途:调查加权总体总量
Surv() survival 模型中的生存时间结局变量
basehaz() survival predict 示例用途:零协变量处基线累积风险
clogit() survival 条件 logit 模型
concordance() survival estat 示例用途:Cox回归后删失结局一致性
cox.zph() survival estat 示例用途:Cox比例风险诊断
coxph() survival Cox 比例风险模型
finegray() survival stcrreg 示例用途:Fine-Gray亚分布风险流程
frailty() survival stcox 示例用途:共享Gamma脆弱性Cox模型
strata() survival 生存模型公式中的分层项
survSplit() survival stsplit 示例用途:在固定切点拆分风险区间
survdiff() survival Log-rank 检验
survfit() survival Kaplan-Meier 生存曲线
survreg() survival 参数生存模型
add_row() tibble set obs 给数据添加行
as_tibble() tibble 转为 tibble
rownames_to_column() tibble xpose 把行名转为一列
tibble() tibble 创建数据框(tibble)
tribble() tibble input 按行手动输入小表格
complete() tidyr 补齐缺失的取值组合
crossing() tidyr cross 排序并去重的所有组合
drop_na() tidyr drop if missing(x) 删除含缺失值的行
expand() tidyr fillin 取值的所有组合(删除其他列)
expand_grid() tidyr cross 给定取值的所有组合
fill() tidyr 用上一个或下一个值填充缺失值
full_seq() tidyr tsfill 完整的取值序列
nest() tidyr by 把每组嵌套为列表列中的一行
pivot_longer() tidyr 宽数据转为长数据
pivot_wider() tidyr 长数据转为宽数据
replace_na() tidyr replace x = 0 if missing(x) 替换缺失值
separate_longer_delim() tidyr split 把文本拆分成多行
separate_wider_delim() tidyr 把一个文本列拆分成多列
separate_wider_position() tidyr substr() 按位置把文本拆分成多列
uncount() tidyr 把每行重复指定次数
unite() tidyr egen concat() 把多列合并为一列
unnest() tidyr expand 把列表列展开为行
as_character() tidystata decode decode() 的别名
as_dummy() tidystata 为每个类别生成虚拟变量
as_numeric() tidystata destring destring() 的别名
assert() tidystata 条件不成立时报错,并报告不成立的行数
browse() tidystata 在表格窗口中查看数据
capture() tidystata 成功时返回结果,出错时显示失败消息并返回 NULL;quiet 抑制警告和消息
codebook() tidystata 描述每个变量:类型、标签、个数和取值
corr() tidystata 完整个案 Pearson 相关系数
cut_quantile() tidystata xtile xtile() 的别名
decode() tidystata 转为文本,带标签的数据使用数值标签
destring() tidystata 转为数值,并去掉数值标签
ds() tidystata 列出变量名
duplicates_drop() tidystata 删除重复行,保留第一行
duplicates_list() tidystata 列出重复行
duplicates_report() tidystata 统计重复行
duplicates_tag() tidystata 标记重复行
findit() tidystata 查找 Stata 命令对应的 R 函数
fre() tidystata 带合计行的频数表
fre2() tidystata tabulate 带行合计和列合计的交叉表
is_first() tidystata 标记每组的第一行
isid() tidystata 检查变量能否唯一识别每一行
misstable() tidystata 每个变量的缺失值,或缺失值模式
mvdecode() tidystata 把指定代码改为缺失值
mvencode() tidystata 把缺失值替换为指定代码
na_if_value() tidystata mvdecode mvdecode() 的别名
pc() tidystata 占总和的百分比
pct() tidystata egen pc() pc() 的别名
print_all() tidystata 打印所有行和列
pwcorr() tidystata 两两相关系数,附样本数和 p 值
row_max() tidystata 逐行求多个变量的最大值
row_mean() tidystata 逐行求多个变量的均值
row_median() tidystata 逐行求多个变量的中位数
row_min() tidystata 逐行求多个变量的最小值
row_miss() tidystata 逐行计算缺失值个数
row_non_miss() tidystata 逐行计算非缺失值个数
row_nvals() tidystata 每行不同取值的个数,忽略缺失值
row_sd() tidystata 逐行求多个变量的标准差
row_sum() tidystata 逐行求多个变量的和
row_unique() tidystata egen rownvals() 每行不同取值的个数,缺失值算作一个取值
set_seed() tidystata 设定随机数种子,可单独使用或放在管道末尾
stata_diff() tidystata 与上一期的差分(考虑时间间隔)
stata_lag() tidystata 前若干期的值(考虑时间间隔)
stata_lead() tidystata 后若干期的值(考虑时间间隔)
stata_merge() tidystata 合并两个数据并报告匹配结果,类似 Stata 的 merge
std() tidystata 标准化为均值 0、标准差 1
summ() tidystata 变量的描述统计
tab() tidystata 频数表
tab1() tidystata 每个变量一张频数表
tab2() tidystata 两个变量的交叉表,或每一对变量的交叉表
tab_gen() tidystata tabulate, generate() as_dummy() 的别名
tabstat() tidystata 变量的指定统计量,可分组
timer() tidystata 计算代码运行时间
tostring() tidystata 转换为文本,保留数值代码而不是数值标签
value_if_na() tidystata mvencode mvencode() 的别名
variables() tidystata 列出变量及其类型和标签
variables_search() tidystata 按变量名或标签查找变量
varlist() tidystata 用 x* 等 Stata 通配符选择变量
xtile() tidystata 按分位数分组,与 Stata 的 xtile 一致
md5sum() tools checksum 示例用途:计算文件完整性摘要
garch() tseries arch 示例用途:ARCH(1)条件方差模型
as_tsibble() tsibble 声明时间序列或面板数据
fill_gaps() tsibble 补齐缺失的时间点
yearmonth() tsibble 月度时期
yearquarter() tsibble 季度时期
ca.jo() urca vecrank 示例用途:Johansen trace秩检验:const确定项
cajorls() urca vec 示例用途:秩一向量误差修正模型
ur.df() urca dfuller 示例用途:ADF单位根检验:none,0阶增广滞后
ur.ers() urca dfgls 示例用途:DF-GLS单位根检验:constant
ur.pp() urca pperron 示例用途:Phillips-Perron Z-tau检验:constant
View() utils browse 打开数据查看器
capture.output() utils dataex 示例用途:为小型数据示例生成可复现 R 代码
combn() utils tab2 示例用途:生成各变量对的列联表
data() utils 载入内置的示例数据
getAnywhere() utils 查找函数定义在哪里
glob2rx() utils 把通配符模式转为正则表达式
head() utils 前几行
help() utils 打开帮助页面
help.search() utils 搜索所有已安装的帮助文档
install.packages() utils 从 CRAN 安装包
object.size() utils memory 示例用途:测量一个 R 数据表占用的内存
packageVersion() utils ftools 示例用途:查看 R 数据操作包版本与可用性
read.csv() utils import delimited 读取 CSV 文件(base R)
read.delim() utils import 示例用途:导入制表符分隔数据
read.fwf() utils infix 示例用途:读取相邻定宽数值字段
read.table() utils infile 示例用途:导入空白分隔的数值字段
sessionInfo() utils about 示例用途:查看 R 版本与平台信息
str() utils 简要显示对象的结构
tail() utils 最后几行
unzip() utils unzipfile 示例用途:将 ZIP 包解压到指定临时文件夹
update.packages() utils 更新已安装的包
write.csv() utils export delimited 写出 CSV 文件(base R)
write.table() utils outfile 示例用途:导出纯数值字段并使用 Stata 缺失文本
write_xlsx() writexl 写出 Excel 文件
zipr() zip zipfile 示例用途:创建含文本文件的 ZIP 压缩包
na.locf() zoo stfill 示例用途:在生存分析受试者内向前携带已观察协变量
rollapply() zoo rolling 示例用途:滚动窗口回归系数