'predict() error in cross-validation sommer v 4.1.6
I got this error when I do cross-validation, called "Error in [.data.frame(object$dataOriginal, , x) : undefined columns selected". However, the column I choose is really defined. I think I got this error because the function predict() is fail to work, but I remind I can use it in the former version of sommer.
My code looks like this:
rm(list = ls())
setwd("")
getwd()
library(sommer)
library(nadiv)
library(data.table)
dat <- fread("../ABLUP/data/phenotype/phe520.csv",data.table = F,header = T)
for(i in 1:4) dat[,i] = as.factor(as.character(dat[,i]))
head(dat)
str(dat)
summary(dat)
dat2 <- na.omit(dat)
head(dat2)
str(dat2)
summary(dat2)
ped <- fread("../ABLUP/data/pedigree/ped520.csv",data.table = F)
head(ped)
pped =prepPed(ped)
Amat = as.matrix(makeA(pped))
dim(Amat)
Amat <- as.data.frame(Amat)
Amat[1:5,1:5]
id <- ped$ID
Amat <- Amat[which(rownames(Amat)%in%id),which(colnames(Amat)%in%id)]
Amat <- as.matrix(Amat)
Amat[1:5,1:5]
dim(Amat)
set.seed(2022)
# dd <- dat
dd <- dat2
row.names(dd) <- dd$ID
library(caret)
w <- createFolds(1:length(dd$ID),k = 5)
# w
r_pearson <- NULL
r_pearson2 <- NULL
r_spearman <- NULL
r_unbiased <- NULL
r_MSD <- NULL
time <- system.time(
for(i in 1:5){
#i=1
vv <- dd$ID[w[[i]]]
vv <- as.character(vv)
tt <- dd
tt[vv,]$RFI <- NA
mod.mm = mmer(RFI ~ Gen + Batch + Sex,
random = ~ vs(ID,Gu = Amat),
rcov = ~ units,
data= tt)
ablup <- predict(mod.mm,"ID")$pvals
row.names(ablup) <- ablup$ID
r_pearson[i] <- cor(ablup[vv,]$predicted.value,dd[vv,]$RFI,
method = "pearson")
r_pearson2[i] <- (cor(ablup[vv,]$predicted.value,dd[vv,]$RFI,
method = "pearson"))^2
r_spearman[i] <- cor(ablup[vv,]$predicted.value,dd[vv,]$RFI,
method = "spearman")
r_unbiased[i] <- summary(lm(dd[vv,]$RFI~ablup[vv,]$predicted.value-1))$coefficients[1]
#r_unbiased[i] <- cov(dd[vv,]$RFI,ablup[vv,]$predicted.value)/var(ablup[vv,]$predicted.value)
r_MSD[i] <- mean((dd[vv,]$RFI-ablup[vv,]$predicted.value)^2)
})[3]
time2 <- time
print(time2)
se <- function(x){
sd(x)/sqrt(length(x))
}
print(r_pearson)
n1 <- mean(r_pearson);n1e <- se(r_pearson)
print(r_pearson2)
n2 <- mean(r_pearson2);n2e <- se(r_pearson2)
print(r_spearman)
n3 <- mean(r_spearman);n3e <- se(r_spearman)
print(r_unbiased)
n4 <- mean(r_unbiased);n4e <- se(r_unbiased)
print(r_MSD)
n5 <- mean(r_MSD);n5e <- se(r_MSD)
ax <- data.frame(type=c("Accur","Relia","Rank","Ubia","MSD","CPU"),
value = c(n1,n2,n3,n4,n5,time2),
se = c(n1e,n2e,n3e,n4e,n5e,log10(time2)))
fwrite(ax,"ablup_mod.mm_CV.txt",sep="\t")
The first 30 rows of data looks like this:
structure(list(ID = structure(c(401L, 402L, 403L, 444L, 517L,
404L, 405L, 406L, 407L, 408L, 409L, 410L, 411L, 412L, 413L, 414L,
415L, 416L, 417L, 418L, 419L, 420L, 421L, 422L, 423L, 424L, 425L,
426L, 427L, 428L), .Label = c("FX1_10", "FX1_100", "FX1_1000",
"FX1_1001", "FX1_1002", "FX1_1003", "FX1_1004", "FX1_1005", "FX1_1006",
"FX1_1007", "FX1_1008", "FX1_1009", "FX1_1011", "FX1_1012", "FX1_1015",
"FX1_1016", "FX1_1017", "FX1_1018", "FX1_1019", "FX1_102", "FX1_1020",
"FX1_1021", "FX1_1022", "FX1_1024", "FX1_1025", "FX1_1026", "FX1_1027",
"FX1_103", "FX1_1030", "FX1_1031", "FX1_1032", "FX1_1034", "FX1_1035",
"FX1_1036", "FX1_1038", "FX1_105", "FX1_107", "FX1_108", "FX1_109",
"FX1_110", "FX1_111", "FX1_114", "FX1_115", "FX1_116", "FX1_117",
"FX1_118", "FX1_119", "FX1_12", "FX1_120", "FX1_121", "FX1_122",
"FX1_123", "FX1_124", "FX1_1244", "FX1_1245", "FX1_1246", "FX1_1247",
"FX1_1248", "FX1_1249", "FX1_125", "FX1_1250", "FX1_1251", "FX1_1252",
"FX1_1253", "FX1_1255", "FX1_1256", "FX1_1257", "FX1_1258", "FX1_1259",
"FX1_1260", "FX1_1261", "FX1_1262", "FX1_1263", "FX1_1266", "FX1_1267",
"FX1_1268", "FX1_1269", "FX1_127", "FX1_1270", "FX1_1271", "FX1_1273",
"FX1_1274", "FX1_1275", "FX1_1276", "FX1_1277", "FX1_1279", "FX1_128",
"FX1_1280", "FX1_1281", "FX1_1282", "FX1_1283", "FX1_1284", "FX1_1286",
"FX1_1288", "FX1_1291", "FX1_1292", "FX1_1293", "FX1_1294", "FX1_1295",
"FX1_1296", "FX1_1297", "FX1_1298", "FX1_1299", "FX1_13", "FX1_130",
"FX1_1300", "FX1_1301", "FX1_1302", "FX1_1303", "FX1_1306", "FX1_1307",
"FX1_1308", "FX1_131", "FX1_1311", "FX1_1312", "FX1_1313", "FX1_1315",
"FX1_1317", "FX1_1318", "FX1_1319", "FX1_132", "FX1_1320", "FX1_133",
"FX1_134", "FX1_135", "FX1_136", "FX1_137", "FX1_138", "FX1_139",
"FX1_14", "FX1_140", "FX1_141", "FX1_142", "FX1_143", "FX1_144",
"FX1_145", "FX1_146", "FX1_147", "FX1_148", "FX1_149", "FX1_15",
"FX1_150", "FX1_151", "FX1_152", "FX1_154", "FX1_156", "FX1_157",
"FX1_159", "FX1_161", "FX1_162", "FX1_163", "FX1_164", "FX1_165",
"FX1_166", "FX1_167", "FX1_168", "FX1_17", "FX1_170", "FX1_171",
"FX1_172", "FX1_173", "FX1_174", "FX1_175", "FX1_176", "FX1_177",
"FX1_179", "FX1_18", "FX1_180", "FX1_181", "FX1_182", "FX1_183",
"FX1_184", "FX1_185", "FX1_186", "FX1_187", "FX1_189", "FX1_19",
"FX1_191", "FX1_192", "FX1_193", "FX1_194", "FX1_195", "FX1_196",
"FX1_197", "FX1_199", "FX1_2", "FX1_20", "FX1_200", "FX1_201",
"FX1_202", "FX1_205", "FX1_206", "FX1_207", "FX1_209", "FX1_21",
"FX1_210", "FX1_211", "FX1_212", "FX1_213", "FX1_214", "FX4_A1281",
"FX4_A1282", "FX4_A1283", "FX4_A1284", "FX4_A1285", "FX4_A1286",
"FX4_A1287", "FX4_A1288", "FX4_A1289", "FX4_A1290", "FX4_A1291",
"FX4_A1292", "FX4_A1293", "FX4_A1294", "FX4_A1295", "FX4_A1296",
"FX4_A1299", "FX4_A130", "FX4_A1301", "FX4_A1302", "FX4_A1303",
"FX4_A1304", "FX4_A1305", "FX4_A1306", "FX4_A1307", "FX4_A1308",
"FX4_A1309", "FX4_A131", "FX4_A1310", "FX4_A1311", "FX4_A1312",
"FX4_A1313", "FX4_A1314", "FX4_A1315", "FX4_A1316", "FX4_A1317",
"FX4_A1318", "FX4_A1319", "FX4_A1320", "FX4_A1322", "FX4_A1323",
"FX4_A1324", "FX4_A1325", "FX4_A1326", "FX4_A1327", "FX4_A1329",
"FX4_A133", "FX4_A1330", "FX4_A1331", "FX4_A1332", "FX4_A1333",
"FX4_A1334", "FX4_A1335", "FX4_A1336", "FX4_A1337", "FX4_A1338",
"FX4_A1339", "FX4_A134", "FX4_A1340", "FX4_A1341", "FX4_A1343",
"FX4_A1344", "FX4_A1347", "FX4_A1349", "FX4_A1350", "FX4_A1351",
"FX4_A1352", "FX4_A1354", "FX4_A1355", "FX4_A1356", "FX4_A1357",
"FX4_A136", "FX4_A1361", "FX4_A1362", "FX4_A1365", "FX4_A1367",
"FX4_A1368", "FX4_A137", "FX4_A1370", "FX4_A1371", "FX4_A1372",
"FX4_A1373", "FX4_A1374", "FX4_A1375", "FX4_A1376", "FX4_A1377",
"FX4_A1378", "FX4_A1379", "FX4_A138", "FX4_A1380", "FX4_A1381",
"FX4_A1382", "FX4_A1384", "FX4_A1386", "FX4_A1387", "FX4_A1388",
"FX4_A1389", "FX4_A139", "FX4_A1391", "FX4_A1392", "FX4_A1393",
"FX4_A1396", "FX4_A1397", "FX4_A1398", "FX4_A1399", "FX4_A140",
"FX4_A1400", "FX4_A1401", "FX4_A1402", "FX4_A1404", "FX4_A1405",
"FX4_A1406", "FX4_A1409", "FX4_A141", "FX4_A1410", "FX4_A1412",
"FX4_A1413", "FX4_A1415", "FX4_A1416", "FX4_A1417", "FX4_A1418",
"FX4_A142", "FX4_A1420", "FX4_A1421", "FX4_A1423", "FX4_A1424",
"FX4_A1425", "FX4_A1426", "FX4_A1428", "FX4_A143", "FX4_A1431",
"FX4_A1432", "FX4_A1433", "FX4_A1434", "FX4_A1436", "FX4_A1437",
"FX4_A1439", "FX4_A144", "FX4_A1441", "FX4_A1442", "FX4_A1444",
"FX4_A1445", "FX4_A1448", "FX4_A1449", "FX4_A145", "FX4_A1450",
"FX4_A1452", "FX4_A1453", "FX4_A1455", "FX4_A1456", "FX4_A1458",
"FX4_A1460", "FX4_A1461", "FX4_A1463", "FX4_A1464", "FX4_A1465",
"FX4_A1469", "FX4_A1471", "FX4_A1472", "FX4_A1473", "FX4_A1474",
"FX4_A1476", "FX4_A1477", "FX4_A1479", "FX4_A148", "FX4_A1480",
"FX4_A1481", "FX4_A1482", "FX4_A1484", "FX4_A1485", "FX4_A1487",
"FX4_A1488", "FX4_A1489", "FX4_A149", "FX4_A1490", "FX4_A1492",
"FX4_A1493", "FX4_A1496", "FX4_A1497", "FX4_A1498", "FX4_A150",
"FX4_A1500", "FX4_A1501", "FX4_A1503", "FX4_A1504", "FX4_A1505",
"FX4_A1506", "FX4_A1508", "FX4_A1509", "FX4_A151", "FX4_A1511",
"FX4_A1512", "FX4_A1513", "FX4_A1514", "FX4_A1516", "FX4_A1518",
"FX4_A1519", "FX4_A152", "FX4_A1521", "FX4_A1522", "FX6_A1",
"FX6_A10", "FX6_A11", "FX6_A1154", "FX6_A1155", "FX6_A1156",
"FX6_A1157", "FX6_A1158", "FX6_A1159", "FX6_A1160", "FX6_A1161",
"FX6_A1162", "FX6_A1163", "FX6_A1164", "FX6_A1165", "FX6_A1167",
"FX6_A1168", "FX6_A1170", "FX6_A1171", "FX6_A1173", "FX6_A1175",
"FX6_A1176", "FX6_A1177", "FX6_A1178", "FX6_A1179", "FX6_A1181",
"FX6_A1182", "FX6_A1183", "FX6_A1184", "FX6_A1185", "FX6_A1186",
"FX6_A1187", "FX6_A1188", "FX6_A1189", "FX6_A1191", "FX6_A1192",
"FX6_A1193", "FX6_A1194", "FX6_A1195", "FX6_A1196", "FX6_A1197",
"FX6_A1198", "FX6_A1199", "FX6_A12", "FX6_A1201", "FX6_A1202",
"FX6_A1204", "FX6_A1206", "FX6_A1208", "FX6_A1209", "FX6_A1210",
"FX6_A1211", "FX6_A1212", "FX6_A1213", "FX6_A1214", "FX6_A1215",
"FX6_A1216", "FX6_A1218", "FX6_A1219", "FX6_A1220", "FX6_A1221",
"FX6_A1222", "FX6_A1225", "FX6_A1226", "FX6_A1227", "FX6_A1228",
"FX6_A1229", "FX6_A1231", "FX6_A1233", "FX6_A1234", "FX6_A1235",
"FX6_A1236", "FX6_A1237", "FX6_A1238", "FX6_A1245", "FX6_A1246",
"FX6_A1247", "FX6_A1248", "FX6_A1249", "FX6_A1250", "FX6_A1251",
"FX6_A1252", "FX6_A1254", "FX6_A1255", "FX6_A1256", "FX6_A1257",
"FX6_A1258", "FX6_A1259", "FX6_A1260", "FX6_A1261", "FX6_A1262",
"FX6_A1263", "FX6_A1265", "FX6_A1266", "FX6_A1267", "FX6_A1269",
"FX6_A1270", "FX6_A1271", "FX6_A1272", "FX6_A1273", "FX6_A1274",
"FX6_A1277", "FX6_A1279", "FX6_A1280", "FX6_A1281", "FX6_A1282",
"FX6_A1283", "FX6_A1284", "FX6_A1287", "FX6_A1288", "FX6_A1289",
"FX6_A1292", "FX6_A1293", "FX6_A1294", "FX6_A1295", "FX6_A1298",
"FX6_A13", "FX6_A1300", "FX6_A1301", "FX6_A1305"), class = "factor"),
Gen = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L), .Label = c("5", "6", "7"), class = "factor"),
Batch = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("1", "10", "5"), class = "factor"),
Sex = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = c("1", "2"), class = "factor"),
RFI = c(3.627217181, -1.154734234, -1.74971223, 0.282745056,
6.923385569, 5.424798655, 13.8248368, 0.826463544, 3.334980245,
10.5229068, 0.896282303, -1.337765508, 5.263643505, -1.452049182,
1.192610925, 0.770879296, 2.151910959, 0.863960067, 2.110246559,
0.415996505, -5.685602958, 3.105247295, -6.532683774, 3.823433075,
4.712153828, 1.907716294, 2.788733274, 1.722785018, -5.163047648,
5.127251835), FCR = c(1.801438849, 1.731690141, 1.750359712,
1.736486486, 1.797419355, 1.796428571, 1.893055556, 1.734013605,
1.746258503, 1.831125828, 1.790540541, 1.82983871, 1.744736842,
1.726666667, 1.789051095, 1.707643312, 1.713548387, 1.700653595,
1.709615385, 1.699346405, 1.663265306, 1.737086093, 1.656666667,
1.8, 1.748701299, 1.734437086, 1.729411765, 1.736734694,
1.674657534, 1.778431373)), row.names = c(NA, 30L), class = "data.frame")
The first 30 rows of ped looks like this:
structure(list(ID = c("FX6_A1", "FX6_A10", "FX6_A11", "FX6_A12",
"FX6_A13", "FX6_A1154", "FX6_A1155", "FX6_A1156", "FX6_A1157",
"FX6_A1158", "FX6_A1159", "FX6_A1160", "FX6_A1161", "FX6_A1162",
"FX6_A1163", "FX6_A1164", "FX6_A1165", "FX6_A1167", "FX6_A1168",
"FX6_A1170", "FX6_A1171", "FX6_A1173", "FX6_A1175", "FX6_A1176",
"FX6_A1177", "FX6_A1178", "FX6_A1179", "FX6_A1181", "FX6_A1182",
"FX6_A1183"), Sire = c("FX5_G98", "FX5_G122", "FX5_G152", "FX5_G103",
"FX5_G44", "FX5_G113", "FX5_G3", "FX5_G22", "FX5_G177", "FX5_G3",
"FX5_G13", "FX5_G51", "FX5_G85", "FX5_G185", "FX5_G56", "FX5_G158",
"FX5_G37", "FX5_G56", "FX5_G120", "FX5_G185", "FX5_G46", "FX5_G145",
"FX5_G71", "FX5_G16", "FX5_G115", "FX5_G87", "FX5_G185", "FX5_G71",
"FX5_G131", "FX5_G124"), Dam = c("g6m37144", "g6m53086", "g6m22136",
"g6m3096", "g6m79031", "g6m28131", "g6m68093", "g6m66007", "g6m37146",
"g6m11071", "g6m33118", "g6m9137", "g6m36107", "g6m53082", "g6m30128",
"g6m54089", "g6m22124", "g6m79113", "g6m66126", "g6m33130", "g6m54118",
"g6m19100", "g6m43118", "g6m66016", "g6m19114", "g6m8103", "g6m33130",
"g6m43118", "g6m71079", "g6m22118")), row.names = c(NA, 30L), class = "data.frame")
Appreciate any advice, Best Regards, Moore.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
