Рассмотрим следующий набор тестовых данных с использованием R:
testdat<-data.frame("id"=c(rep(1,5),rep(2,5),rep(3,5)),
"period"=rep(seq(1:5),3),
"treat"=c(c(0,1,1,1,0),c(0,0,1,1,1),c(0,0,1,1,1)),
"state"=c(rep(0,5),c(0,1,1,1,1),c(0,0,0,1,1)),
"int"=c(rep(0,13),1,1))
testdat
id period treat state int
1 1 1 0 0 0
2 1 2 1 0 0
3 1 3 1 0 0
4 1 4 1 0 0
5 1 5 0 0 0
6 2 1 0 0 0
7 2 2 0 1 0
8 2 3 1 1 0
9 2 4 1 1 0
10 2 5 1 1 0
11 3 1 0 0 0
12 3 2 0 0 0
13 3 3 1 0 0
14 3 4 1 1 1
15 3 5 1 1 1
Первые 4 переменные - это то, что у меня есть, int
- это переменная, которую я хочу сделать. Это похоже на взаимодействие между treat
и state
, но оно будет включать 1 с в строках 8-10, что нежелательно. По сути, я хочу взаимодействия только тогда, когда state
изменяется в течение treat
, но не иначе. Любые мысли о том, как создать это (особенно в крупном масштабе для набора данных с миллионом наблюдений)?
Редактировать: Для пояснения, почему я хочу эту меру. Я хочу запустить что-то вроде следующей регрессии:
lm(outcome~treat+state+I(treat*state))
Но я действительно заинтересован во взаимодействии, только когда treat
перекрывает изменение state
. Если бы я запустил вышеупомянутую регрессию, I(treat*state)
объединяет эффект взаимодействия, в котором я заинтересован, и когда treat
равен 1 полностью, а state
равен 1. Теоретически, я думаю, что это будет иметь два разных эффекта, поэтому Мне нужно разбить их на части. Я надеюсь, что это имеет смысл, и я рад предоставить дополнительную информацию.