मैं 200 विषयों और 1000 चर के साथ अपने डेटा की भविष्यवाणी के क्रॉस-सत्यापन पर काम कर रहा हूं। मेरी रुचि रिज रिग्रेशन है क्योंकि चरों की संख्या (मैं उपयोग करना चाहता हूं) नमूने की संख्या से अधिक है। इसलिए मैं संकोचन आकलनकर्ताओं का उपयोग करना चाहता हूं। निम्नलिखित उदाहरण डेटा से बना है:
#random population of 200 subjects with 1000 variables
M <- matrix(rep(0,200*100),200,1000)
for (i in 1:200) {
set.seed(i)
M[i,] <- ifelse(runif(1000)<0.5,-1,1)
}
rownames(M) <- 1:200
#random yvars
set.seed(1234)
u <- rnorm(1000)
g <- as.vector(crossprod(t(M),u))
h2 <- 0.5
set.seed(234)
y <- g + rnorm(200,mean=0,sd=sqrt((1-h2)/h2*var(g)))
myd <- data.frame(y=y, M)
myd[1:10,1:10]
y X1 X2 X3 X4 X5 X6 X7 X8 X9
1 -7.443403 -1 -1 1 1 -1 1 1 1 1
2 -63.731438 -1 1 1 -1 1 1 -1 1 -1
3 -48.705165 -1 1 -1 -1 1 1 -1 -1 1
4 15.883502 1 -1 -1 -1 1 -1 1 1 1
5 19.087484 -1 1 1 -1 -1 1 1 1 1
6 44.066119 1 1 -1 -1 1 1 1 1 1
7 -26.871182 1 -1 -1 -1 -1 1 -1 1 -1
8 -63.120595 -1 -1 1 1 -1 1 -1 1 1
9 48.330940 -1 -1 -1 -1 -1 -1 -1 -1 1
10 -18.433047 1 -1 -1 1 -1 -1 -1 -1 1
मैं क्रॉस सत्यापन के लिए निम्नलिखित करना चाहूंगा -
(1) डेटा को दो हिस्सों में विभाजित करें - पहला आधा प्रशिक्षण के रूप में और दूसरा आधा परीक्षण के रूप में
(2) K- गुना क्रॉस सत्यापन (मेरे मामले के लिए किसी भी अन्य उपयुक्त तह पर 10 गुना या सुझाव का स्वागत है)
मैं बस डेटा को दो (नमूना और परीक्षण) में नमूना कर सकता हूं और उनका उपयोग कर सकता हूं:
# using holdout (50% of the data) cross validation
training.id <- sample(1:nrow(myd), round(nrow(myd)/2,0), replace = FALSE)
test.id <- setdiff(1:nrow(myd), training.id)
myd_train <- myd[training.id,]
myd_test <- myd[test.id,]
मैं आर पैकेज lm.ridge
से उपयोग कर रहा हूं MASS
।
library(MASS)
out.ridge=lm.ridge(y~., data=myd_train, lambda=seq(0, 100,0.001))
plot(out.ridge)
select(out.ridge)
lam=0.001
abline(v=lam)
out.ridge1 =lm.ridge(y~., data=myd_train, lambda=lam)
hist(out.ridge1$coef)
out.ridge1$ym
hist(out.ridge1$xm)
मेरे दो सवाल हैं -
(1) मैं परीक्षण सेट की भविष्यवाणी कैसे कर सकता हूं और सटीकता की गणना कैसे कर सकता हूं (जैसा कि वास्तविक बनाम भविष्यवाणी का सहसंबंध है)?
(२) मैं K- गुना सत्यापन कैसे कर सकता हूँ? 10 गुना बोलो?
rms
पैकेज ols
, calibrate
और validate
द्विघात दण्डनीय ठहराए (रिज प्रतिगमन) के साथ कार्य करते हैं।