[R: function] Leave-one-out cross-validation r-squared (q-squared)
Contoh untuk data dalam bentuk tabel (misal bernama “data”) dengan variabel tergantung di kolom pertama dan dua variabel bebas di kolom kedua dan ketiga. Untuk kasus berbeda jumlah variabel bebas silakan diadaptasi.
Script:
qsquared.lm <- function(dataframe){
ori.y=dataframe[,1]
ori.x1=dataframe[,2]
ori.x2=dataframe[,3]
reg=lm(ori.y~ori.x1+ori.x2)
sum.reg=summary(reg)
print(sum.reg$r.squared)
new.y=NULL
for (i in 1:length(ori.y)){
y=dataframe[-i,1]
x1=dataframe[-i,2]
x2=dataframe[-i,3]
reg=lm(y~x1+x2)
ybaru=(coef(reg)[1])+(coef(reg)[2]*data[i,2])+(coef(reg)[3]*data[i,3])
z=data.frame(ybaru)[1,1]
new.y=c(new.y,z)
}
new.y=data.frame(new.y)
print(new.y)
sum.regbaru=summary(lm(ori.y~new.y$new.y))
print(“q.squared=”)
print(sum.regbaru$r.squared)
}
Cara penggunaan:
qsquared.lm(data)