使用zelig进行模拟

时间:2016-04-28 11:41:54

标签: r package regression simulation

我对包Zelig非常困惑,尤其是函数sim。 我想要做的是使用我的数据子集估计逻辑回归,然后估计剩余数据的拟合值,以查看估计的执行情况。一些示例代码如下:

  

数据(道岔)

     

投票率< - data.table(投票率)

     

随机播放数据

     

投票率< - 投票率[样本(.N,2000)]

     

创建回归样本

     

turnout_sample< - turnout [1:1800,]

     

为数据外测试创建样本

     

turnout_sample2< - turnout [1801:2000,]

     

运行回归

     

z.out1< - zelig(投票〜年龄+种族,模特=" logit",data = turnout_sample)

     

摘要(z.out1)   型号:

呼叫: z5 $ zelig(公式=投票〜年龄+种族,数据= turnout_sample)

Deviance Residuals:     Min 1Q Median 3Q Max
-1.9394 -1.2933 0.7049 0.7777 1.0718

系数:             估计标准。误差z值Pr(> | z |) (截距)0.028874 0.186446 0.155 0.876927 年龄0.011830 0.003251 3.639 0.000274 racewhite 0.633472 0.142994 4.430 0.00000942

(二项式族的色散参数为1)

Null deviance: 2037.5  on 1799  degrees of freedom

剩余偏差:2002.9对1797自由度 AIC:2008.9

Fisher评分迭代次数:4

下一步:使用' setx'方法

  

将x值设置为剩余的200个观察值

     

x.out1< - setx(z.out1,fn = NULL,data = turnout_sample2)

     

模拟

     

s.out1< - sim(z.out1,x = x.out1)

     

获取拟合值

     

fit< - s.out1 $ getqi(" ev")

我不明白的是,现在安装的列表包含1000个值,所有值都在0,728和0,799之间。 1.当我想要估算的是200个观测值的拟合值时,为什么有1000个值? 2.为什么观察结果如此紧密分组?

我希望有人能帮助我。

祝你好运

1 个答案:

答案 0 :(得分:0)

第一个问题:
simsim(obj, x = NULL, x1 = NULL, y = NULL, num = 1000 ..)的签名中,您会看到默认的模拟数量为1000.如果您想拥有200,请设置{{1 }}。

但是,您使用此example from documentation中的num=200实际上会生成(模拟)某人投票给定某些值的概率(由sim计算或计算并固定在某些值上,如这setx)。

因此,在您的情况下,您有1000个模拟概率值介于0,728和0,799之间,这是您应该得到的。