2015-05-03 66 views
0

我正在嘗試使用ggplot2來繪製一些基本的模擬和多變量回歸模型,但無所適從。在ggplot2中使用Zelig,繪圖模擬和模型

我使用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 

` 這沒有奏效。我得到了一個錯誤

"Error: measure variables not found in data: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) 

回答

0

它看起來像從您的來電melt導致的錯誤。

請注意,在第二行代碼AppMod1 <- data.frame(AppMod1$ev)中,您將覆蓋您在第一行代碼AppMod1 <- (s1$qi)中所做的分配。因此,在這兩行代碼AppMod1之後等於具有單列ev的數據幀。

現在melt試圖融化這個數據幀,並且調用melt表示有86列measure.vars,實際上在數據幀中只有一列。這會導致你描述的錯誤。

我不能從代碼中知道你期望AppMod1的樣子。當我運行你的代碼時,s1$qi只包含NULL值。至少,您需要AppMod1才能包含approveyear的列,以便您的ggplot代碼按照書面方式工作。

希望這是足夠的信息去現在。如果您在撥打melt之前和之後顯示您期望AppMod1的外觀,提供更多幫助將會更加容易。

0

非常感謝PP。

我只是想能夠在ggplot中繪製模擬結果(s1)。我從博客中獲得了所有這些代碼,並且一遍又一遍地得到錯誤。 我確實看到你在說關於AppMod1是多餘的。 s1在這一點上不包括「年」,所以我會解決這個問題並嘗試運行它。

+0

我想出了該做什麼,並將它發佈給任何正在尋找未來的人,這包括我的模擬。你需要上傳Rcurl,reshape2,gridextra。 (平價,平價x = x) - 平均價格(平均價格) - 平均價格(平均價格) (AppMod1 $ ev)AppMod1 < - (s3 $ qi)AppMod1 < - (AppMod1 $ ev)AppMod1 < - as.matrix(AppMod1)AppMod1 <-as.data。(AppMod1)AppMod1 < - melt(AppMod1,measure = 1:30)AppModP <-ggplot(AppMod1,aes(variable,value))+ geom_point()+ geom_smooth(aes(group = 1),size = 2)+ xlab(「油價」)+ ylab(「批准的E(Y | X)」)+ theme_tufte()AppModP' – Sarah

相關問題