在我的数据中有两个类,其中一个具有基尼重要性0.023的特性(95个特性中排名第8)在对两个类的值进行t检验时显示p值为0.44。我在想这是否有意义。从直觉上看,高基尼系数的特性在不同的类别之间不会有很大的不同吗?我想知道如何调和这两个事实。
编辑:如果有帮助的话,所有的基尼值都在0.0011到0.0295之间,p值在5.13e-109到1之间。这些p值用于t检验和秩和检验。
发布于 2018-03-15 00:32:09
从直觉上看,高基尼系数的特性在不同的类别之间不会有很大的不同吗?我想知道如何调和这两个事实。
如果我正确地理解了你,这两个事实完全一致,以防你的类在一维特征空间中不可分离。
下面这个夸张的玩具例子应该说明这种情况(以及射频的威力)。
#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))https://datascience.stackexchange.com/questions/28196
复制相似问题