在R中的另一个变量的参数下绘制一个自变量

时间:2015-04-23 21:55:11

标签: r plot regression

我有一个功能

    predictshrine<-0*rain-399.8993+5*crops+50.4296*log(citysize)+
    4.5071*wonders*chief+.02301*children*deaths+1.806*children+
   .10799*deaths-2.0755*wonders-.0878*children^2+.001062*children^3-
   .000004288*children^4-.009*deaths^2+.0000530238*deaths^3+
   7.974*sqrt(children)+.026937*wonders^2-.0001305*wonders^3

我也有序列

    children<-seq(0,100,length=500)

和for循环

    for(deaths in c(0,5,10,50,100,200))

现在我想做的是能够在死亡等于一定数量的情况下绘制预测神殿与儿童的关系,并使用par(mfrow)函数同时显示这些图表

我有

    plot(predictshrine, children)

我希望能够在死亡= 0,死亡= 10,死亡= 50等时执行此功能。

这样我可以有6个不同的图表来显示回归的变化

理想情况下,我可以做类似

的事情
    plot(predictshrine, children, when deaths = 10 & 20 & 50)

但那不会像代码一样工作。

我想将我的4循环纳入等式。

为了说清楚,死亡和儿童是我的多变量方程中的两个变量

提前致谢

-Max

1 个答案:

答案 0 :(得分:1)

您可以使用mapply迭代多个参数。请记住,如果要执行此操作,则需要定义所有其他变量。此外,这不是最节省内存的方式,但它适用于较小尺寸的组合。

predictshrine<- function(rain,citysize,wonders,chief,children,deaths,crops) {
    0*rain-399.8993+5*crops+50.4296*log(citysize)+
    4.5071*wonders*chief+.02301*children*deaths+1.806*children+
    .10799*deaths-2.0755*wonders-.0878*children^2+.001062*children^3-
    .000004288*children^4-.009*deaths^2+.0000530238*deaths^3+
    7.974*sqrt(children)+.026937*wonders^2-.0001305*wonders^3
}

deathlist = c(0,5,10,50,100,200)
#note that the children value is recycled
res = mapply(predictshrine,children = 1:100,deaths = 
 rep(deathlist,each = 100),
 rain = 0.1, wonders = 1, chief = 1, crops = 0.5,citysize = 1000)

然后你可以画六次。

#allow six plots on the panel if you want
par(mfrow = c(3,2))
#loop through different plots
for (i in 1:6)
    plot(1:100,res[1:100 + (i-1)*100])

这就是它的样子

enter image description here