情节没有显示CDF

时间:2017-03-16 19:19:22

标签: r plot

我试图在同一个图上绘制不同方程的一些累积分布函数,这是我写的代码:

library (triangle)
library(lattice)
library(latticeExtra)
n = 1000

W1 = rtriangle(n,3128,3250)
W2 = rtriangle(n,3065,3149)
SO = rtriangle(n,0.2,0.3)

MCtab <- data.frame(W1,W2,SO)

set.seed(1)
for (n in 1:n) {
NPV30 <- (1*W1 + 2*W2 + 3*SO )}

set.seed(1)
for (n in 1:n) {
NPV50 <- ecdf((4*W1 + 5*W2 + 6*SO ))}  
set.seed(1)
for (n in 1:n) {
NPV70 <- ecdf((7*W1 + 8*W2 + 9*SO))} 

MCtab2 <- data.frame(NPV30,NPV50,NPV70)



plot(NPV30, verticals=TRUE, main= 'Polymer NPV CDF', do.points=FALSE, col='red')
plot(NPV50, verticals=TRUE, do.points=FALSE, add=TRUE, col='brown')
plot(NPV70, verticals=TRUE, do.points=FALSE, add=TRUE, col='orange')

只有一个图表似乎无法弄清楚为什么,或者如果有人有更好的方法会很棒。感谢

1 个答案:

答案 0 :(得分:0)

我假设示例代码中的ecdf作业前面缺少NPV30。我认为它没有显示值的实际原因是plot.ecdf方法根本不支持add参数。但你可以轻松地自己动手。

您为函数选择的值给出了不同的分布,累积分布图非常无聊 - 只是矩形。因此,我调整了NPV50NPV70的定义值,以使三个分布更相似。

所以这是我使用的代码:

library (triangle)
library(lattice)
library(latticeExtra)
n = 50

W1 = rtriangle(n,3128,3250)
W2 = rtriangle(n,3065,3149)
SO = rtriangle(n,0.2,0.3)

MCtab <- data.frame(W1,W2,SO)

set.seed(1)
for (n in 1:n) {
  NPV30 <- ecdf((1*W1 + 2*W2 + 3*SO ))}

set.seed(1)
for (n in 1:n) {
  NPV50 <- ecdf((1*W1 + 2.2*W2 + 3.1*SO ))}  
set.seed(1)
for (n in 1:n) {
  NPV70 <- ecdf((1*W1 + 2.4*W2 + 3.2*SO))} 

MCtab2 <- data.frame(NPV30,NPV50,NPV70)

qNPV30 <- quantile(NPV30)
qNPV50 <- quantile(NPV50)
qNPV70 <- quantile(NPV70)
xmin <- min(c(qNPV30[1],qNPV50[1],qNPV70[1]))
xmax <- max(c(qNPV30[5],qNPV50[5],qNPV70[5]))
xdlt <- xmax-xmin

npts <- 200
x <- (1:npts)*xdlt/npts + xmin
y30 <- NPV30(x)
y50 <- NPV50(x)
y70 <- NPV70(x)

plot(x,y30,main= 'Polymer NPV CDF',xlim=c(xmin,xmax),type='l',col='red')
lines(x,y50,xlim=c(xmin,xmax),type='l',col='blue',add=T)
lines(x,y70,xlim=c(xmin,xmax),type='l',col='green',add=T)

#plot(NPV30, verticals=TRUE, main= 'Polymer NPV CDF', do.points=FALSE, col='red')
#plot(NPV50, verticals=TRUE, do.points=F, add=TRUE, col='blue')
#plot(NPV70, verticals=TRUE, do.points=F, add=TRUE, col='green')

以下是结果输出:

enter image description here