Статистическая регрессия с условиями для манекенов и значений переменных - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь создать регрессию, которая включала бы полином (скажем, 2-й порядок) year на определенном интервале year (скажем, от 1 до 70) и ряд манекенов для определенных значений year (скажем, для каждого year между 45 и 60).

Если бы у меня не было ограничений для манекенов, я думаю, что команды будут такими:

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 голосов
/ 09 мая 2018

Я не уверен, почему Перли доставляет вам такие тяжелые времена, думаю, это может быть то, что вы ищете, но дайте мне знать, если это что-то другое:

Стоит отметить, что я использую набор данных, который поставляется с предустановленной Stata, и это обычно хороший способ сделать 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 [что-то]

Это дает вам диапазон для фиктивных переменных и диапазон для переменных года.

Что касается вашего вопроса об использовании x против года, я только предполагаю, но я думаю, что когда вы используете x, он непрерывный, так как Stata не смотрит на ваши переменные, а вместо этого только на ось x, тогда как ваша переменная года является дискретным (набор целых чисел), поэтому он больше похож на шаговую функцию. Дополнительную информацию можно найти с помощью команды help twoway function

...