从cdplot()中提取x和y值

时间:2013-12-29 13:14:07

标签: r

如何使用y

x的任意值提取每个因子cdplot(y~x)的确切概率

由于

2 个答案:

答案 0 :(得分:1)

这是getS3method('cdplot','default')的简单版本:

get.props <- function(x,y,n){
  ny <- nlevels(y)
  yprop <- cumsum(prop.table(table(y)))
  dx <- density(x, n )
  y1 <- matrix(rep(0, n * (ny - 1L)), nrow = (ny - 1L))
  rval <- list()
  for (i in seq_len(ny - 1L)) {
    dxi <- density(x[y %in% levels(y)[seq_len(i)]], 
                        bw = dx$bw, n = n, from = min(dx$x), to = max(dx$x))
    y1[i, ] <- dxi$y/dx$y * yprop[i]
  }
}

答案 1 :(得分:1)

根据?cdplot的帮助文件中的示例,您可以执行...

## NASA space shuttle o-ring failures
fail <- factor(c(2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1,
                 1, 2, 1, 1, 1, 1, 1),
               levels = 1:2, labels = c("no", "yes"))
temperature <- c(53, 57, 58, 63, 66, 67, 67, 67, 68, 69, 70, 70,
                 70, 70, 72, 73, 75, 75, 76, 76, 78, 79, 81)

## CD plot
result <- cdplot(fail ~ temperature)

这是从cdplot输出中获取概率的简单方法。

# Getting the probabilities for each group.
lapply(split(temperature, fail), result[[1]])
$no
 [1] 0.8166854 0.8209055 0.8209055 0.8209055 0.8090438 0.7901473 0.7718317 0.7718317 0.7579343
[10] 0.7664731 0.8062898 0.8326761 0.8326761 0.8905854 0.9185472 0.9626185

$yes
[1] 3.656304e-05 6.273653e-03 1.910046e-02 6.007471e-01 7.718317e-01 7.718317e-01 8.062898e-01

请注意,resultfail无形返回的条件密度函数(累计超过cdplot),因此我们可以将temperature除以fail使用lapply将返回的函数应用于这些值。