Я расследую определенные эффекты в семье / между партнерами. У меня paneldata (человеко-летний) для нескольких переменных и идентификатор партнера. Я хотел бы регрессировать результат человека в зависимых вариабельных ценностях своего партнера. Я не знаю, как сделать эту спецификацию в Stata.

* Example generated by -dataex-. To install: ssc install dataex
clear
input float(year id pid y x)
1 1 3  9  2
2 1 3 10  4
3 1 . 11  6
1 2 4 20  2
2 2 4 21  6
3 2 3 22  7
1 3 1 25  5
2 3 1 30 10
3 3 2 35 15
1 4 2 20  4
2 4 2 30  6
3 4 . 40  8
end

* pooled regression
reg y x

* fixed effects regression
xtset year id
xtreg y x, fe

Я могу сделать объединение и регрессионные эффекты. Но даже для объединения / простых регрессии, как я могу регрессировать некоторые результаты на чужой независимой переменной?

На самом деле для человека 1 мне нужно регрессировать 9/10/11 на 5/10 /. и так далее.

  • Человек 2: регресс 20/21/22 на 4/6/15
  • Человек 3: регресс 25/30/35 на 2/4/7
  • Человек 4: регресс 20/30/40 на 2/6 /.

<Сильная> идея : если в функции {regress нет, я думаю, я мог бы создать новые переменные для каждой независимой переменной у меня и имени x_partner. В этом примере x_partner должен содержать 5,10 ,, 4,6,15,2,4,7,2,6. Но я до сих пор не знаю, как это достичь.

bysort id (year): egen x_partner = x[pid] // rough idea
1
Marco 26 Сен 2019 в 12:06

1 ответ

Лучший ответ

Грубая идея не будет работать. egen нуждается в одной из его собственных функций, указанных, и в одиночку делает синтаксис незаконным.

Но сущность здесь состоит в том, чтобы посмотреть ценности партнера и поставить новые переменные, выровненные с каждым идентификатором.

Спасибо за использование dataex.

rangestat От SSC, команду, внесенного сообществ, обеспечивает однострочное решение. Рассмотреть возможность

* Example generated by -dataex-. To install: ssc install dataex
clear
input float(year id pid y x)
1 1 3  9  2
2 1 3 10  4
3 1 . 11  6
1 2 4 20  2
2 2 4 21  6
3 2 3 22  7
1 3 1 25  5
2 3 1 30 10
3 3 2 35 15
1 4 2 20  4
2 4 2 30  6
3 4 . 40  8
end

ssc install rangestat 

rangestat wanted_y=y wanted_x=x if !missing(id, pid), interval(id pid pid) by(year) 

list, sepby(id) 

     +-------------------------------------------------+
     | year   id   pid    y    x   wanted_y   wanted_x |
     |-------------------------------------------------|
  1. |    1    1     3    9    2         25          5 |
  2. |    2    1     3   10    4         30         10 |
  3. |    3    1     .   11    6          .          . |
     |-------------------------------------------------|
  4. |    1    2     4   20    2         20          4 |
  5. |    2    2     4   21    6         30          6 |
  6. |    3    2     3   22    7         35         15 |
     |-------------------------------------------------|
  7. |    1    3     1   25    5          9          2 |
  8. |    2    3     1   30   10         10          4 |
  9. |    3    3     2   35   15         22          7 |
     |-------------------------------------------------|
 10. |    1    4     2   20    4         20          2 |
 11. |    2    4     2   30    6         21          6 |
 12. |    3    4     .   40    8          .          . |
     +-------------------------------------------------+
1
Nick Cox 26 Сен 2019 в 12:44