首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用R结合不同区域的两个向量

用R结合不同区域的两个向量
EN

Stack Overflow用户
提问于 2014-10-01 11:19:24
回答 2查看 473关注 0票数 0

我试图使用R来评估一个简单预测模型的性能,方法是将预测结果离散为定义的区间,然后将它们与相应的实际值(Binned)进行比较。

我有两个向量,实际预测,如下所示:

代码语言:javascript
复制
> actual <- c(0,2,0,0,41,1,3,5,2,0,0,0,0,0,6,1,0,0,15,1)
> predicted <- c(3.38,98.01,3.08,4.89,31.46,3.88,4.75,4.64,3.11,3.15,3.42,10.42,3.18,5.73,4.20,3.34,3.95,5.94,3.99)

我要在这里表演。首先,将实际值分解/离散为不同的级别,例如: 0-5:第1 ** 6-10级:第2*41-45级:第9级。

现在,我不得不将“预测”的值也放入上面提到的桶中。我试图使用R中的cut()函数来实现这一点:

代码语言:javascript
复制
binCount <- 5
binActual <- cut(actual,labels=1:binCount,breaks=binCount)
binPred <- cut(predicted,labels=1:binCount,breaks=binCount)

但是,如果您看到预测中的第二个元素(98.01)被标记为5,但它实际上并不在所期望的间隔内。我觉得用一个不同的binCount预测的不会help.Can,请给出一个解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-01 11:43:22

我不能百分之百肯定你想做什么。

然而,据我所知,您希望返回每个向量的每个元素,以及它所在的类。给定一组考虑两个向量中任意一个值的类,实际值和预测值。

如果这是您想要做的,那么您的脚本(正如您所说的)将为0到45之间的值创建类。通过这个切分,你可以给你的第一个向量分类。

然后,为预测的向量创建一组新的类。分类已经不一样了。

假设我理解你想做的事,我宁愿写:

代码语言:javascript
复制
actual <- c(0,2,0,0,41,1,3,5,2,0,0,0,0,0,6,1,0,0,15,1)
predicted <- c(3.38,98.01,3.08,4.89,31.46,3.88,4.75,4.64,3.11,3.15,3.42,10.42,3.18,5.73,4.20,3.34,3.95,5.94,3.99)

temporary = c(actual, predicted)
maxi <- max(temporary)
mini <- min(temporary)
binCount <- 5
s <- seq(maxi, mini, length.out = binCount)
s = sort(s)

binActual <- cut(actual,breaks=s, include.lowest = T, labels = 1:(length(s)-1))
binPred <- cut(predicted,breaks=s, include.lowest = T, labels = 1:(length(s)-1))

它规定:

代码语言:javascript
复制
> binActual
 [1] 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Levels: 1 2 3 4

> binPred
 [1] 1 4 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Levels: 1 2 3 4

我不确定这是你要找的,所以告诉我,我也许能帮你。谨致问候。

票数 2
EN

Stack Overflow用户

发布于 2014-10-01 11:46:16

这是你想要的吗?

代码语言:javascript
复制
intervals <- cbind(seq(0, 40, length = 9), seq(5, 45, length = 9))

cutFixed <- function(x, intervals) {
    sapply(x, function(x) ifelse(x < min(intervals) | x >= max(intervals), NA, which(x >= intervals[,1] & x < intervals[,2])))
}

这将给出以下结果

代码语言:javascript
复制
> cutFixed(actual, intervals)
 [1] 1 1 1 1 9 1 1 2 1 1 1 1 1 1 2 1 1 1 4 1
> cutFixed(predicted, intervals)
 [1]  1 NA  1  1  7  1  1  1  1  1  1  3  1  2  1  1  1  2  1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26140151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档