Stata回归与假人和变量值的条件

时间:2018-05-08 16:34:10

标签: regression stata dummy-variable multiple-conditions two-way

我正在尝试创建一个回归,其中包含year的{​​{1}}的多项式(假设为二阶),并且在year的某个时间间隔(例如1到70)和一些虚拟对象year的某些值(比如45到60之间的每year个)。

如果我没有对傻瓜的限制,我相信命令会是:

gen year2=year^2
regress y year year2 i.year if inrange(year,1,70)

我不能手动制作假人,最后会有超过15个)。请问有人帮帮我吗?

如果我想在没有傻瓜的情况下绘制估计的功能,为什么这两个会带来不同的东西?

twoway function _b[_cons] +_b[year]*x + _b[year2]*x^2, range(1 70)

twoway function _b[_cons] +_b[year]*year + _b[year2]*year^2, range(1 70)

我理解它的方式,_b[_cons]_b[year]_b[year2]调用先前为相应自变量计算的系数,然后将它们与它们相乘。如果在这种情况下x应与year相同,为什么它会带来不同的结果?

1 个答案:

答案 0 :(得分:-1)

我不确定为什么Pearly会给你这么难的时间,我想这可能就是你想要的,但是如果它有所不同,请告诉我:

有一点需要注意,我正在使用预先加载Stata的数据集,这通常是制作像Nick这样的MVCE的好方法。

clear
sysuse gnp96
/* variables: gnp, date (quarterly) */
gen year = year(dofq(date)) // get yearly variable
gen year2=year^2 // get the square of the yearly variable
tab year if inrange(year,1970,1975), gen(yr) // generate dummy variables
// the dummy varibales generated have null values for years not 
// in the specified range, so we're going to fill those in
foreach v of varlist yr* {
    replace `v' = 0 if `v' == .
}

// here's your regression
regress gnp year year2 yr* if inrange(year,1967,1990)

现在,yr *是你的虚拟变量,*是一个通配符,调用所有名为yr [something]的变量

这为您提供虚拟变量的范围和年变量的范围。

关于使用x vs year的问题,我只是假设,但我认为当你使用x时它是连续的,因为Stata没有查看你的变量,而只是在x轴而你的年变量是离散的(一堆整数)所以它看起来更像是一个阶梯函数。可以使用命令help twoway function

找到更多信息