stata学习笔记

数据管理
创建一个新数据
edit //在打开的数据表中创建变量和数据
input x1 x2 ……
set obs 10
gen x1=_n
gen x2=seq()
egen x3=seq(),b(5) t(5)
egen x4=fill(3 4 3 4)
rename x1 pop //将变量var1改名为pop
rename x2 place
max C=(1,0.8\0.8,1)
drawnorm x1 x2 ,means(1,10) sds(0.3,2) corr(C) n(500)
gen x1=invnormal(uniform())
gen roll=1+trunc(uniform()*6) 随机产生1-6随机数字
gen x=exp(uniform())
gen x=-3ln(uniform())
gen x=(invnorm(uniform()))^2 卡方分布
gen x=invttail(df,uniform()) t分布
gen x=invFtail(df1,df2,uniform()) F分布
sample 10,count
label variable pop "population in 1000s,1995" //为变量pop添加标签
label define sex_label 1 "male" 2 "female"
label values sex sex_label //为变量sex添加值标签
save aaa //保持为aaa.dta文件
save,replace
合并数据
use a.dat
append using b.dat

use a.dat
sort place
save,replace
use b.dat
sort place
merge place using a.dat
reshape long grow,i(id) j(year)
reshppe wide grow,i(id) j(year)
clear
cd f:\统计数据\stata
use aaa
sort pop //以变量pop排序
order place pop //将变量place pop分别放在第一、二位置
describle //描述变量信息
list //显示变量和变量值
list ,sep(3) 以每3行分隔显示
list,sepby(var) 以var变量为界显示
summarize x //显示变量的基本信息,可加上“,d”显示详细信息
by var1 var2,sort:su x (by可用于su ci centile等)
tabstat x,stats(mean median sd var skewness kurtosis cv semean p2 iqr)
collapse (sum) var1 var2 (sd)var3 (mean) newvar1=var4 (median) newvar2=var5

定义变量的子集(if 和in的使用)
list pop place sex in 1/50
sort pop
list pop place in -4/1 //显示pop值最大的四个观察值
summarize if pop<1000
summarize if place !="china"
summarize pop place sex if pop>100 & pop<1000
summarize place sex if pop<100 | pop>1000
summarize place if pop< . //缺失值比任何数值都大
drop pop if place=="china"
keep

创建和替代变量
1、use canada1,clear
generate gap=flife-mlife
label variable gap "flife-mlife gap life"
format gap %4.1f //固定了宽度4,小数部分1
其他%4.1g(宽度4,小数部分至少为1,可以小数或科学计数法显示) 、%4.1e
format仅改变显示不影响计算
use canada1,clear
generate type=1
replace type=2 if place=="canada"
replace type=3 if place=="Yukou"
运算符
+ - * / ^ mod(x,y)
使用函数
abs()
acos() //di acos(0.5)*180/_pi
sin cos asin atan atan2() y/x的反正切函数
sqrt log()==ln() log10 exp
ceil(x) >x的最小整数
floor(x) round(x) 四舍五入
comb() lnfactorial()
分布函数
ttail(df,t) t>t0.05的概率(单侧)
invttail(df,p) 根据概率计算t值,p为右侧概率
F(df1,df2,f) 左侧概

率 invF(n1,n2,p)
Ftail(df1,df2,f) 右侧概率 invFtail(n1,n2,p)
chi2(df,x) 左侧概率
chi2tail(df,x) 右侧概率
binomial(n,x,p) n次试验中出现x次及更小的概率
1-binomial(n,x-1,p)
normal(z) 标准正态分布左侧累计概率
日期函数
(1)假设有数值变量a格式为20100312
gen str str_a=string(a,"%10.0f") //转换a为字符变量
gen date_a=date(str_a,"YMD") //转换str_a为日期变量,返回值为当前日期-1960年1月1
日的数值
format date_a %td //转换date_a的格式为日期12May2010
假设有数值变量a格式为20100312101205
gen str str_a=string(a,"%16.0f")
gen double date_a=clock(str_a,"YMDhms")
format date_a %tc
假设有三个数值变量m、d、y分别表示月、日、年
gen date_a=mdy(m,d,y)
egen
egen x=seq(),b(3) t(2) 111222111222
egen x=fill(100,98) 100 98 96 94
egne x=fill(0,2,7,0,2,7)
egen x=rowmean(x1,x2,x3) 产生新变量,其值为x1x2x3各行的均值
egen x=rowsum(x1,x2,x3) 产生新变量,其值为x1x2x3各行的和
egen x=std(a)
for num 1/15 :egen xX=std(aX)
egen xrank=rank(x)
10、其他函数
recode group encode
gen x1=recode(age,24,28,32,~) //<=24 <=28
egen x2=group(x1)
encode strvar,gen(numvar) 将字符变量转为数值变量
decode numvar,gen(strvar)

