Quantcast
Channel: stata培训 –数据分析
Viewing all 94 articles
Browse latest View live

stata面板数据协整检验_面板数据协整检验

$
0
0

stata面板数据协整检验

关键词: stata面板协整检验,面板数据协整检验,面板数据的协整检验,stata面板数据协整

stata中用vecrank进行协整检验是出现“the sample has gaps”是什么意思,应该怎么办?


if you want to do the panel conintegration test in stata, please try the xtwest command in stata. you can try findit xtwest in stata command. by the way , you need to know the fundermental knowledge about panel cointegration, such as pedroni paper, peseran papers, good luck man!


stata中做面板协整检验现有的命令貌似只有xtwest,不过Kao的DF和ADF面板协整检验的检验统计量都非常好构造,可以自己算出统计量的值;另外,johans命令也可以用于面板数据,只不过他是按个体单独计算的,而Fisher(combined Johansen)面板协整检验统计量的值刚好是用不同个体协整检验的P值构成的,所以用Fisher(combined Johansen)也是很简单的。


如果基于单位根检验的结果发现变量之间是同阶单整的,那么我们可以进行协整检验。但也有如下的宽限说法:如果变量个数多于两个,即解释变量个数多于一个,被解释变量的单整阶数不能高于任何一个解释变量的单整阶数。另当解释变量的单整阶数高于被解释变量的单整阶数时,则必须至少有两个解释变量的单整阶数高于被解释变量的单整阶数。如果只含有两个解释变量,则两个变量的单整阶数应该相同。
在Stata中对面板数据进行协整检验的命令是xtwest,这个程序也是需要我们自己下载安装的。
输入命令:search xtwest,net
然后按提示安装。也可直接输入:ssc install xtwest,自动完成安装。
另外一个协整命令:nharvey,也是需要安装的。
在开始进行协整检验之前,需要将面板数据转化为时间序列,使用以下命令:
tsset province year
协整的命令为:
xtwest depvar varlist [if exp] [in range] , lags(# [#]) leads(# [#])
lrwindow(#) [constant trend bootstrap(#) westerlund noisily mg]
例:
1、xtwest lntfp lnx,lags(1)
2、xtwest loghex loggdp, constant trend lags(1) leads(1) lrwindow(3)

转载请注明:数据分析 » stata面板数据协整检验_面板数据协整检验


用stata异方差检验时间序列数据和,stata自相关检验

$
0
0

stata异方差检验时间序列数据和,stata自相关检验

关键词:stata异方差检验,stata自相关检验,stata异方差检验命令,stata面板自相关检验,stata怎么检验异方差

一般来讲,时间序列数据较少出现异方差现象,更多地是序列相关问题。

用stata软件实现异方差的检验,最直观的是用图示法。作出残差关于某一解释变量的散点图,具体的命令如下:

reg 被解释变量名 解释变量名

prrdict e, resid

graph twoway scatter e 解释变量名

此外,还有white检验、G-Q检验和Breuch-Pagan LM检验。white检验不是stata官方的命令,需要单独下载补丁,G-Q检验则需要对变量有较多的先验认识。我重点介绍一下B-P LM检验在stata中的实现:

在执行完回归指令regress以后,用 hettest 变量名   这个命令就能实现。其中变量名只包括除常数项以外的所有解释变量名称。你可以逐个命令进行操作,也可以用批处理的方式来实现。至于检验的原理不用在这里说了吧?不太明白的话建议查查书。

序列相关性的检验

1、D-W检验

reg y x1 x2 x3

estat dwatson

(y为被解释变量 x为解释变量,执行上述命令便可得到D-W值,不过该检验存在无法判断的盲区且只能对一阶自相关进行检验)

2、Box and Pierce’s Q 检验

reg y x1 x2 x3

predict e, resid

wntestq e, lags(n)

(n为滞后阶数,可以由少及多尝试几次)


我补一下,

D.W 可以作为对自相关检验, 但它只是检测一阶滞后量有无自相关,在时间序列中  只检测变量一阶滞后的自相关性远远不够,

因此, 我们可以用:Breusch-Godfrey检验, 检测多阶滞后量的自相关

在STATA中, 我们可以用:estat bgodfrey 语句,在回归后, 检测误差项的自相关。


另外,

时间序列数据中  出现异方差的概率不是很高。(至于原因,去查伍德里奇的书)

所以你在处理时间序列数据的时候  应该不是先考虑异方差性, 而是变量的自相关性,

就是先要对数据进行诊断测试。

看他们是不是平稳序列。 如果不是平稳序列的话, 那你还有很多事情要做。

比如,如果数据不是平稳序列, 你可以取变量的一阶差分来进行回归。

在这里不多描述了,网页上不能用公式,所以描述出来怕出错误。


补充:

在Stata中,也可用官方命令进行异方差的White检验,命令如下:

reg y x1 x2

estat imtest,white

转载请注明:数据分析 » 用stata异方差检验时间序列数据和,stata自相关检验

Stata基本操作汇总_时间序列专项_stata时间序列回归

$
0
0

Stata基本操作汇总—时间序列专项

关键词:stata时间序列回归 stata序列号 stata 时间序列分析

上周有幸在课堂上老师让我给同学讲些时间序列的基本问题,方法和操作,自己花了一周的时间做了一份ppt,并同时用Eviews和Stata两种软件进行了演示,因此这周和大家的分享的是我的这份课件。
下面是我的课程框架:
一、平稳性
1.概念的重新认识
(1)定义
(2)理解上的误区
2.平稳性检验
(1)介绍主流的平稳性检验方法
(2)在软件使用上操作的误区
二、协整理论
1.概念的再认识
(1)定义
(2)理解上的误区
2.协整检验的主流方法
三、VAR族模型(拟用高铁梅老师数据)
1.VAR和VEC的区别
2.VAR和VEC分析的流程图
3.协整理论下的VAR模型(VAR模型主流使用方法)
4.SVAR模型的操作方法

为了能让大家清楚了解我ppt里的所有图表和结论,我做了一份较为详细的do文档和相关的dta数据,里面VAR的例子我采用的是高铁梅老师在2004年在管理世界上的一篇论文。如果大家想学好这个方法,可以自己看下我的do文档。当然,由于自己能力有限,可能存在很多错误的地方,也请大家多多批评指正!

Stata基本操作汇总_时间序列专项_stata时间序列回归 时间序列.rar (259.23 KB)
Stata基本操作汇总_时间序列专项_stata时间序列回归 Stata.rar (1.27 MB)

免费帮你下载,qq:3285157825

转载请注明:数据分析 » Stata基本操作汇总_时间序列专项_stata时间序列回归

将Excel文件数据导入STATA的方法之比较

$
0
0

将Excel文件数据导入STATA的方法之比较

关键词:怎么把excel导入stata 如何将excel导入stata

这一点可能也是大家在实证研究中遇到的最常见的问题,一般找来的数据都是excel文件,但是要做计量肯定要导入到STATA中去。可能大多数菜鸟最常见的办法就是直接复制粘贴了,简单明了,不需要任何技术,但潜在的问题是如果数据比较多,拉框选择还是一件很麻烦的事情,有些数据在excel中可能是显示小数点后两位,但实际储存的并不止这么多。如果是复制粘贴了,可能只粘贴过去小数点后两位,这样就损失了一部分精度。因此我不太推崇这种方法,就我的经验来看,直接调用STATA的内部数据导入命令会更好,起码不会丧失精度。STATA数据导入的命令有以下几种,下面分别加以评析:
1.insheet using filename, [option]
这个命令是专门用来导入像excel之类的以电子表格形式存储的数据。在导入之前,首先要把excel文件转存为STATA可以识别的格式。其中我最常用的就是另存为csv逗号分隔符格式。当然一个xls文件中会包含多个sheet,但csv只能保存一个sheet,在另存时excel会提示你是否只另存当前sheet,并且有些功能会丧失掉,不管么多,毕竟csv只是一个中介,直接点确定就行了。当然你在保存csv时最好让变量名位于第一行,这样STATA就好识别了。然后在STATA中使用insheet读取csv文件,在option中指定为comma告诉STATA你读取的是csv文件。这种方法有个不足在于如果你的数据中包含中文而且里面含有逗号时,stata是无法区别这些逗号是数据中的逗号还是csv文件自己生成的逗号,因而会出现同一个变量的数据被拆散到两个变量的存储空间中。解决的办法是不要用逗号标示分隔符了,在excel中另存为txt(制表符分隔),这样就不会与逗号相混淆了。然后再在insheet命令中在option里指定是tab,就完事了。
2.infile using filename
这个infile命令分两类,一种是处理固定格式(fixed format)的txt或raw,另一种是处理自由格式(free format),两类文件的命令语法不太相同,适用的类型也有所不同,当然你在用这个命令里还需要定义一个dictionary,这个dictionary是用来描述数据的组织方式的,需要自己根据要导入的数据文件自己编写代码,然后嵌套到数据文件txt的前面去,或者是单独地存为一个dct文件,并且告诉STATA你要导入的数据在保存在哪里。由于使用起来的学习成本比较高,用得也比较少。在此就不详解了,有需要的请自行help infile。
3.xmluse
这个命令首先要把xls文件另存为xml格式,然后用xmluse命令去读取,当然在读取时你也要在option中声明你的xml文件是excel保存的而不是STATA保存的,这样就不会弄错。这个命令相比于前面的insheet的一大好处在于你不必为xls中的每个sheet单独另存为一个文件,而只需要整体另存一个xml格式就行了,在用xmluse时在option中告诉STATA从哪个sheet中的哪些cell中读取数据就行了。但是经本人的经验发现如果你的xls文件中如果有汉字的话,STATA读取后对应的变量会出现乱码,这一点用insheet就不会有这个问题。
4.odbc
这个命令是专门读取数据库文件的,并且支持SQL命令,这样如果你的数据比较多的话,可以先用SQL语句进行筛选,然后而导入。当然这个命令也能导向excel文件,只是本人目前还没用过,在此也不详解了。


再补充一下,Stata12可以用import excel命令直接导入。Stata13中insheet已经被import delimited取代:“ insheet has been superseded by import delimited.  insheet continues to work but, as of Stata 13, is no longer an official part of Stata.”

转载请注明:数据分析 » 将Excel文件数据导入STATA的方法之比较

stata中hausman检验结果怎么处理_stata hausman检验

$
0
0

stata中hausman检验结果怎么处理

关键词:stata hausman检验 stata中hausman检验 stata做hausman检验 hausman检验结果分析

Test:  Ho:  difference in coefficients not systematic
chi2(5) = (b-B)'[(V_b-V_B)^(-1)](b-B)                          =        5.80                Prob>chi2 =      0.3263                (V_b-V_B is not positive definite)不知道这个结果是固定效应,还是随机效应?谢谢。


看P值为0.3263>0.05 是不能在0.05的置信水平下(一般实证研究都要求0.05)拒绝原假设
原假设是模型为随机效应模型
即不能拒绝随机效应
可以使用随机效应模型估计,也就是用随机效应GLS估计,在随机效应模型下它是最优的。


请问用eviews做了hausman检验确定是固定效应模型后,还需要做F检验吗?hausman检验与f检验到底什么关系?


如果确定是固定效应,那就用固定效应within group估计,你说的F检验是指联合检验所有系数为0?


请问,只要P值小于0.05,固定效应就好吗?出现chi为负值怎么处理?


P值小于0.05是说在0.05的置信水平下拒绝随机效应模型的原假设,因此原模型为固定效应模型。出现chi为负值,说明Hausman检验失效了,保险起见应使用固定效应模型,因为固定效应估计总是对的。

 

转载请注明:数据分析 » stata中hausman检验结果怎么处理_stata hausman检验

请问stata进行hausman检验的命令_hausman检验命令

$
0
0

请问stata进行hausman检验的命令

关键词:hausman检验命令 stata协整检验命令

是直接输入hausman再加两个回归的结果名就行了吗?我在用格林的econometric analysis的例题里的数据做回归,为什么用stata得到的hausman检验的结果和书上给的不一样?但是用Eviews就能做出来,

例题里的意思是说用消费支出对可支配收入回归,C(t)=a+b*Y(t)+u,C是消费支出,Y是可支配收入,但是由于怀疑Y有内生性,因此使用C和Y的一阶滞后值作为工具变量回归,然后使用hausman检验比较两个回归结果,检查Y是否确实存在内生性,即是否和干扰项u相关。如果手边有格林的econometric analysis这本书的话,就是第五版的例子5.3或者第七版的例8.7,C和Y在数据集里对应的变量应该是realcons和realdpi,书中第五版给出的hausman检验结果的统计量是22.111,第七版里又变成了8.481,我用stata得到3.41,用EVIews倒是算到8.481
数据,数据介绍和命令:

reg y x fe
est store fe
reg y x re
est store re
hausman fe re,constant sigmamore
当然这样的话使用的是普通标准差,如果在re回归时使用vec(cluster)时不能使用hausman检验了,可能需要你手动算一下了.

请问如果是面板数据用hausman检验确定是用固定效应模型还是随机效应模型的话,是不是要把您这段命令里面的reg换为xtreg?


试试
Xtreg y x , fe
其中 Xtreg 是用于面板数据的,你可以看:
http://bbs.pinggu.org/thread-3077348-1-1.html

x 跟 fe 中间要注意空格 与符号

转载请注明:数据分析 » 请问stata进行hausman检验的命令_hausman检验命令

动态面板数据的stata实例_stata 动态面板数据

$
0
0

动态面板数据的stata实例_stata 动态面板数据

关键词:stata 动态面板数据 stata动态面板 动态面板模型 stata stata面板数据分析 stata 面板数据回归

文件是从Stephen R Bond的个人主页上下载的几篇关于面板的文章和数据,其中包括了一篇动态面板的综述文章和两个讲义。文件中的内容对应着萧政的面板数据分析的ch3部分,有关于用stata进行动态面板分析的详细说明。

stata处理面板数据的方法和案例.rar

第八章

面板数据模型

8.1

简介

面板数据,简言之是时间序列和截面数据的混合。严格地讲是指对一组个体(如居民、国

家、公司等)连续观察多期得到的资料。所以很多时候我们也称其为“追踪资料”。近年来,

由于面板数据资料获得变得相对容易,使得其应用范围也不断扩大。而关于面板数据的计量理

论也几乎涉及到了以往截面分析和时间序列分析中所有可能出现的主题,如近年来发展出的

面板向量自回归模型(Panel VAR)、面板单位根检验(Panel Unit Root test )、面板协整分析(Panel Cointegeration)、门槛面板数据模型(Panel Threshold)等,都是在现有截面分析和时

间序列分析中的热点主题的基础上发展起来的。

采用面板数据模型进行分析的主要目的在于两个方向:一是控制不可观测的个体异质性;

二是描述和分析动态调整过程,处理误差成分。

使用面板数据主要有以下几方面的优点:

便于控制个体的异质性。比如,我们在研究全国

30个省份居民人均消费青岛啤酒的数量

时。可以选取居民的收入、当地的啤酒价格、上一年的啤酒消费量等变量作为解释变量。

但同时我们认为民族习惯、

1风俗文化、

2广告投放等因素也会显著地影响居民的啤酒消

费量。对于特定的个体而言,前两种因素不会随时间的推移而有明显的变化,通常称为个

体效应。而广告的投放往往通过电视或广播,我们可以认为在特定的年份所有省份所接受

的广告投放量是相同的,通常称为时间效应。这些因素往往因为难以获得数据或不易衡量

而无法进入我们的模型,在截面分析中者往往会引起遗漏变量的问题。而面板数据模型的

主要用途之一就在于处理这些不可观测的个体效应或时间效应。

包含的信息量更大,降低了变量间共线性的可能性,增加了自由度和估计的有效性。

便于分析动态调整。

1如宁夏属于回族自治区,那里的回民因为信仰伊斯兰教,所以不允许饮酒的,而生活在宁夏的许多汉民也往往

因为自己的回民朋友无法饮酒而无形中减少了啤酒的消费量。

2如中国南部地区啤酒的消费量比较大,而北方很多地区只有在夏天才会饮用较多的啤酒,冬天他们一般是只喝

白酒的。

转载请注明:数据分析 » 动态面板数据的stata实例_stata 动态面板数据

stata如何处理多维度数据_用stata处理面板数据

$
0
0

stata如何处理多维度数据

根据:stata处理面板数据,stata数据处理,stata数据分析

需要做不同企业不同年份对不同国家的出口数据,相当于要求STATA不是仅仅只能区分不同年份不同国家,或者不同年份不同企业,而是三个维度,不同年份不同企业对不同国家~用tsset命令只能设定两个维度,一个截面维度,一个时间维度,可是两个维度会出现repeated time values within panel,重复的数据不能删除,如何让stata区分出三个维度?而这样的数据的回归还是用xtreg吗?急着写论文,


把y给换了就行了。y=企业*国家。两列值乘一下。

我的数据不是平衡面板数据,有的有的企业可能只有几年的数据,有的企业甚至只有一年的数据,这样的数据还是正常用xtreg回归吗?

不平衡的话用 xtivreg,貌似是2006年出的,官方论坛里有使用说明。

不平衡的话用 xtivreg,貌似是2006年出的,官方论坛里有使用说明。


 用stata如何做面板数据
1.fe、re或其他哪个好?(hausman?)
2.假如fe好,如何在这之后做2sls
命令该如何写


假设因变量是yy,自变量是aa、bb、cc,豪斯曼检验的命令这么写:
qui xtreg yy aa bb cc,fe(qui就是quietly,让stata只运算但是不要输出fe的结果)
est store fe(储存fe的结果)
qui xtreg yy aa bb cc,re
est store re
hausman fe

然后stata就会算出来一个chi2值,然后给出一个Prob>Chi2=?的结果(不知道为什么有时候要等半分钟才出来),如果这个P值小于0.05,就用固定效应模型,如果P指比较大,就用随机效应模型。

我之前做的结果都用了固定效应模型,随机效应模型的不会。
希望对你有帮助。

转载请注明:数据分析 » stata如何处理多维度数据_用stata处理面板数据


用Stata计算probit模型的边际效应_probit模型案例

$
0
0

用Stata计算probit模型的边际效应

关键词: probit模型的边际效应,probit 边际效应,probit模型 stata,probit模型stata语句

进行回归分析往往要看边际影响,
对于线性模型边际影响就是其系数;
但对于许多非线性模型边际影响是不等于系数值的,特别是如:logitprobittobitmlogitologit等模型

stata中求边际影响的命令,早期是用mfx
但到stata11以后,命令为margins(虽然mfx命令也可以用,但是功能不如margins强大);
margins 命令很强大,正因为强大,所以,命令也变的复杂,可以处理许多情况(手册上面有详细的例子),

对于不同的模型采用的参数也是不同的,因此,在用margins求边际影响的时候,一定要查看该命令的帮助,看看该命令可以用哪些参数。

每个模型估计的命令都有postestimation   ,即估计后可以做的。

如:mlogit 命令就有对应的  postestimation — Postestimation tools formlogit

几个简单的例子—probit模型案例

*例子1:线性回归模型

sysuse auto, clear

reg price weight rep78

margins, dydx(*)   

margins, dydx(rep78)     

margins, dydx(rep78)    at(weight==2000) 

*****************************************************************************

*例子2 probit 模型

sysuse auto, clear

probit foreign price weight rep78

margins, dydx(*)         

margins, dydx(rep78)      

margins, dydx(rep78)    at(weight==2000) 

*************************************************************************

*例子3 mlogit 模型

sysuse auto, clear

tab rep78                        

mlogit rep78 mpg displ, base(5)    

*mlogit回归结果有多个方程,因此,需要计算不同方程的边际影响

*计算rep78分别等于1,2,3时的边际影响

margins, dydx(*) predict(outcome(1))

margins, dydx(*) predict(outcome(2))

margins, dydx(*) predict(outcome(3))

*****************************************************************************

*例子4;ivprobit 模型

webuse laborsup

ivprobit fem_work fem_educ kids (other_inc= male_educ)

 

*计算平均边际影响: 关键是后面的选项 predict(pr)

* pr calculates the probability of a positive outcome..

margins, dydx(*)  predict(pr)

***************************************************************************** 

*例子5;tobit  模型 

sysuse auto,clear

generate wgt =weight/100

tobit mpg wgt price,ll(17) ul(24)

margins, dydx(*)

margins, dydx(*)predict(ystar(17,24))

margins, dydx(*)predict(    e(17,24)) 

***************************************************************************** 

*例子6;xtlogit  模型*面板数据的其他命令,也是类似,一定要去查manual里面的介绍
webuse union,clear
xtlogit union age grade i.not_smsa south##c.year

margins,dydx(*)  predict(pu0)

*****************************************************************************

转载请注明:数据分析 » 用Stata计算probit模型的边际效应_probit模型案例

stata生存分析的详细步骤及解释_stata 生存分析

$
0
0

stata生存分析的详细步骤及解释

关键词: stata 生存分析,stata 生存曲线,stata做生存分析

前言

生存分析(survive analysis)即是将终点事件的出现与否和出现终点事件所经历的时间结合起来的一种统计分析方法,生存分析通常研究的终点事件是死亡,生存分析由此得名。但生存分析可更广泛的运用于恶性肿瘤、慢性疾病或其他情况的随访研究中事件分析,比如疾病的发生、复发、转移、伤口的愈合、某种症状的消失等。生存资料的分析主要特点就是考虑每个研究对象出现某一结局所经历的时间。生存曲线即是以生存时间为横轴,生存率为纵轴,将各个时间点对应的生存率连接在一起的曲线图[1-2]。

1. 生存分析中几个重要的基本概念

1.1生存时间

生存时间(survival time)也是一个广义概念,泛指所关心的某现象的持续时间,即随访观察持续的时间,常用符号t表示。生存时间分为两种类型:1. 完全数据(complete data):指从观察起点到发生“死亡”事件所经历的时间。提供了观察对象确切的生存时间。2. 截尾数据(censored data):亦称截尾值(censored value)或终检值。指从观察起点到发生非“死亡”事件所经历的时间。

1.2截尾

生存结局分为“死亡”与“截尾”两类,“死亡”是感兴趣的终点时间,其他终点事件或结局都归为截尾。

1.3死亡概率

死亡概率(probability of death)表示单位时间段开始存活的个体,在该段时间内死亡的可能性。符号q表示。”q=某年内死亡人数÷某年年初人口数”

1.4生存概率

生存概率(probability of survival)表示单位时间段开始存活的个体,到该段时间结束时仍存活的可能性。符号p表示。p=某年活满一年人口数÷某年年初人口数。P=1-q。

1.5生存率

生存率(survival rate, survival function)表示观察对象经历tk个单位时间段后仍存活的可能性。若无截尾数据,则。其中1。若有截尾数据,须分时段计算生存概率。假定观察对象在各个时段的生存事件独立,应用概率乘法定理:,Pi为某时段的生存概率,故生存率又称累积生存概率(cumulative probability of survival)。

1.6生存曲线

生存曲线(survival curve):生存时间为横轴,将各时点所对应的生存率连接在一起的曲线图,样本量小时生存曲线呈阶梯形,样本量足够大时,形成光滑的曲线。

1.7中位生存时间

中位生存时间是指50%观察对象能存活的时间。

2. 生存分析的统计学方法

由于生存时间一般不呈正态分布,而且需要考虑截尾数据,生存分析有其独特的统计学方法。常用的统计学方法有以下几种。

2.1描述性分析

根据样本生存资料估计总体生存率及其他有关指标(如中位生存时间等)。常采用Kaplan-Meier法(乘积极限法)进行分析。对于频数表资料则采用寿命表法进行分析。计算生存率需要考虑时间顺序。

2.2比较分析的方法

对不同组生存率进行比较分析,常采用非参数的log-rank检验,检验无效假设使两组或多组总体生存时间分布相同。

2.3影响因素分析

通过生存分析模型来探讨影响生存时间的因素,常用的方法为COX比例风险模型。

3. 基于Stata软件的统计学实现生存分析(笔者注:以下所举实例数据全部来自于陈峰教授主编《现代医学统计方法与Stata应用(第2版)》,相关Stata命令及结果解释大部分来自于这本书,其中部分命令有少许改动。陈锋教授主编的这本书通俗易懂,感兴趣的读者可以找来一读)

3.1生存资料的定义

在对随防资料进行生存分析之前,需先将该数据库定义为生存资料数据库,其命令是:

stset 时间变量 [,failure(截尾变量==#)]

其中,选择项failure(截尾变量==#)规定截尾变量取值为“#”时研究对象出现预期结果,没有该选择项时,Stata 以所有不等于0 的非缺失值为出现预期结果。对数据库进行定义时必须注意变量顺序,命令stset 后的变量顺序依次为时间变量、截尾变量。定义数据库后,系统自动产生四个变量:

_st /* 数据库中该条记录是否被定义为生存资料

_d /* 该条记录是否出现预期结果

_t /* 观察对象被随访的时间

_t0 /* 观察对象第一次被观察到的时间(开始过程的时间为0) 

例1 某医院泌尿外科于1979-1982 年间作了19例肾移植手术,拟了解肾移植后病人

的生存时间(天)。规定随访开始时间为病人术后一天,预期结果为该病人因与肾移植有关的各种原因的死亡。后改进手术方式,于1983-1986 年又作了14 例,资料如下(有+的数据表示该病人截尾)。计算各组的生存率及可信区间(资料已存入文件1.dta)。

一般手术: 3 9 15 20 20 26 30 41 46 64+ 64 135 223 365 450 596+ 680+ 900+ 900+

改进手术: 10 390+ 518+ 70+ 70+ 120 475+ 225 801+ 366 647+ 1001+ 1045+ 1045+

stata生存分析的详细步骤及解释_stata 生存分析

键入命令如下:

. stset time, failure(outcome)

得结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

数据库“例-1”被定义为生存分析数据库,变量“outcome”取值不等于0 且不等于缺失值时,该记录为完全数据,即出现预期结果。反之则为截尾值,表示未观测到病人出现预期结果。完成上述定义后,即可用下面介绍的命令作进一步分析。

3.2 生存资料的描述

用于计算中位生存时间的命令是:

stsum [if 表达式] [,by(分组变量)]

可用stci 命令计算中位生存时间、平均生存时间、生存时间的百分位数,及其可信区间:

stci [if 表达式], [by(分组变量) 选择项]

其中,选择项有:

median /* 计算中位生存时间

emean /* 计算平均生存时间时,如果生存时间最长一例为截尾值,emean 假设数据服从指数分

,并根据指数分布将该例后生存曲线部分延长至与横轴相交,曲线下面积即为所求

的平均生存时间。

rmean /* 计算平均生存时间时,如果生存时间最长一例为截尾值,rmean 不对数据延长,曲线

下面积即为所求的平均生存时间。此即为通常教科书上所教授的平均生存时间。

p(#) /* 生存时间的百分位数

level(#) /* 可信区间的可信度

也可用survsum 命令计算中位生存时间的中位数。

继续以例1数据为例,在命令窗口键入:

. stsum, by(treat)

数字化结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

第二组(改进手术组) 较早出现了截尾数据,故该组的中位生存时间无法进行估计,Stata

用缺失值表示。

用stci 命令可以计算平均生存时间及其可信区间:

命令窗口键入命令如下:

. stci, rmean by(treat)

数字化结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

第二组的平均生存时间明显长于第一组。对于观察队列中最后一例为截尾值者,平均生

存时间的估计值偏低(underestimated)。Stata 在相应数值后加“*”表示。

3.3生存率的估计

生存率的估计一般采用乘积极限(product-limit)法,又称Kaplan-Meier 法,其标准误的计

算用Greenwood 近似法。根据生存率及其标准误,可以绘制生存曲线,估计可信区间。

用于输出生存率、生存率的标准误等统计量的命令是:

sts list [if 表达式] [, by(分组变量) strata(分层变量) adjustfor(校正变量选择项]

选择项有:

failure /* 输出死亡函数 (1-S(t))

na /* 输出累积风险函数

level /* 规定所输出可信区间的可信度

这里,by 与strata 选择项的使用有所不同。使用by 选择项时,Stata 对分组变量的不同水平分别计算生存函数和累积风险函数。而在使用strata 选择项时必须同时使用adjustfor 选择项,此时Stata 将计算adjustfor 选择项中校正变量取值为0 时的生存函数、累积风险函数,即计算基线生存函数、基线累积风险函数。

用于绘制Kaplan-Meier 生存(死亡)曲线的命令是:

stsgraph [,by(分组变量) separate 绘图命令选择项/* 绘制Kaplan-Meier 生存(死亡)曲线

stphplot [,by(分组变量绘图命令选择项/* 绘制log(-log(S(t)))log(time)的线图

stcoxkm [,by(分组变量) separate 绘图命令选择项/* 绘制Kaplan-Meier 生存曲线与Cox 预测曲线

在上述的“绘图命令选择项”中,可以选用xlab,ylab,xtick,ytick 以及标题命令t1,t2,b1,

b2,l1,l2,r1,r2 等,但connect, symbol, pen 等选择项不能用,因y 轴是从0 开始,所以ylog 等选择项亦不能用。在stphplot 命令中,可选用connect, symbol, pen 等选择项。

sts graph 命令中的其他常用选择项:

adjustfor(变量) /* 按指定变量进行调整

failure /* 指定绘制死亡曲线,缺失为绘制生存曲线

gwood /* 绘制生存(或死亡)曲线及其Greenwood 可信区间

na /* 绘制Nelson-Aalen 累积风险函数曲线

cna /* 绘制Nelson-Aalen 累积风险函数曲线及其可信区间

lost /* 在曲线上标出该时间点截尾值例数

计算各组的生存率及标准误,命令及结果如下:

. sts list if treat==1

stata生存分析的详细步骤及解释_stata 生存分析

绘制各组的生存曲线,命令及结果如下:

. sts graph,by(treat) lost

stata生存分析的详细步骤及解释_stata 生存分析

两条曲线分别表示两组的生存曲线,曲线上的数字表示在该时刻的截尾值例数。显然,两

组的生存率不同。绘制各组的生存曲线及其可信区间,使用gwood 选择项。如对第1 组,命令及结果如下:

. sts graph if treat==1, gwood

stata生存分析的详细步骤及解释_stata 生存分析

图中,中间一条线是treat=1 组的生存曲线,上、下两条线分别表示生存率的可信区

间的上下限。注意,率的可信区间是不对称的。

3.4 生存率的比较

一、两组或多组生存率的比较

检验两组或多组生存率是否相同一般采用Log-rank(Mantel–Cox)检验、Wilcoxon(Breslow)

检验。命令如下:

sts test 分组变量 [,选择项]

选择项有:

logrank /* 进行Log-Rank 检验

wilcoxon /* 进行Wilcoxon(也叫Wilcoxon-Gehan 检验或Breslow 检验)

trend /* 检验死亡(生存)率是否随分组变量取值水平的增高而上升或下降

就例1资料,比较两组病人的生存时间有无差别。键入命令如下:

. sts test treat, logrank

数字化结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

这里的检验假设是第一处理组的生存率与第二组的相同。输出结果中给出了两组的实际

数(Events observed)及理论数(Events expected)。本例中改进手术组的实际实际死亡数小于理论数,说明该组病人预后情况较好,经Log-rank检验,χ2= 6.71,自由度υ=1,P=0.0096,按α=0.05的检验水准认为两组病人的生存时间有差别,以改进手术组为优。

3.5 Cox 比例风险模型

恶性肿瘤患者生存时间的长短,不仅与治疗有关,还受病人的年龄、性别、病情、心理、环境、社会等因素的影响,如果要确切地显示治疗措施的效果,所有的病人除了治疗措施不同以外,其他影响因素必须相同(或相近),但这在实际上是不可能做到的。因此,我们最好能采用多因素分析方法,即分析包括治疗措施在内的可能因素对生存时间长短的影响(大小和方向)。

但生存时间的分布往往不服从正态分布(大多为正偏态分布),有时不知道它的分布类型,又存在截尾数据(Censored data)这样,就不能用多元线性回归方法来分析。而传统的方法只能进行单因素分析,又不能利用截尾数据(Censored data)。1972年,英国统计学家 D. R. COX提出了一种比例风险模型(Cox proportional hazard model),简称COX模型。它可以分析多种因素对生存时间的影响,而且允许有“截尾”存在。是生存分析中最重要的模型之一。COX模型主要用于肿瘤和其它慢性病的预后因素分析,也可以用于一般的临床疗效评价和队列的病因探索。Cox 比例风险模型的一般形式是:

stata生存分析的详细步骤及解释_stata 生存分析

h(t)表示研究对象在时点t暴露于协变量(x1, x2, …, xm)之下的风险函数,h0(t)表示所有协变量取值均为0 时的基线风险函数。在Cox模型中h0(t)不能由样本得出,因而不能估计生存率。但这并不妨碍对各协变量相对危险度的估计。

估计Cox比例风险模型的命令格式为:

stcox [协变量] [,nohr strata(分层变量)]

估计含有时依变量的Cox比例风险模型的命令格式为:

cox 时间变量 [协变量] [,hr dead(截尾变量) strata(分层变量选择项]

进行逐步Cox 回归分析的命令为:

sw cox 时间变量协变量 [, cox 命令选择项逐步回归选择项]

这里选择项有:

nohr /* 指定输出回归系数而不是危险比exp(b)

tvc(时依变量) /* 指定时依变量

texp() /* 时依变量取值变化表达式

level(#) /* 可信区间的可信度

maximize-options /* 进行最大似然估计的控制选项

[应用命令cox时无须事先应用stset 对数据进行定义,且进行逐步回归时只能使用cox 命令。

用 sw cox 命令可以进行逐步Cox 回归分析。

就例1资料进行Cox 回归分析。

在应用stset 对数据进行规定后,可直接用stcox 命令进行Cox 回归分析。键入命令如下:

. stcox treat,nohr

或者也可以使用如下命令:

. cox time treat, dead(outcome)

结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

stata生存分析的详细步骤及解释_stata 生存分析

风险函数一般用极大似然估计,用Newton-Raphson 法迭代。结果中给出了每次迭代的似

然函数之对数值(Log Likelihood), 本例经四次迭代得极大似然估计变量treat 的系数

(Coefficient)为-1.371774,其标准误(Std.Error)为.5708971,z 值为-2.40,是对treat 的系数是否为0的检验,P>|z|是相应的概率。本例的P=0.0016,故可认为treat的系数不为0。从而得Cox 比例风险函数:

如果计算HR则可使用如下命令:

. stcox treat, hr

或者使用以下命令:

. cox time treat, dead(outcome) hr

结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

stata生存分析的详细步骤及解释_stata 生存分析

以例2数据为例继续演示Stata软件实现Cox回归

某临床试验比较A,B 两治疗方案对某病的治疗效果,A 组(group=0)12 人,B

组(group=1)13 人。病人分组后检验其肾功能(kidney),功能正常者记0,不正常者记为1;治疗后生存时间为stime(天);数据已存入文件2.dta。问不同治疗方案及肾功能对病人的生存时间是否有影响?

这里,时间变量是stime,终检变量是censor,治疗方案(group)是研究因素,而肾功能

(kidney)是混杂因素。例2数据如下图所示:

stata生存分析的详细步骤及解释_stata 生存分析

键盘键入命令设置数据为生存数据,如下:

. stset stime, failure(censor)

结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

继续键入命令如下:

. stcox group kidney, nohr nolog

得结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

计算HR,则输入如下命令:

. stcox group kidney, hr

stata生存分析的详细步骤及解释_stata 生存分析

3.6 随访生存资料的寿命表法

当样本含量较大或不能准确得知研究结果出现的时间时,可以将各研究对象的生存时间

按年或月进行分组计算其生存率。Stata相应的命令是:

ltable 时间变量 [dead(截尾变量)] [,by(分组变量选择项绘图选择项]

ltable命令中大部分选择项前面已经介绍过,未介绍过的有:

weight /* 指定权重变量

survival /* 指定输出生存率

failure /* 指定输出死亡率

hazard /* 指定输出风险函数

interval /* 指定寿命表中生存时间组距

test /* 应用似然比检验、Log-rank检验对各总体生存率曲线是否相同进行检验

notab /* 不输出寿命表

noconf /* 绘制生存率曲线时不绘制各时间点生存率的可信区间

graph /* 指定绘制生存率曲线

例3 随访某种恶性肿瘤患者生存情况如下图所示,试作统计分析。这是一个分组资料,先将数据整理成下列形式,包括处理变量treat,生存年数year,是否截尾censor,以及频数num。其中,生存年数输入时“0~”输为0.5,“1~”输为1.5,其他依此类推。

stata生存分析的详细步骤及解释_stata 生存分析

计算寿命表并,进行统计学检验,命令如下:

. ltable year censor [weight=num], test by(treat) interval(1)

得数字化结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

Stata依次输出各段生存时间起点及终点、期初人数、期内死亡人数、截尾例数、生存率

及其标准误和相应的95%可信区间。同时给出了两组的齐性检验(Lawlsee,1982)及log-rank检

验。

绘制第一组(group=1)病人的生存率曲线图。命令如下:

. ltable year censor [weight=num], test by(treat) interval(1) graph

得数字化结果如下:

stata生存分析的详细步骤及解释_stata 生存分析

4. 结语

生存分析应用广泛,作为一个临床医生至少应该掌握使用一种统计学软件实现生存分析,本文在参考了《现代医学统计方法与Stata应用(第2版)》基础上给大家演示了Stata软件实现生存分析的过程,希望能对大家的科研工作有所帮助。

转载请注明:数据分析 » stata生存分析的详细步骤及解释_stata 生存分析

stata-数据预处理 _数据预处理_STATA数据库维护

$
0
0
命令 1:su 变量名      (可以多个变量:即:su 变量名 1  变量名 2  … 变量名 m) 
命令 2:su 变量名,d    (可以多个变量:即:su 变量名 1  变量名 2  … 变量名 m,d) 
tab
很好用的命令。 可以处理分类变量相关的问题,如var1 表示性别,var2表示收入,研究男性和女性在平均收入上的差别,可用:tabulate var1, summ(var2)
tabulate 的用法很多,可以使用help tabulate 命令来查询。与tabulate相似的命令有table。(摘自 邹伟川 CCER04)
centile
summarize
tabstat
正态检验:sktest varname
swilk varname
p值越小,越有可能不服从正态分布;
anova命令: anova y x1 x2
anova 做方差分析(analysis of variance),研究y的平均值在分类变量x1 和x2不同取值之间的差异。
ttest 命令
correlate :计算两变量的相关系数
计算百分位数还可以用专用命令 centile。 
centile 变量名(可以多个变量),centile(要计算的百分位数) 例如计算 P2.5,P97.5 等 
centile 变量名,centile(2.5  97.5) 
本例计算 P2.5,P97.5,P50,P25,P75。 
本例命令. centile x,centile(2.5 25 50 75 97.5)

排序
SORT 变量名1 变量名2 ……

变量更名
rename 原变量名 新变量名

删除变量或记录
drop x1 x2          /* 删除变量x1和x2
drop x1-x5          /* 删除数据库中介于x1和x5间的所有变量(包括x1和x5)
drop if x<0         /* 删去x1<0的所有记录
drop in 10/12      /* 删去第10~12个记录
drop if x==.        /* 删去x为缺失值的所有记录
drop if x==.|y==.  /* 删去x或y之一为缺失值的所有记录
drop if x==.&y==.  /* 删去x和y同时为缺失值的所有记录
drop _all           /* 删掉数据库中所有变量和数据

STATA的变量赋值
用generate产生新变量
generate 新变量=表达式
generate bh=_n                          /*  将数据库的内部编号赋给变量bh。
generate group=int((_n-1)/5)+1     /*  按当前数据库的顺序,依次产生5个1,5个2,5个 3……。直到数据库结束。
generate block=mod(_n,6)        /*  按当前数据库的顺序,依次产生1,2,3,4,5,0。
generate y=log(x) if x>0              /*  产生新变量y,其值为所有x>0的对数值log(x),当x<=0时,用缺失值代替。
egen产生新变量

set obs 12
egen a=seq()           /*产生1到N的自然数
egen b=seq(),b(3)   /*产生一个序列,每个元素重复#次
egen c=seq(),to(4)  /*产生多个序列,每个序列从1到#
egen d=seq(),f(4)t(6) /*产生多个序列,每个序列从#1到#2

encode  字符变量名,gen(新数值变量名)
作用:将字符型变量转化为数值变量。
STATA数据库的维护
保留变量或记录
keep in 10/20       /* 保留第10~20个记录,其余记录删除
keep x1-x5       /* 保留数据库中介于x1和x5间的所有变量(包括x1和x5),其余变量删除
keep if x>0         /* 保留x>0的所有记录,其余记录删除
STATA数据库的维护
替换已存在的变量值
replace  变量=表达式
replace  bolck=6 if block==0       /*  将block=0的数全部替换为6。
replace  z=. if z<0             /*  将所有小于0的z值用缺失值代替。
replace age = 25 in 17      /*  将第17条记录中的变量age替换为25。
for var x* : replace X=0 if X==.  /*  将所有第一个字母为x的变量替换为0,如果该变量的值为缺失值

转载请注明:数据分析 » stata-数据预处理 _数据预处理_STATA数据库维护

在stata使用statsby命令做分组回归_stata分组回归命令

$
0
0

在stata使用statsby命令做分组回归

关键词:stata分组回归命令,stata statsby,stata分组回归stata如何分组回归

在实际的回归分析中,经常需要做多分组的回归,譬如:分别按年度、行业进行回归。如果仅仅使用regress命令,那么必然造成进行重复多次的繁重劳动。当然,一种办法就是通过编程来实现,不过这需要拥有较好的编程能力,绝大多数初学者甚至是资深人士都不愿选择的。其实STATA中已经提供了相应的命令完成这个貌似繁重的工作,即statsby,这个可以专门用来处理分组数据的命令。

一、statsby的命令格式及说明

statsby命令格式为:

statsby [exp_list] [, options ]: command

其具体内容,请参见STATA的help文件,即:

help statsby

在分组回归中,statsby最重要的是如下三个部分:

(1)[, options ],应使用分组变量,如:“,by(year industry)”;

(2)command,应选用相应的回归命令,如果是OLS,那么就为“regress y x1 x2”;

(3)[exp_list],要统计的相应参数,如:系数拟合值、拟和优度、自由度等,可参见对应command的help文件。

综合起来,命令可以写为:

use “d:\statsbydata.dta”,clear

sort year industy

Statsby _b _se e(r2) e(r2_a) e(df_m) e(df_r) e(F) e(N), by(year industry) saving(d:\statsbyresults.dta, replace): regress y x1 x2

其中:

d:\statsbydata.dta为举例使用数据库,包括变量为:y、x1、x2、year和industry,其中year和industry是用来做分组回归的分组标识变量;

sort是排序命令,建议养成好习惯对分组变量排序,为了后续研究做准备。

_b为各变量的回归系数;

_se为各变量的标准误;

e(r2)为回归方程的拟和优度r2;

e(r2_a)为回归方程的调整后r2;

e(df_m)为回归方程的模型自由度,一般的统计、计量的书籍都记为(K-1);

e(df_r)为回归方程的剩余自由度,一般的统计、计量的书籍都记为(n-K);

e(F)为回归方程的F值;

e(N)为进入回归方程的有效样本数N,一般的统计、计量的书籍都记为n,也即前述提及的n;

by(year industry),使用变量year和industry作为分组变量,进行分组统计; saving(d:\statsbyresults.dta, replace),将结果保存,也可以保存在临时表里;

regress y x1 x2,进行回归,这部分可以参看regress命令自身格式进行扩充。

此命令结束后,将在D盘下产生一个名字为statsbyresults.dta的文件,上述统计量都将在此文件中。这里需要说明的是_b和_se是系统生成的向量,因此不能随便赋给变量,而e()

则是标量,可以赋值给一个变量,譬如在命令中可以写:“R_square=e(r2)”,这样在statsbyresults.dta就会出现一个R_square,替代原有的系统默认生成的变量。即使是系统生成的变量,也不用担心,因为变量的label可以区分具体的变量意义。

二、使用statsby命令后计算各回归方程中各回归系数的t值和p值

这里又发现了新的问题,首先在regress命令结果中的e()函数中,没有t值和对应的p值,这对于想验证相应分组模型对应的系数是否显著或是模型是否显著就很麻烦,因此,这里只能通过t值的计算公式和STATA提供的t检验的p值函数。具体步骤如下:

首先切换到结果表,

save “d:\statsbydata.dta”,replace

use “d:\statsbyresults.dta”, clear

其中,save命令使用要十分小心,会把原有的数据库内容改变,因此存在大量的STATA的使用讲解中都提及到如何避免这个问题的处理,请自行参考。本文为了说明方便,简化处理。

回归系数的t值公式为:ti?其中: ?ise(?i)t(n?K)

?i是第i个回归系数,可以在结果表中找到相应变量,以“_b_”开头的、以对应回归变量名为结尾的,如:“_b_x1”为x1的回归系数、“_b_cons”为截距项回归系数;

se(?i)为其标准误,可以在结果表中找到相应变量,以“_se_”为开头的、以对应回归变量名为结尾的,如:“_se_x1”为x1的回归系数的标准误、“_se_cons”为截距项回归系数的标准误;

n?K为回归方程剩余自由度,即e(df_r),如果没有赋给变量,那么系统自动生成一个变量,其label会标注“e(df_r)”,此处回归的系统变量为_eq2_stat_4。

因此,计算x1回归系数的t值和p值可以用如下的命令:

gen x1_t=_b_x1/_se_x1

gen x1_p=ttail(_eq2_stat_4,abs(x1_t))

其中:

ttail(e(df_r),abs(t_value))为计算t检验值对应的p值函数,具体函数要求请参考help文件;abs()为取绝对值函数。

这样,d:\statsbyresults.dta文件中生成了两个新的变量x1_t和x1_p,分别为x1回归系数的t值和对应的p值。

三、使用statsby命令后计算各回归方程F值对应的p值

同t值和对应的p值一样,e()中也没有给出各个模型的F值对应的p值,因此需要通过STATA提供的F检验的p值函数来计算生成。具体步骤如下:

r2/(K?1)回归方程的F值公式为:F?, (1?r2)/(n?K)

其中:

r2为回归方程拟和优度,即e(r2);

K?1为回归方程的模型自由度,即e(df_m);

n?K为回归方程的剩余自由度,即e(df_r)。

而计算F值相应p值的函数为Ftail(e(df_m),e(df_r),e(F))。

按照此分组回归模型形成的结果数据中,使用系统生成变量分别为:_eq2_stat_3为e(df_m)、_eq2_stat_4为e(df_r)、_eq2_stat_5为e(F),那么F值的相应p值为:

gen PF=Ftail(_eq2_stat_3, _eq2_stat_4, _eq2_stat_5)

则在d:\statsbyresults.dta文件中生成了一个新的变量PF,为相应回归方程的F值对应的p值。

四、使用statsby命令后如何生成各组回归方程的拟合值和残差等

在实际分组回归后,研究还需要保存相应因变量的拟合值或是方程的残差,如果不使用statsby的话,需要一个一个回归,然后使用predict命令,如:

reg y x1 x2 if year==2002 & industry==“A0“

predict yhat2002A0

predict resid2002A0,residuals

这太麻烦了,还要面临产生变量等问题。在使用statsby命令后,可以通过回归方程的回归系数直接计算相应的拟合值和残差,具体步骤如下:

首先打开d:\statsbydata.dta数据:

use “d:\statsbydata.dta”,clear

merge m:1 year industry using “d:\statsbyresults.dta”

gen yhat=_b_cons+_b_x1*x1+_b_x2*x2

gen resid=y-yhat

其中,merge是合并命令,m:1是多对一合并,要求using后的数据库必须按照year和industry排序并且是唯一排序,由于statsby命令结果自然是排好序的,这里就没有再排序。_b_cons、_b_x1和_b_x2分别是截距、x1的回归系数和x2的回归系数。合并的结果是,所有在d:\statsbydata.dta的变量数据都在year和industry的分类基础上合并到对应的样本中。这样就完成了分组回归后的因变量拟合值和残差的生成。

本文仅是就在STATA中使用statby完成分类回归工作及相应结果生成的简单描述,其他复杂内容,可以参考相应的help文件和编程知识进一步扩展。

转载请注明:数据分析 » 在stata使用statsby命令做分组回归_stata分组回归命令

将Excel文件数据导入stata的方法之比较_excel导入stata

$
0
0

将Excel文件数据导入Stata的方法之比较

关键词:stata导入excel数据,stata12导入excel数据,如何将excel导入stata,如何把excel导入stata

这一点可能也是大家在实证研究中遇到的最常见的问题,一般找来的数据都是excel文件,但是要做计量肯定要导入到STATA中去。可能大多数菜鸟最常见的办法就是直接复制粘贴了,简单明了,不需要任何技术,但潜在的问题是如果数据比较多,拉框选择还是一件很麻烦的事情,有些数据在excel中可能是显示小数点后两位,但实际储存的并不止这么多。如果是复制粘贴了,可能只粘贴过去小数点后两位,这样就损失了一部分精度。因此我不太推崇这种方法,就我的经验来看,直接调用STATA的内部数据导入命令会更好,起码不会丧失精度。STATA数据导入的命令有以下几种,下面分别加以评析:
1.insheet using filename, [option]
这个命令是专门用来导入像excel之类的以电子表格形式存储的数据。在导入之前,首先要把excel文件转存为STATA可以识别的格式。其中我最常用的就是另存为csv逗号分隔符格式。当然一个xls文件中会包含多个sheet,但csv只能保存一个sheet,在另存时excel会提示你是否只另存当前sheet,并且有些功能会丧失掉,不管那么多,毕竟csv只是一个中介,直接点确定就行了。当然你在保存csv时最好让变量名位于第一行,这样STATA就好识别了。然后在STATA中使用insheet读取csv文件,在option中指定为comma告诉STATA你读取的是csv文件。这种方法有个不足在于如果你的数据中包含中文而且里面含有逗号时,stata是无法区别这些逗号是数据中的逗号还是csv文件自己生成的逗号,因而会出现同一个变量的数据被拆散到两个变量的存储空间中。解决的办法是不要用逗号标示分隔符了,在excel中另存为txt(制表符分隔),这样就不会与逗号相混淆了。然后再在insheet命令中在option里指定是tab,就完事了。
2.infile using filename
这个infile命令分两类,一种是处理固定格式(fixed format)的txt或raw,另一种是处理自由格式(free format),两类文件的命令语法不太相同,适用的类型也有所不同,当然你在用这个命令里还需要定义一个dictionary,这个dictionary是用来描述数据的组织方式的,需要自己根据要导入的数据文件自己编写代码,然后嵌套到数据文件txt的前面去,或者是单独地存为一个dct文件,并且告诉STATA你要导入的数据在保存在哪里。由于使用起来的学习成本比较高,用得也比较少。在此就不详解了,有需要的请自行help infile。
3.xmluse
这个命令首先要把xls文件另存为xml格式,然后用xmluse命令去读取,当然在读取时你也要在option中声明你的xml文件是excel保存的而不是STATA保存的,这样就不会弄错。这个命令相比于前面的insheet的一大好处在于你不必为xls中的每个sheet单独另存为一个文件,而只需要整体另存一个xml格式就行了,在用xmluse时在option中告诉STATA从哪个sheet中的哪些cell中读取数据就行了。但是经本人的经验发现如果你的xls文件中如果有汉字的话,STATA读取后对应的变量会出现乱码,这一点用insheet就不会有这个问题。
4.odbc
这个命令是专门读取数据库文件的,并且支持SQL命令,这样如果你的数据比较多的话,可以先用SQL语句进行筛选,然后而导入。当然这个命令也能导向excel文件,只是本人目前还没用过,在此也不详解了。

再补充一下,Stata12可以用import excel命令直接导入。Stata13中insheet已经被import delimited取代:“ insheet has been superseded by import delimited.  insheet continues to work but, as of Stata 13, is no longer an official part of Stata.”


不知道应该存为那个CSV?

你是用的MAC系统是吧?存成第一个就可以,不知道你存成csv就不能显示是什么意思,csv支持中文。
Stata不支持中文variable name,但是variable本身的观察值是中文是没问题的,用insheet导入,中文是可以正常显示的。Stata 12的do文档可以输入中文,但是存储后再打开会显示“?”。Mac版本的Stata 13已经解决了这个问题。


如果我的CSV文件太多,我可以分几次将数据导入,如何进行?
具体而言,如何将文件中的前1000个观察值导出来 …

你去help insheet看一下,里面的帮助系统很强大的

转载请注明:数据分析 » 将Excel文件数据导入stata的方法之比较_excel导入stata

stata数据分析_stata结果分析_stata数据分析案例

$
0
0

stata数据分析_stata结果分析_stata数据分析案例

为什么数据都是红色的啊?除了年份那栏的数据是黑色,所以后面做分析都分析不出来。求助。

红色数据表示字符串变量,这是不能用于回归分析的。一般在做面板回归的时候,直接从excel将数据黏贴到STATA里地区变量是字符串变量,需要进行转换。但是你这里除了年份的数据是数值型的,其他的都是红色就有问题了。我的建议是:
(1)在excel中详细检查每一个变量下的数据,尤其注意有没有缺漏值,很多时候存在缺漏值是导致字符串变量的重要原因。
(2)对于地区这一变量,一般是将其进行转换。假设地区变量名为region,stata数据分析具体的操作命令是:
encode,gen(region1) /重新生成一个带标签值的变量/
drop region /去掉原来的地区变量/
rename region1 region /将region1的名称改为region/
这时候region的颜色应该为蓝色,进行时间序列或面板数据的设定就没有问题了。

直接转化数据类型就行了


用STATA进行相关分析_stata 相关性分析_stata相关性分析命令

黄色字体为自己填写部分,红色字体为可缺省部分。

     1. Correlate计算pearson相关系数

  pearson相关系数是最常用的相关分析依据,要求变量服从正态分布,代码为:
——————————————模板——————————————
correlate 变量1 变量2 … if var=value,means covariance
——————————————模板——————————————
此代码用来计算变量1、变量2…之间的相关系数矩阵。
If用来筛选满足条件的数据,可缺省。
Means要求显示一半描述统计量(均值、标准差、最小最大值)。
Covariance要求显示协方差矩阵而不是相关系数矩阵。

      2.pwcorr推断总体相关系数

只用correlate计算样本的相关系数,会受到抽样波动的影响,样本相关不能说明总体相关。Pwcorr不仅可以计算相关系数,还可对相关系数显著性进行检验,原假设是总体相关系数为0,即不相关。代码为:
————————————模板————————————
pwcorr 变量1 变量2 … if var=value,sig star(#)
————————————模板————————————
Sig显示相关系数显著性的p值。
Star(#)是当相关系数显著性检验的p值小于设定的#%,则在相关系数旁标记星号。

比如,计算语文成绩与数学成绩的相关性,显著性水平为5%:
Pwcorr Chinese maths,sig star(5)

     3.pcorr计算偏相关系数

  偏相关分析的任务就是在研究两变量之间的相关关系时控制可能对其影响的其他变量。
————————————模板——————————————
pcorr 变量1 其他变量1 其他变量2 … if var=value
————————————模板——————————————
上面代码是考察其他变量与变量1的偏相关系数。
     4. 等级相关

  当变量联合正态分布不能满足,或者变量为定序与定类变量时,不宜使用pearson,而应使用spearman等级相关或kendal等级相关。
————————————模板————————————
spearman/kendal 变量1 变量2 … if var=value,star(#)
————————————模板————————————
语句开头用spearman或kendal都可以,分别代表两种相关系数的检验。
Star(#)是当相关系数显著性检验的p值小于设定的#%,则在相关系数旁标记星号。

转载请注明:数据分析 » stata数据分析_stata结果分析_stata数据分析案例

stata如何做描述性统计_stata 描述性统计

$
0
0

stata如何做描述性统计

关键词: stata如何描述性统计,stata 描述性统计,stata描述性统计命令

要求找出2001-2010年,统计口径为:1、按年度不分行业,列示出这10年margin指标的变化,统计的数值包括该指标:1、均值;2、中位数;3、最大值、最小值;25%75%数值;我想stata自己取到25%和75%的数,如何做到。不用sum ,d
year margin
2001 1.4378
2001 7.9574
2001 10.0931
2001 11.1987
2001 25.7284
2001 13.2495
2001 1.2523
2001 7.0303
2001 10.6681
2002 1.4704
2002 3.1694
2002 5.1549
2002 19.8039
2002 .5778
2002 4.3848
2002 14.6941
2002 12.9844
2002 9.8555
2002 2.663
2002 11.0786
2002 5.5337
2002 13.1931
2002 6.6347


很常见的问题。
第一种
tabstat margin,by (year) stat(me ma mi med p25 p75)
第二种
statsby mean=r(mean) max=r(max) min=r(min) median=r(p50)  p25=r(p25) p75=r(p75), by(year):  su margin

你的第一种方法很好用哦~~~谢谢你,但是我想生成的表格增加一个样本数量的统计量怎么做呢?

tabstat margin,by (year) stat(co me ma mi med p25 p75)

1.研一是指硕一吗? 我硕一完全不会Stata。 Stata我没有很厉害! 我是自修的。 严格讲,我导师主要教Gauss
2.学Stata,如果您有钱,可能买连玉君老师的视频可能比较快。遇到问题还可以问连老师。
3.汉密尔顿的书买了就读吧! 我个人建议,读完该书后,也许陈强的书, Cameron那本microeconometrics using stata很值得再读 【这边也都只是加强Stata怎么操做与一些计量经济的结合】
4.没有任合一本书是无敌全面的,精熟几本书后。遇到问题,多来Stata专版,多利用Stata自带帮助文件【善用help】与Stata手册,多去Stata官网问题区查,多google,后面这些都是增广见闻。
5.多跟版上一些高人学习,譬如版主sungmoo与蓝色。他们许多精彩的回帖都能启发自己对于Stata进一步的掌握。
6.如果是采input您的资料,第二种方法确实会出现您说的问题,但奇怪的是。如果是开启某.dta档,并未发生您的状况。我也不知道为什么。


第二种貌似有些问题 会出现
statsby mean=r(mean) max=r(max) min=r(min) median=r(p50)  p25=r(p25) p75=r(p75), by(year):  su roe
no; data in memory would be lost
r(4);

end of do-file

如果是采input您的资料,第二种方法确实会出现您说的问题,但奇怪的是。如果是开启某.dta档,并未发生您的状况。我也不知道为什么。

由于input的数据尚未形成dta文件,Stata做了保护。

“,”后面加上clear选项,就不会提示错误信息了(这意味着不必在乎input形成的原始数据)。

转载请注明:数据分析 » stata如何做描述性统计_stata 描述性统计


stata的描述性统计和回归分析指令_stata描述性统计命令

$
0
0

stata的描述性统计和回归分析指令

关键词:stata 回归指令,stata 描述性统计,stata描述性统计命令,stata分组描述性统计,stata 输出描述性统计

简单统计量的计算:
ameans x
(计算变量x的算术平均值、几何平均值和简单调和平均值,均显示样本量和置信区间)
mean var1 [pweight = var2]
(求取分组数据的平均值和标准误,var1为各组的赋值,var2为每组的频数)
summarize y x1 x2,detail
(可以获得各个变量的百分比数、最大最小值、样本量、平均数、标准差、方差、峰度、偏度)
***注意***
stata中summarize所计算出来的峰度skewness和偏度kurtosis有问题,与ECELL和SPSS有较大差异,建议不采用stata的结果。
summarize var1 [aweight = var2], detail
(求取分组数据的统计量,var1为各组的赋值,var2为每组的频数)
tabstat X1,stats(mean n q max min sd var cv)
(计算变量X1的算术平均值、样本量、四分位线、最大最小值、标准差、方差和变异系数)
去除极端值:
keep if y<1000
drop if y>1000
对数据排序:
sort x
gsort +x
(对数据按x进行升序排列)
gsort -x
(对数据按x进行降序排列)
gsort -x, generate(id) mfirst
(对数据按x进行降序排列,缺失值排最前,生成反映位次的变量id)
对变量进行排序:
order y x3 x1 x2
(将变量按照y、x3、x1、x2的顺序排列)
生成新变量:
gen logx1=log(x1)(得出x1的对数)
gen x1`=exp(logx1)(将logx1反对数化)
gen r61_100=1 if rank>=61&rank<=100(若rank在61与100之间,则新变量r61_100的取值为1,其他为缺失值)
replace r61_100 if r61_100!=1(“!=”表示不等于,若r61_100取值不为1,则将r61_100替换为0,就是将上式中的缺失值替换为0)
gen abs(x)(取x的绝对值)
gen ceil(x)(取大于或等于x的最小整数)
gen trunc(x)(取x的整数部分)
gen round(x)(对x进行四舍五入)
gen round(x,y)(以y为单位,对x进行四舍五入)
gen sqrt(x)(取x的平方根)
gen mod(x,y)(取x/y的余数)
gen reldif(x,y)(取x与y的相对差异,即|x-y|/(|y|+1))
gen logit(x)(取ln[x/(1-x)])
gen x=autocode(x,n,xmin,xmax)(将x的值域,即xmax-xmin,分为等距的n份)
gen x=cond(x1>x2,x1,x2)(若x1>x2成立,则取x1,若x1>x2不成立,则取x2)
sort x
gen gx=group(n)(将经过排序的变量x分为尽量等规模的n个组)
egen zx1=std(x1)(得出x1的标准值,就是用(x1-avgx1)/sdx1)
egen zx1=std(x1),m(0) s(1)(得出x1的标准分,标准分的平均值为0,标准差为1)
egen sdx1=sd(x1)(得出x1的标准差)
egen meanx1=mean(x1)(得出x1的平均值)
egen maxx1=max(x1)(最大值)
egen minx1=min(x1)(最小值)
egen medx1=med(x1)(中数)
egen modex1=mode(x1)(众数)
egen totalx1=total(x1)(得出x1的总数)
egen rowsd=sd(x1 x2 x3)(得出x1、x2和x3联合的标准差)
egen rowmean=mean(x1 x2 x3)(得出x1、x2和x3联合的平均值)
egen rowmax=max(x1 x2 x3)(联合最大值)
egen rowmin=min(x1 x2 x3)(联合最小值)
egen rowmed=med(x1 x2 x3)(联合中数)
egen rowmode=mode(x1 x2 x3) (联合众数)
egen rowtotal=total(x1 x2 x3)(联合总数)
egen xrank=rank(x)(在不改变变量x各个值排序的情况下,获得反映x值大小排序的xrank)
概率分布的计算:
(1)贝努利概率分布测试:
webuse quick
bitest quick==0.3,detail
(假设每次得到成功案例‘1’的概率等于0.3,计算在变量quick所显示的二项分布情况下,各种累计概率和单个概率是多少)
bitesti 10,3,0.5,detail
(计算当每次成功的概率为0.5时,十次抽样中抽到三次成功案例的概率:低于或高于三次成功的累计概率和恰好三次成功概率)
(2)泊松分布概率:
display poisson(7,6)
.44971106
(计算均值为7,成功案例小于等于6个的泊松概率)
display poissonp(7,6)
.14900278
(计算均值为7,成功案例恰好等于6个的泊松概率)
display poissontail(7,6)
.69929172
(计算均值为7,成功案例大于等于6个的泊松概率)
(3)超几何分布概率:
display hypergeometricp(10,3,4,2)
.3
(计算在样本总量为10,成功案例为3的样本总体中,不重置地抽取4个样本,其中恰好有2个为成功案例的概率)
display hypergeometric(10,3,4,2)
.96666667
(计算在样本总量为10,成功案例为3的样本总体中,不重置地抽取4个样本,其中有小于或等于2个为成功案例的概率)

转载请注明:数据分析 » stata的描述性统计和回归分析指令_stata描述性统计命令

stata如何做分组描述性统计_stata分组统计_stata 描述性统计

$
0
0

Stata如何做分组描述性统计

关键词:stata分组统计,stata 描述性统计

STATA做描述性统计可以用tabstat命令,如按照变量A进行分组描述性统计:tabstat   X1 X2 X3 , statistics(mean sd)  by(A),但如果想要在此基础上进一步按照B来进行分组描述怎么办?其中A存在后,B才能存在,即在A成立时按照是否存在B来进行分组描述。。。求指教!!!


假如A取值1或者0,想看A为1的情况下按B分组的描述统计情况,可以加if选项的。如:
tabstat   X1 X2 X3 if A==1, statistics(mean sd)  by(A)
不知楼主是要想要这样的吗?

你的公式是可行的,我的问题里,如果能显示出总的统计量的话,那么加了if后的统计量肯定是A为1时的统计量,不知道你还有什么命令能同时显示出统计量?

分两次做……


解答:tab (A B)


 

STATA如何做分组描述性统计

bysort命令,也可简写为bys,比如想以性别为类别分组做统计分析,bys 性别:后面再加统计描述的变量如sum,tab,mean,median等

转载请注明:数据分析 » stata如何做分组描述性统计_stata分组统计_stata 描述性统计

stata xsmle_xsmle做空间面板回归_stata 面板数据回归

$
0
0

stata xsmle_xsmle做空间面板回归

关键词:stata 面板数据回归,面板分位数回归 stata,stata面板回归

在用xsmle做空间面板回归时遇到了问题:

xsmle tl u r, re model(sdm) wmat(E:\temporary file\stata临时数据\weight.dta)
Only one spatial weighting matrix E:\temporary file\stata临时数据\weight.dta is allowed
invalid syntax
r(198);

请教大神怎么回事,我是按照例子写的,怎么出现这种错误?

最后提示Invalid  syntax表明语法错误。建议楼主用Matlab空间计量工具箱,目前Stata作空间计量的命令还存在一些局限。我试过了,Stata回归后不能给出LM、LR、Wald这些统计量的检验结果。


use weight.dta, clear
spmat dta W w*, id(id) normalize(row)
spmat save W using W.spmat
spmat use W using “W.spmat”
//w是你weight.dta文件中的变量名的第一个字母,比如你的变量名是V1,V2,V3等
wmat()括号里的要是存储在内存里的,最后一行的W

你好,请教怎么用spmat将excel的0-1矩阵生成wmat括号里面的文件啊?

把EXCEL的0-1矩阵以STATA数据格式表示,矩阵的每一列要相当于一个变量。


您好,看了您的帖子深受启发,有两个问题想向您请教一下:
一是,在用spmat命令生成“.spmat”文件时,原来的”.dta”文件中是不是必须要有一个表示代码的“id”变量?
二是,normalize(row)表示什么意思啊?
三是,如果我想用2010年中国各省人均GDP的一列数据,要生成经济空间权重矩阵,不知您能否给个stata程序?
四是,如果要计算1990-2010年期间的中国省级层面的C-D生产函数,那么用那一年的人均GDP做为计算经济空间权重矩阵的依据呢?

一,id变量可以不要。
二,normalize(row)表示行数据标准化,行的值加起来等于1。
三,对不起,此问题我不知道。
四,经济空间权重我没用过,不过按道理来讲是可以用多年的平均值。


 

转载请注明:数据分析 » stata xsmle_xsmle做空间面板回归_stata 面板数据回归

用stata的xsmle的命令做空间面板回归_缺失数据处理

$
0
0

我用stata的xsmle命令做空间面板数据回归

关键词:stata面板数据缺失值,stata 面板数据回归

提示数据不是highly balanced, 因为自变量有缺失值

我的数据缺失值比较多,是一定要用插值法补齐么?

不知道stata有没有其他的命令可以处理这种有缺失值的空间面板回归?

或者matlab,R有相关的程序?


最佳解答:

xsmle fits fixed or random effects spatial models for balanced panel data. however the mi    prefix command can be used xsmle in the unbalanced case. for example:

. webuse mheart5                                                              (1)

. mi set mlong                                                                (2)

. mi register imputed age bmi                                                 (3)

. set seed 29390                                                              (4)

. mi impute mvn age bmi = attack smokes hsgrad female, add(10)                (5)

. mi estimate: logistic attack smokes age bmi hsgrad female                   (6)

转载请注明:数据分析 » 用stata的xsmle的命令做空间面板回归_缺失数据处理

stata做空间计量回归SEM模型出不来结果的原因是什么

$
0
0

stata做空间计量回归SEM模型出不来结果的原因是什么

用stata做空间计量回归时,做SEM模型结果是,固定效应可以出来结果,做随机效应时会出现以下提示,如下图,可以用什么方法解决?Iteration 0:   Log-likelihood =  -13315.62  Iteration 1:   Log-likelihood = -13224.632
Iteration 2:   Log-likelihood = -13221.844  (backed up)
Iteration 3:   Log-likelihood = -13220.497  (backed up)
Iteration 4:   Log-likelihood = -13220.166  (backed up)
Iteration 5:   Log-likelihood = -13220.001  (backed up)
Iteration 6:   Log-likelihood =  -13219.99  (backed up)
Iteration 7:   Log-likelihood = -13219.988  (backed up)
Iteration 8:   Log-likelihood = -13219.987  (backed up)
numerical derivatives are approximate
nearby values are missing
Iteration 9:   Log-likelihood = -13219.986  (backed up)
numerical derivatives are approximate
nearby values are missing
Iteration 10:  Log-likelihood = -13219.986  (backed up)
numerical derivatives are approximate
nearby values are missing
Iteration 11:  Log-likelihood = -13219.986  (backed up)
numerical derivatives are approximate
nearby values are missing
Hessian is not negative semidefinite
r(430);
做其他的都可以出来,就是做SEM随机效应的时候出不来结果,求大神帮忙啊

你好 我用xsmle做SEM 结果显示Specify ematrix() option with SEM model invalid syntax 请问是我的空间权重矩阵有问题吗 但我用同样的,做sar就出来结果 能否解答一下 谢谢


精彩解答:好像是这样的 用sar和sdm模型时, 是xsmle y x1 x2, wmat(w)。 但是sem模型时 命令应该改为xsmle y x1 x2, emat(w)或者是dmat(w) 具体是那个我忘了 你试一下嘛 反正就是 命令中空间权重举证那有变化

转载请注明:数据分析 » stata做空间计量回归SEM模型出不来结果的原因是什么

Viewing all 94 articles
Browse latest View live