在我的数据中有两个类,当对这两个类的值进行 t 检验时,我的一个 Gini 重要性为 0.023(95 个特征中的第 8 位)的特征显示 p 值为 0.44。我想知道这是否有意义。直观地说,具有高基尼重要性的特征在类之间不会有非常不同的值吗?我想知道如何调和这两个事实。
编辑:如果有帮助,所有基尼系数的范围都在 0.0011 到 0.0295 之间,p 值的范围从 5.13e-109 到 1。t 检验和秩和检验都可以看到这些 p 值。
在我的数据中有两个类,当对这两个类的值进行 t 检验时,我的一个 Gini 重要性为 0.023(95 个特征中的第 8 位)的特征显示 p 值为 0.44。我想知道这是否有意义。直观地说,具有高基尼重要性的特征在类之间不会有非常不同的值吗?我想知道如何调和这两个事实。
编辑:如果有帮助,所有基尼系数的范围都在 0.0011 到 0.0295 之间,p 值的范围从 5.13e-109 到 1。t 检验和秩和检验都可以看到这些 p 值。
直观地说,具有高基尼重要性的特征在类之间不会有非常不同的值吗?我想知道如何调和这两个事实。
如果我理解正确,这两个事实完全一致,以防您的类在一维特征空间中不可分离。
以下夸张的玩具示例应说明这种情况(和射频的功率)。
#uncomment the following line to remove all variables
# rm(list=ls())
library(ggplot2)
library(caret)
library(MASS)
library(GGally)
library(dplyr)
SEED <- 123456
SIMS <- 1000
set.seed(SEED)
x.signal <- rbind(
mvrnorm(n = SIMS/2, c(0,0), matrix(c(1,0.9,0.9,1),2,2)),
mvrnorm(n = SIMS/2, c(0,0), matrix(c(1,-0.9,-0.9,1),2,2)))
x.noise <- mvrnorm(n = SIMS, c(0,0), matrix(c(1,0.9,0.9,1),2,2))
y <- rep(c(TRUE, FALSE), each=SIMS/2)
df <- data.frame(
x1.signal=x.signal[,1],
x2.signal=x.signal[,2],
x1.noise=x.noise[,1],
x2.noise=x.noise[,2],
y=factor(y))
yName <- "y"
xName <- setdiff(colnames(df), yName)
ggpairs(df, aes(colour=y))
ctrl <- trainControl("cv", number = 5, verboseIter = TRUE)
rffit <- train(df[,xName], df[,yName],
method = "rf", trControl = ctrl, tuneLength = 5)
varImpPlot(rffit$finalModel)
## t = 0.061767, df = 997.98, p-value = 0.9508
t.test(filter(df, y=="TRUE")$x1.signal,
filter(df, y=="FALSE")$x1.signal,
var.equal = FALSE, paired = FALSE)
## t = 0.22695, df = 996.04, p-value = 0.8205
t.test(filter(df, y=="TRUE")$x2.signal,
filter(df, y=="FALSE")$x2.signal,
var.equal = FALSE, paired = FALSE)
dplyr::group_by(df, y) %>%
dplyr::summarise(mx1=mean(x1.signal),
mx2=mean(x2.signal))