使用Zelig和ggplot2,绘制模拟和模型

时间:2015-05-03 23:11:59

标签: r ggplot2 r-zelig

我正在尝试使用ggplot2绘制一些基本模拟和多变量回归模型的图表,但我不知所措。

我正在使用Zelig 3.5(因为较新的Zeligs有模拟故障)

根据我发现的博客,我试过这个

AppMod1 <- (s1$qi)
AppMod1 <- data.frame(AppMod1$ev)

AppMod1 <- melt(AppMod1,     measure=1:86)
AppMod1 <- ggplot(AppMod1, aes(approve, year)) +
                 geom_point() +
                 geom_smooth(colour="blue") +
                 theme_tufte()
AppMod1

` 这没用。我收到了一个错误

  

“错误:测量数据中未找到的变量:NA”

我的模型是m1,m2和m3,我的模拟是m1和m2。我正在使用Zelig中的“批准”数据集。

模型计算如下

data(approval)
m1 <- zelig(approve~avg.price, model="ls", data=approval)
m2 <- zelig(approve~avg.price+sept.oct.2001+iraq.war, model="ls", data=approval)
m3 <- zelig(approve~avg.price+sept.oct.2001+avg.price:sept.oct.2001, model="ls", data=approval)

模拟是

x1 <- setx(m2, sept.oct.2001= 1)
s1 <- sim(m2, x=x1)
summary(s1)

x1 <- setx(m2, sept.oct.2001= 0)
s1 <- sim(m2, x=x1)
summary(s1)

oilprice <- min(approval$avg.price):max(approval$avg.price)
x2 <- setx(m2, sept.oct.2001=0, avg.price=oilprice)
s2 <-sim (m2, x=x2)
plot.ci(s2)

oilprice <- min(approval$avg.price):max(approval$avg.price)
x2 <- setx(m2, sept.oct.2001=1, avg.price=oilprice)
s2 <-sim (m2, x=x2)
plot.ci(s2)

1 个答案:

答案 0 :(得分:0)

看起来您拨打melt时出错了。

请注意,在第二行代码AppMod1 <- data.frame(AppMod1$ev)中,您将覆盖您在第一行代码AppMod1 <- (s1$qi)中所做的分配。因此,在这两行代码AppMod1等于具有单列ev的数据框之后。

现在melt尝试融合此数据框,并且对melt的调用表明有measure.vars的86列,而实际上数据框中只有一列。这会导致您描述的错误。

我无法从您的代码中了解您期望AppMod1看起来像什么。运行代码时,s1$qi仅包含NULL个值。至少,您需要AppMod1包含approveyear的列,以便您的ggplot代码按照书面形式工作。

希望这是足够的信息,现在继续。如果您在调用AppMod1之前和之后显示期望melt的内容,将会更容易提供其他帮助。