2016-11-21 75 views
0

我試圖評估不使用整個測試集的迴歸模型,但只有X%的排名最靠前的預測,這是迴歸的目標。 在R中有沒有包允許做到這一點?Spearman相關性排名前X%%

所以,舉例來說,如果我有以下

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%),它不是使用斯皮爾曼的秩序相關指數來計算全部數據集,而是隻計算30%的數據。 在這種情況下,它應該只計算x=c(15,16,17,20,25,40)。 這個「部分」相關指數可能有助於對可能具有較差R平方的模型進行進一步表徵,但在該領域的精確區域(例如X的頂部X%)中執行得更好。 感謝任何指針。

+0

不完全清楚你想要什麼:'lm(y〜x,data = df,subset = x> quantile(x,0.7))''? –

+0

@Ben。謝謝。我不想用較少的數據改變模型,只是在選擇的子集上「測量」模型。 –

回答

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

+0

感謝您快速回答!我懷疑包裹裏什麼都沒有。而且我也不確定如何產生調整的R平方。然而,我一直認爲有些情況下,優化排名前x%預測(即最大化Spearman相關性在最高或最低的X%數據上)的迴歸模型可能優於整個集優化的「經典」模型。 –