Spearman Correlation在排序数据的前X%上

时间:2016-11-21 15:29:59

标签: r regression correlation

我正在尝试评估不使用整个测试集的回归模型,而只评估排名最高的预测的X%,这是回归目标的位置。 R中是否有允许这样做的包?

所以,例如,如果我有以下

x<-c(1,2,3,4,5,8,7,9,12,11,14,15,16,17,20,25,40)
y<-c(0,1,2,4,5,6,8,7,10,12,15,14,13,10,18,22,30)
df<-cbind(x,y)
model<-lm(y~x)
summary(model)

多个R平方:0.9432,调整后的R平方:0.9395

plot(y~x,df)
abline(model)

我想要一个参数&#34; X&#34;(30%),它不是使用Spearman的排序相关指数计算的,而是仅计算所有整个数据集的最高30%数据。 在这种情况下,应仅计算x=c(15,16,17,20,25,40)。 这个&#34;部分&#34;相关指数可以帮助进一步表征可能具有较差R平方的模型,但在域的精确区域中表现更好(例如x的前X%)。 谢谢你的指针。

1 个答案:

答案 0 :(得分:1)

仅为数据集的相关部分比较预测值和实际值,即

y.pred <- predict(model)
y.err <- y-y.pred
idx.part <- x > quantile(0.7)

# R squared
r.squared <- 1- var(y.err)/var(y)
r.squared.part <- 1- var(y.err[idx.part])/var(y[idx.part])

在子集上计算时,不确定如何正确调整R平方。对于完整数据集,adjusted R squared is computed将分数项乘以(n-1)/(n-p-1),其中n是样本大小,p是预测变量的数量(在本例中为1) 。