尝试运行固定效果逻辑回归时出错

时间:2017-09-12 22:51:57

标签: r regression logistic-regression plm

不确定我在哪里可以得到帮助,因为这个确切的帖子在StackExchange上被认为是偏离主题的。

我想根据平衡小组进行一些回归,其中巴西的选举数据主要针对2个时间段。我想了解,如果立法改变禁止向候选人提供坚定的捐款,那些最依赖这些资源的人获得当选的可能性就会降低。

我已经在R上运行了这样的回归:

model_continuous <- plm(percentage_of_votes ~ time + 
                        treatment + time*treatment, data = dataset, model = 'fd')

在这个模型上,我使用连续变量(投票百分比)作为我的因变量。我的treatment单位或time = 0中没有来自公司的广告系列贡献的单位。

现在我想更改我的因变量,以便它是一个二进制变量,表明候选人是否在那一年当选。我的所有单位都是在time = 0选出的。如何使用固定效果估算logitprobit模型?我尝试使用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))

1 个答案:

答案 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的值。