我使用FactoMiner执行FAMD。为了解释轴,我使用了函数dimdesc()。文档(http://factominer.free.fr/factomethods/dimensions-description.html)解释说,为了测试分类变量及其模态的影响,它使用了方差分析:
对于分类变量,对每个维度建立一个具有一个因子的方差分析模型;个人的坐标由分类变量解释。导出F检验以查看变量是否对尺寸产生影响,并按类别对T检验进行分类(对比度总和alpha_i = 0)。
但是,当我执行手动t检验时,我找不到相同的结果。
例如,这就是我使用lm()时发现的东西:
options(contrasts = c("contr.sum", "contr.sum"))
model<-lm(quanti.var~data6[,c1])
summary(model)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.024102 0.035501 0.679 0.49722
data6[, c1]1 0.240822 0.190059 1.267 0.20517
data6[, c1]2 -0.079510 0.057494 -1.383 0.16674
data6[, c1]3 -0.250075 0.041775 -5.986 2.26e-09 ***
data6[, c1]4 0.238275 0.041220 5.781 7.80e-09 ***
data6[, c1]5 -0.118232 0.042683 -2.770 0.00562 **
data6[, c1]6 0.483183 0.084351 5.728 1.06e-08 ***
data6[, c1]7 -0.001169 0.136717 -0.009 0.99318
data6[, c1]8 -0.179943 0.051165 -3.517 0.00044 ***
data6[, c1]9 -0.427535 0.194377 -2.200 0.02788 *
这是dimdes()的结果。如您所见,p值是不同的:
Estimate p.value
var 1 0.240821978 2.132585e-01
var 2 -0.079509990 2.689540e-01
var 3 -0.250074686 2.879108e-25
var 4 0.238274701 3.180988e-38
var 5 -0.118232190 8.861101e-05
var 6 0.483182743 4.277368e-09
var 7 -0.001169335 8.786973e-01
var 8 -0.179943095 1.046172e-04
var 9 -0.427534982 6.405361e-02
var 10 0.094184857 2.257341e-03
所以我的主要问题是:dimdes()进行了哪些测试?为什么它不同于“经典” t检验?
我仔细研究了dimdesc()函数,发现它包含两个子函数:test.aov.w和cor.calc:
cor.calc <- function(y, x, w = NULL) {
if (is.null(w))
w = rep(1, length(x))
Z <- cbind(x, y)
missing <- apply(is.na(Z), 1, any)
Z <- Z[!missing, ]
w <- w[!missing]
n = sum(w)
if (n < 3)
n <- sum(w) * length(x)
r = cov.wt(Z, wt = w, method = "ML", cor = TRUE)$cor[1,
2]
return(list(r = r, proba = pt(sqrt(n - 2) * sqrt(r^2/(1 -
r^2)), n - 2, lower.tail = FALSE) * 2))
}
test.aov.w <- function(y, x, w = NULL) {
if (is.null(w))
w = rep(1, length(x))
res.aov <- aov(y ~ x, weights = w, na.action = na.exclude)
res <- summary(res.aov)[[1]]
ddlR <- sum(w[!apply(is.na(cbind.data.frame(x, y)), 1,
any)]) - nlevels(x)
tabF <- c(res[1, 2]/(res[1, 2] + res[2, 2]), pf((res[1,
3])/(res[2, 2]/(ddlR)), res[1, 1], ddlR, lower.tail = FALSE))
Estimate <- summary.lm(res.aov)$coef[-1, 1, drop = FALSE]
Estimate <- c(Estimate, -sum(Estimate))
tabX <- tab.disjonctif(x)
aux <- apply(tabX, 2, cor.calc, y, w = w)
aux <- matrix(as.numeric(sapply(aux, unlist)), byrow = T,
ncol = 2)
p.value <- aux[, 2]
resT <- cbind(Estimate, p.value)
return(list(tabF = tabF, resT = resT))
}
据我所见,p值会再次计算。 t检验在我看来就像一种相关性检验。我很困惑,我想了解这些功能到底在做什么,以及为什么作者选择这个选项。
谢谢您的帮助!