排序数据前 X% 的 Spearman 相关性

Spearman Correlation on top X% of sorted data

我正在尝试评估回归模型,而不是使用整个测试集,而是仅使用 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)

我想要一个参数 "X"(30%),它不是对整个数据集进行计算,而是使用 Spearman 的排序相关指数仅对前 30% 的数据进行计算。 在这种情况下,应该只计算 x=c(15,16,17,20,25,40)。 这个 "partial" 相关指数可以帮助进一步表征模型,这些模型可能具有较差的 R 平方,但在域的精确区域(例如 x 的前 X%)中表现更好。 感谢您的指点。

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

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) .