这段 R 代码会抛出一个警告
# Fit regression model to each cluster
y <- list()
length(y) <- k
vars <- list()
length(vars) <- k
f <- list()
length(f) <- k
for (i in 1:k) {
vars[[i]] <- names(corc[[i]][corc[[i]]!= "1"])
f[[i]] <- as.formula(paste("Death ~", paste(vars[[i]], collapse= "+")))
y[[i]] <- lm(f[[i]], data=C1[[i]]) #training set
C1[[i]] <- cbind(C1[[i]], fitted(y[[i]]))
C2[[i]] <- cbind(C2[[i]], predict(y[[i]], C2[[i]])) #test set
}
我有一个训练数据集(C1)和一个测试数据集(C2),每个数据集都有129个变量。我对C1进行了k均值聚类分析,然后基于簇成员身份拆分了我的数据集,并创建了不同簇的列表(C1 [ [1]],C1 [ [2]],...,C1 [ [k]])。我还为C2中的每个案例分配了一个簇成员身份,并创建了C2 [ [1]],...,C2 [ [k]]。然后我对C1中的每个簇进行线性回归拟合。我的因变量是“死亡”。在每个簇中,我的预测变量都不同,并且vars [ [i]](i = 1,...,k)显示了预测变量的名称列表。我想预测测试数据集(C2 [ [1]],...,C2 [ [k]])中每个案例的死亡情况。当我运行以下代码时,对于其中一些簇。
我收到了这个警告:
In predict.lm(y[[i]], C2[[i]]) :
prediction from a rank-deficient fit may be misleading
我读了很多关于这个警告的内容,但是我还是没能弄清楚问题出在哪里。