在stata中怎样对面板数据进行gmmguji

在stata中怎样对面板数据进行gmmguji,第1张

首先检验解释变量内生性(解释变量内生性的Hausman 检验:使用工具变量法的前提是存在内生解释变量。Hausman 检验的原假设为:所有解释变量均为外生变量,如果拒绝,则认为存在内生解释变量,要用IV;反之,如果接受,则认为不存在内生解释变量,应该使用OLS。

reg ldi lofdi

estimates store ols

xtivreg ldi (lofdi=l.lofdi ldep lexr)

estimates store iv

hausman iv ols

(在面板数据中使用工具变量,Stata提供了如下命令来执行2SLS:xtivreg depvar [varlist1] (varlist_2=varlist_iv) (选择项可以为fe,re等,表示固定效应、随机效应等。详见help xtivreg)

如果存在内生解释变量,则应该选用工具变量,工具变量个数不少于方程中内生解释变量的个数。“恰好识别”时用2SLS。2SLS的实质是把内生解释变量分成两部分,即由工具变量所造成的外生的变动部分,以及与扰动项相关的其他部分;然后,把被解释变量对中的这个外生部分进行回归,从而满足OLS前定变量的要求而得到一致估计量。tptqtp

二、异方差与自相关检验

在球型扰动项的假定下,2SLS是最有效的。但如果扰动项存在异方差或自相关,

面板异方差检验:

xtgls enc invs exp imp esc mrl,igls panel(het)

estimates store hetero

xtgls enc invs exp imp esc mrl,igls

estimates store homo

local df = e(N_g) - 1

lrtest hetero homo, df(`df')

面板自相关:xtserial enc invs exp imp esc mrl

则存在一种更有效的方法,即GMM。从某种意义上,GMM之于2SLS正如GLS之于OLS。好识别的情况下,GMM还原为普通的工具变量法;过度识别时传统的矩估计法行不通,只有这时才有必要使用GMM,过度识别检验(Overidentification Test或J Test):estat overid

三、工具变量效果验证

工具变量:工具变量要求与内生解释变量相关,但又不能与被解释变量的扰动项相关。由于这两个要求常常是矛盾的,故在实践上寻找合适的工具变量常常很困难,需要相当的想象力与创作性。常用滞后变量。

需要做的检验:

检验工具变量的有效性:

(1) 检验工具变量与解释变量的相关性

如果工具变量z与内生解释变量完全不相关,则无法使用工具变量法;如果与仅仅微弱地相关,。这种工具变量被称为“弱工具变量”(weak instruments)后果就象样本容量过小。检验弱工具变量的一个经验规则是,如果在第一阶段回归中,F统计量大于10,则可不必担心弱工具变量问题。Stata命令:estat first(显示第一个阶段回归中的统计量)

(2) 检验工具变量的外生性(接受原假设好)

在恰好识别的情况下,无法检验工具变量是否与扰动项相关。在过度识别(工具变量个数>内生变量个数)的情况下,则可进行过度识别检验(Overidentification Test),检验原假设所有工具变量都是外生的。如果拒绝该原假设,则认为至少某个变量不是外生的,即与扰动项相关。0H

Sargan统计量,Stata命令:estat overid

四、GMM过程

在Stata输入以下命令,就可以进行对面板数据的GMM估计。

. ssc install ivreg2 (安装程序ivreg2 )

. ssc install ranktest (安装另外一个在运行ivreg2 时需要用到的辅助程序ranktest)

. use "traffic.dta"(打开面板数据)

. xtset panelvar timevar (设置面板变量及时间变量)

. ivreg2 y x1 (x2=z1 z2),gmm2s (进行面板GMM估计,其中2s指的是2-step GMM)

某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 JavaScript 也提供了对 Cookies 的很全面的访问权利。 在继续之前,我们先要学一学 Cookie 的基本知识。 每个 Cookie 都是这样的:<cookie名>=<值><cookie名>的限制与 JavaScript 的命名限制大同小异,少了“不能用 JavaScript 关键字”,多了“只能用可以用在 URL 编码中的字符”。后者比较难懂,但是只要你只用字母和数字命名,就完全没有问题了。<值>的要求也是“只能用可以用在 URL 编码中的字符”。 每个 Cookie 都有失效日期,一旦电脑的时钟过了失效日期,这个 Cookie 就会被删掉。我们不能直接删掉一个 Cookie,但是可以用设定失效日期早于现在时刻的方法来间接删掉它。 每个网页,或者说每个站点,都有它自己的 Cookies,这些 Cookies 只能由这个站点下的网页来访问,来自其他站点或同一站点下未经授权的区域的网页,是不能访问的。每一“组”Cookies 有规定的总大小(大约 2KB 每“组”),一超过最大总大小,则最早失效的 Cookie 先被删除,来让新的 Cookie“安家”。 现在我们来学习使用 documentlastvisited=index 和 index.html。可以看到,两个 Cookies 之间是用分号和空格隔开的,于是我们可以用 cookieString.split('') 方法得到每个 Cookie 分开的一个数组(先用 var cookieString = document.cookie)。 设定一个 Cookie 的方法是对 document.cookie 赋值。与其它情况下的赋值不同,向 document.cookie 赋值不会删除掉原有的 Cookies,而只会增添 Cookies 或更改原有 Cookie。赋值的格式: 复制代码 代码如下:document.cookie = 'cookieName=' + escape('cookieValue') + 'expires=' + expirationDateObj.toGMTString()是不是看到头晕了呢?以上不是粗体字的地方是要照抄不误的,粗体字是要按实际情况做出改动的。cookieName 表示 Cookie 的名称,cookieValue 表示 Cookie 的值,expirationDateObj 表示储存着失效日期的日期对象名,如果不需要指定失效日期,则不需要第二行。不指定失效日期,则浏览器默认是在关闭浏览器(也就是关闭所有窗口)之后过期。 看到了上面的一些下划线了么?这些是应该注意的地方。 首先 escape() 方法:为什么一定要用?因为 Cookie 的值的要求是“只能用可以用在 URL 编码中的字符”。我们知道“escape()”方法是把字符串按 URL 编码方法来编码的,那我们只需要用一个“escape()”方法来处理输出到 Cookie 的值,用“unescape()”来处理从 Cookie 接收过来的值就万无一失了。而且这两个方法的最常用途就是处理 Cookies。其实设定一个 Cookie 只是“document.cookie = 'cookieName=cookieValue'”这么简单,但是为了避免在 cookieValue 中出现 URL 里不准出现的字符,还是用一个 escape() 好。 然后“expires”前面的分号:注意到就行了。是分号而不是其他。 最后 toGMTString() 方法:设定 Cookie 的时效日期都是用 GMT 格式的时间的,其它格式的时间是没有作用的。 现在我们来实战一下。设定一个“name=rose”的 Cookie,在 3 个月后过期。 复制代码 代码如下:var expires = new Date()expires.setTime(expires.getTime() + 3 * 30 * 24 * 60 * 60 * 1000)/* 三个月 x 一个月当作 30 天 x 一天 24 小时 x 一小时 60 分 x 一分 60 秒 x 一秒 1000 毫秒 */ document.cookie = 'name=roseexpires=' + expires.toGMTString()为什么没有用 escape() 方法?这是因为我们知道 rose 是一个合法的 URL 编码字符串,也就是说,'rose' == escape('rose')。一般来说,如果设定 Cookie 时不用 escape(),那获取 Cookie 时也不用 unescape()。 再来一次:编写一个函数,作用是查找指定 Cookie 的值。 复制代码 代码如下:function getCookie(cookieName) { var cookieString = document.cookievar start = cookieString.indexOf(cookieName + '=')// 加上等号的原因是避免在某些 Cookie 的值里有 // 与 cookieName 一样的字符串。 if (start == -1) // 找不到 return nullstart += cookieName.length + 1var end = cookieString.indexOf('', start)if (end == -1) return unescape(cookieString.substring(start))return unescape(cookieString.substring(start, end))} 这个函数用到了字符串对象的一些方法,如果你不记得了(你是不是这般没记性啊),请快去查查。这个函数所有的 if 语句都没有带上 else,这是因为如果条件成立,程序运行的都是 return 语句,在函数里碰上 return,就会终止运行,所以不加 else 也没问题。该函数在找到 Cookie 时,就会返回 Cookie 的值,否则返回“null”。 现在我们要删除刚才设定的 name=rose Cookie。 复制代码 代码如下:var expires = new Date()expires.setTime(expires.getTime() - 1)document.cookie = 'name=roseexpires=' + expires.toGMTString()可以看到,只需要把失效日期改成比现在日期早一点(这里是早 1 毫秒),再用同样的方法设定 Cookie,就可以删掉 Cookie 了。

我只是根据自己的想法写的,希望有用。

#include<stdio.h>

struct a

{

double l

char s[4]

}

int main()

{

struct a m

while(scanf("%lf%s",&m.l,&m.s)!=EOF)

{

if(strcmp(m.s,"mm")==0)

{

printf("%gcm\n",m.l/10)

printf("%gm\n",m.l/1000)

printf("%gkm\n",m.l/1000000)

}

else if(strcmp(m.s,"cm")==0)

{

printf("%gmm\n",m.l*10)

printf("%gm\n",m.l/100)

printf("%gkm\n",m.l/100000)

}

else if(strcmp(m.s,"m")==0)

{

printf("%gmm\n",m.l*1000)

printf("%gcm\n",m.l*100)

printf("%gkm\n",m.l/1000)

}

else if(strcmp(m.s,"km")==0)

{

printf("%gmm\n",m.l*1000000)

printf("%gcm\n",m.l*100000)

printf("%gm\n",m.l*1000)

}

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11438474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存