我对包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.为什么观察结果如此紧密分组?
我希望有人能帮助我。
祝你好运
答案 0 :(得分:0)
第一个问题:
从sim
(sim(obj, x = NULL, x1 = NULL, y = NULL, num = 1000
..)的签名中,您会看到默认的模拟数量为1000.如果您想拥有200,请设置{{1 }}。
但是,您使用此example from documentation中的num=200
实际上会生成(模拟)某人投票给定某些值的概率(由sim
计算或计算并固定在某些值上,如这setx
)。
因此,在您的情况下,您有1000个模拟概率值介于0,728和0,799之间,这是您应该得到的。