不知道从哪里可以得到帮助,因为这个确切的帖子在StackExchange上被认为是题外话。
我想基于一个平衡的面板进行一些回归分析,其中巴西的选举数据集中在两个时间段上。我想了解的是,在一项禁止对候选人的坚定捐赠的立法变更之后,那些最依赖这些资源的人当选的可能性较低。
我已经在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))
最佳答案
根据评论,我认为逻辑回归可简化为处理和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的值。
关于r - 尝试运行固定效应逻辑回归时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46186420/