0

我试图用来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)
4

1 回答 1

0

看起来错误是由于您调用melt.

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

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

我无法从您的代码中完全看出您期望AppMod1的样子。当我运行您的代码时,s1$qi仅包含NULL值。至少,您需要AppMod1包含列,approve以便year您的ggplot代码按所写的方式工作。

希望这是足够的信息,现在可以继续。如果您AppMod1在调用melt.

于 2015-05-04T00:56:56.133 回答