根据p值选择特征是否错误?


12

关于如何选择功能,有几篇文章。一种方法描述了基于t统计量的特征重要性。在varImp(model)应用于具有标准化特征的线性模型的R中,使用每个模型参数的t统计量的绝对值。因此,基本上,我们基于特征的t统计量来选择特征,这意味着系数的精确度。但是系数的精确度是否可以告诉我有关特征的预测能力的信息?

我的特征的t统计量较低,但仍会提高模型的准确性吗?如果是,那么什么时候要基于t统计信息排除变量?还是只是作为检查非重要变量的预测能力的起点?


3
对于平均值的一样本检验,t统计量就是样本平均值除以估计的标准误差(样本标准偏差除以样本大小的平方根)。该统计信息本身并不依赖于任何特定的假设。从该统计数据得出ap值确实取决于假设。
丹·希克斯

@DanHicks我编辑了问题。
艾琳娜

我对插入符号不是很熟悉,但是似乎varImp()是为了提供信息或诊断功能,而不是直接用于功能选择或消除。
david25272

Answers:


11

t统计量几乎不能说出特征的预测能力,因此不应将其用于筛选预测变量或将预测变量纳入预测模型。

P值表示虚假特征很重要

考虑一下R中的以下场景设置。让我们创建两个向量,第一个是简单的随机硬币翻转:5000

set.seed(154)
N <- 5000
y <- rnorm(N)

第二个向量是观测值,每个观测值随机分配给大小相等的随机类之一:5005000500

N.classes <- 500
rand.class <- factor(cut(1:N, N.classes))

现在我们拟合一个线性模型来预测y给定rand.classes

M <- lm(y ~ rand.class - 1) #(*)

所有系数的正确值为零,它们都没有任何预测能力。但是,其中许多都是5%的显着水平

ps <- coef(summary(M))[, "Pr(>|t|)"]
hist(ps, breaks=30)

p值的直方图

实际上,即使没有预测能力,我们也应该期望其中的5%有意义!

P值无法检测到重要特征

这是另一个方向的例子。

set.seed(154)
N <- 100
x1 <- runif(N)
x2 <- x1 + rnorm(N, sd = 0.05)
y <- x1 + x2 + rnorm(N)

M <- lm(y ~ x1 + x2)
summary(M)

我创建了两个相关的预测变量,每个具有预测能力。

M <- lm(y ~ x1 + x2)
summary(M)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.1271     0.2092   0.608    0.545
x1            0.8369     2.0954   0.399    0.690
x2            0.9216     2.0097   0.459    0.648

p值无法检测到两个变量的预测能力,因为相关性影响模型可以从数据中估计两个单独系数的精确度。

推论统计数据无法说明变量的预测能力或重要性。以这种方式使用它们会滥用这些度量。在预测线性模型中,有更多更好的选项可用于变量选择,请考虑使用glmnet

(*)请注意,我在这里省略了一个截距,因此所有比较都是针对零基准,而不是针对第一类的组均值。这是@whuber的建议。

由于在注释中引起了非常有趣的讨论,因此原始代码为

rand.class <- factor(sample(1:N.classes, N, replace=TRUE))

M <- lm(y ~ rand.class)

导致以下直方图

p值的偏直方图


2
嗯,为什么这个p值分布不均匀?
变形虫说莫妮卡(Reonica Monica)

4
哇,你怎么选种子号的?任何其他结果都会导致几乎一致的ps ...
PsychOle

3
我会尝试始终使用相同的种子进行此类操作:en.wikipedia.org/wiki/154_(album)
马修·德鲁里

9
您进行了错误的测试:您正在将499组均值与第一组均值进行比较。使用种子154时,第一组平均值1.18 ...异常高(可能会发生,因为5的组大小非常小),因此其他大多数都具有明显的负面影响。通过运行模型进行修复lm(y ~ rand.class - 1)。这不会更改您所有备注(+1)的有效性。为了更令人信服,请平衡小组人数:rand.class <- cut(1:N, N.classes)
胡言乱语

1
当然:/我100%希望@whuber能够加入,并说出我完全错过了的清晰明显的话。我现在将其修复。
马修·德鲁里

2

t统计量受效应量和样本量的影响。可能是效果大小不为零,但样本大小不足以使其显着的情况。

在简单的零均值T检验(类似于测试特征的影响是否为零)中,T统计量为t=(x¯s)n

x¯s是效果大小的样本估计值,如果很小,则p值在项变大之前不会显示出它的显着性。n

在您的情况下,任何具有非零影响的功能都会提高性能,但是您可能没有足够的数据来使该功能的p值显着。


4
我认为具有非零效果的任何功能都不能提高性能是不对的。在训练数据上也许是正确的,但在测试数据上肯定不是。
马修·德鲁里

@MatthewDrury您是说我们缺乏从样本中推断总体测量值的方法吗?
托德D

否,但确实,虚假功能会干扰您做得好的功能。
马修·德鲁里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.