创建新的分类变量和定序变量
假设有分类变量(byte)type(1-3)
tab type
tab type,gen(type) //产生type1-3三个哑变量
2、将数值变量
gen x1=recode(age,24,28,32,~) //以<=24 <=28~分组
egen x2=group(x1)
变量下标
di x[4]
gen a=x-x[_n-1] //x与其前一个数值的差
gen b=x-x[_n+1]
从外部ascII文件导入数据
以空格分隔,字符串需带引号
infile str30 place ulife tlife using aaa.raw //产生三个变量,place为30长度的字符变量
compress //压缩place变量为最长的字符
以tab或“,”分隔
insheet place ulife tlife using aaa.raw,comma(or tab) names
固定栏宽
infix year 1-4 wood 5-8 water 9-10 using aaa.raw
绘图
hist x,bin(10) xlabel(0(2)10) ylabel(100(100)1000) xtick(1(2)11) norm fraction
hist x,start(50 width(5) freq by(group,total)
graph twoway scatter y x || line y x ||lfit y x,mlabel(id) msymbol(oh/x)
graph twoway scatter y x||lfitci,stdf
graph matrix x y z
graph twoway line y x year
graph twoway line y year ,yaxis(1)|| x year ,yaxis(2)
graph twoway area y x year
graph box x y z,over(group) yline(6.35)
graph pie x y z,by(group) pie(3,explode)
graph bar (mean)x y z,over(group)
grapg dot (median) x1 x2,over(group) marker(1,msymbol(oh)) marker(2,msymbol(x))
qnorm x,grid
pnorm x,grid
交叉表
tab a b,sum(x) mean
tab a b,all tabi a b\ c d,all tab a b [fw=count],all
tab1 a b c 分布绘制abc的一维表
tab2 a b c 建立所有可能的二维表
by c,sort:tab a b,all 以c的不同取值分别绘制a b的二维表
table row col col1,by(row1) 绘制多维表
sktest x swilk sfrancia
正态性检验及

数据变换
sktest x swilk sfrancia
立方 严重负偏态
平方 轻度负偏态
平方根 轻度正偏态
对数 正偏态
平方根负倒数 严重正偏态
倒数 非常严重正偏态
平方倒数 同上
立方倒数 同上
ladder x //产生以上8种变换后的正态性检验
gladder x //针对ladder结果绘制直方图
bcskews newx=x //产生新变量newx,是对x的变换
方差齐性检验
sdtest x1=x2
sdtest x1,by(group)
robvar x,by(group) levene检验,返回值
W0:均数 W50:中位数 W10:trim10%后的均数
方差分析
单个样本
ttest x=10 signtest x=10 二项分布
ttest x1=x2 signrank x1=x2 wilcoxon符号检验
ttest x,by(group) ranksum x,by(group) wilcoxon检验
ttest x1=x2,unpaired unequal
bitest x==p
bitesti n k p
单因素方差分析
oneway x group,tabluate scheffe bonferroni sidak kwallis x,by(group)
多因素方差分析
anova x a##b
test 1.a=2.a
test 2.b=3.b
bonferonni: r(p)*c c:比较次数,组数X(组数-1)/2
scheffe:1-F(组数-1,误差自由度,r(F)/(组数-1,))
regress
predict newvar 预测值
predict newvar,stdp 预测值标准误
anova x a b|a
anova x a / id|a b a#b
anova x a b c.age
相关分析(by var:)
cor x y
pwcorr x y,bonferrior/sidak
spearman x y,bonferrior/sidak
pcorr y x1-x3 去除其他x的影响后y与x的偏相关系数
回归分析
基本方法
reg y x1 x2 x3 ,beta uncons
预测值
predict newvar,cooksd hat covratio dfits residuals rstudent rstandard stdp stdf
hat>2p/n 发现高杠杆值
dfits>2sqrt(p/n) 案例的自变量组合对回归直线的影响力
cooksd>4/n 同上
welsch>3sqrt(p) 同上
covratio: |r-1|>=3p/n
rvfplot,yline(0)
假设检验
reg y x*
test x1 x2 x1 和x2回归系数同时为0
test x1=x2
虚拟变量
tab region ,gen(reg) //产生reg1-4四个哑变量
reg cmat reg2 //reg2与其他3个地区的比较
reg cmat reg1 reg2 reg3 reg4 == xi:reg cmat i.region
此方法便于做交互分析
char region[omit]4 (与xi共同使用)
xi:reg camt i.region
逐步回归
sw reg y x1-x4,pr(0.06) pe(0.05)
sw reg y x1 x2 (x3 x4),lockterm1 pr(0.06)
面板数据
iis region
tis year
xtreg y x1 x2,re
xtmixed y 固定变量 || school:随机变量
回归诊断
estate ic 返回Aic Bic ll(null) ll(model)值(log likelihood对数似然值)
quietly reg y x1-x5
estimates store full
quietly reg y x1-x4
lrtest full
ovtest p<0.05提示有二次、三次或四次方项目需要添加
hettest p<0.05提示方差不齐,误差散点图不是随机分布的
dwstat 一价自相关的durbin-watson检验
vif 自变量共线性检查
vif>10 平均vif>1 有问题
宽容度(vif的倒数)表示该变量独立程度,越大则越独立
rvfplot 预测值与残差值的散点图
rvpplot x 某一个自变量x与残差的散点


avplot x 去除其他变量影响后的x与y的线性关系,x轴上偏离的数值多为高杠杆值
avplots
acprplot x,lowess 虚线在中间部分与直线不重和表示可能x与y存在其他非线性关系,
另外可以报告与x具有线性关系的其他自变量
lvr2plot 注意拟合不好且具有较高杠杆作用的值可能是高杠杆值
hat 较大值提示高杠杆值
dfits cooksd covratio 提示对y影响较大的值
logistic回归
logit y x* logit y x*,or
blogit y n x*
lroc
roctab y x,graph
roccomp y x1 x2 比较y与x1的roc曲线和y与x2的是否相同
rocgold y x x1 x2 比较y与x(金标准)的roc曲线和y与x1的是否相同
lsens,genprob(prob) gensens(sens) genspec(spec)
lstat
lfit,group(10) est gof,group(10)
predict phat,hat deviance ddeviance dbet dx2 dbeta
clogit y x*,group(matchvar)
ologit y x*
mlogit y x*,b(1) mlogit y x*,rrr
constraint define 1 [3]x=2[2]x
constranit define 2 [4]x=3[2]x
mlogit y x,c(1 2) b(1)
多元方差分析
hotelling x*
hotelling x*,by(group)
manova x1 x2 x3=g b g*b

广义线性模型
glm y x1 x2 ,family(Gaussian) link(identity) */正态分布线性回归
glm y x1 x2,family(binomial) link(logit) */logistics回归
glm y x1 x2,family(poisson) link(log) lnoffset(暴露人年变量)
poisson y x1 x2,exposure(暴露人年变量)
poisgof [,pearson]
glm y x1 x2,family(nbinomial) link(log)
nbreg y x1 x2
gnbreg y x1 x2 ,lnalpha(var)
predict

主成份分析
pca x*
screeplot
因子分析
factor x*,pcf mine(0.5) 主成份法
factor x*,ml mine(0.5) 最大似然法
factor x*,ipf //迭代主因子法
rotate 方差极大旋转
rotate,promax 斜交法
生存分析
stset time,failure(outcome)
stsum,by(treat)
stci,rmean by(treat)
sts list,by(treat)
sts graph,by(treat) lost
sts graph,by(treat) gwood
sts test group
streg treat group,nohr dist(exponential/weibull)
predict new_var if treat==1,surv
stcox treat group,nohr
cox result treat group,dead(outcome) nohr
sw cox result treat group,dead(outcome) nohr
流行病
队列研究
ir case exposure time(人年数)
iri a b n1 n2
cs case exposure [freq=count]
csi a b c d,by(group)
可使用tb和exact(默认)计算rr可信区间,不能使用woolf
病例对照研究
cc case expose,by(group)
cci a b c d
mcc case control
mcci a b c d
可使用exact(默认)、woolf、 cornfield计算rr可信区间
tabodds modds不如用logistic、cox比例风险模型



相关文档
最新文档