r - 无法进行转换以应用我的 PCA 模型
问题描述
首先,我想说我花了几个小时试图弄清楚我的数据发生了什么,也许我无法理解理论或所需步骤。
读取数据
数据集:uscrime
uscrime <- read.csv('uscrime.txt', header = TRUE, sep = '')
uscrime <- dplyr::mutate_all(uscrime, function(x) as.numeric(as.character(x)))
uscrime_pca <- prcomp(uscrime, center = TRUE,scale. = TRUE)
使用 pcaCharts,我发现我只需要 k = 5
使用 PC1 到 PC5 创建简单的线性模型
使用 PC 结合犯罪数据,创建线性回归模型
k = 5
uscrime_PCs <- cbind(uscrime_pca$x[,1:k],uscrime[,16])
model <- lm(V6~., data = as.data.frame(uscrime_PCs))
summary(model)
应用转换
beta0 <- model$coefficients[1]
betas <- model$coefficients[2:(k+1)]
alpha <- uscrime_pca$rotation[,1:k] %*% betas
mu <- sapply(uscrime[,1:16],mean)
sigma <- sapply(uscrime[,1:16],sd)
origAlpha <- alpha/sigma
origBeta0 <- beta0 - sum(alpha*mu /sigma)
estimates <- as.matrix(uscrime[,1:16]) %*% origAlpha + origBeta0
这是我想用我的新模型计算的值
value_to_be_calculate <- data.frame(M= 14.0, So = 0, Ed = 10.0, Po1 = 12.0, Po2 = 15.5, LF = 0.640, M.F = 94.0, Pop = 150, NW = 1.1, U1 = 0.120, U2 = 3.6, Wealth = 3200, Ineq = 20.1, Prob = 0.040,Time = 39.0)
这是我无法解决的部分:
pred_df <- data.frame(predict(uscrime_pca, value_to_be_calculate))
pred <- predict(model, pred_df)
其他问题
我没有在与 PCA 模型estimates
有关的计算中以任何方式使用变量value_to_be_calculate