不确定我在哪里可以得到帮助,因为这个确切的帖子在StackExchange上被认为是偏离主题的。
我想根据平衡小组进行一些回归,其中巴西的选举数据主要针对2个时间段。我想了解,如果立法改变禁止向候选人提供坚定的捐款,那些最依赖这些资源的人获得当选的可能性就会降低。
我已经在R上运行了这样的回归:
model_continuous <- plm(percentage_of_votes ~ time +
treatment + time*treatment, data = dataset, model = 'fd')
在这个模型上,我使用连续变量(投票百分比)作为我的因变量。我的treatment
单位或time = 0
中没有来自公司的广告系列贡献的单位。
现在我想更改我的因变量,以便它是一个二进制变量,表明候选人是否在那一年当选。我的所有单位都是在time = 0
选出的。如何使用固定效果估算logit
或probit
模型?我尝试使用R。
pglm
包
model_binary <- pglm(dummy_elected ~ time + treatment + time*treatment,
data = dataset,
effects = 'twoways',
model = 'within',
family = 'binomial',
start = NULL)
但是,我收到了这个错误:
Error in maxRoutine(fn = logLik, grad = grad, hess = hess, start = start, :
argument "start" is missing, with no default
为什么会这样?我的模特有什么问题?它在概念上是否正确? 我希望第二次回归与第一次回归尽可能相似。
我已经读过clogit
包中的survival
函数可以完成这项工作,但我不知道该怎么做。
修改:
这是样本数据集的样子:
dataset <- data.frame(individual = c(1,1,2,2,3,3,4,4,5,5),
time = c(0,1,0,1,0,1,0,1,0,1),
treatment = c(0,0,1,1,0,0,1,1,0,0),
corporate = c(0,0,0.1,0,0,0,0.5,0,0,0))
答案 0 :(得分:1)
根据评论,我认为逻辑回归减少到治疗和dummy_elected。因此,我制作了以下数据集:
dataset <- data.frame("treatment" = c(rep(1,1000),rep(0,1000)),
"dummy_elected" = c(rep(1, 700), rep(0, 300), rep(1, 500), rep(0, 500)))
然后我运行了GLM模型:
library(MASS)
model_binary <- glm(dummy_elected ~ treatment, family = binomial(), data = dataset)
summary(model_binary)
注意治疗系数是显着的并且给出系数。因此产生的概率
Probability(dummy_elected) = 1 => 1 / (1 + Exp(-(1.37674342264577E-16 + 0.847297860386033 * :treatment)))
Probability(dummy_elected) = 0 => 1 - 1 / (1 + Exp(-(1.37674342264577E-16 + 0.847297860386033 * :treatment)))
请注意,这些概率与我生成数据的频率一致。
因此,对于每一行,取上述两个等式的最大概率,这是dummy_elected的值。