2017-03-25 163 views
1

我想计算的T统计量的R中特征选择与循环。数据有155列,因变量是二元的(诱变剂 - 非突变型)。我想为每列分配一个t-stat。问题是我无法弄清楚我怎么写它。吨-STAT的特征选择

这里是我试图R中执行公式:

enter image description here

此外,我写了一个代码,但我不知道它,它只是为第一列。我需要将它写入所有列的for循环。

abs(diff(tapply(train_df[,1], train_df$Activity, mean)))/sqrt(sd((train_df$NEG_01_NEG[train_df$Activity == "mutagen"])^2)/(length(train_df$NEG_01_NEG[train_df$Activity == "mutagen"])) + 
    sd((train_df$NEG_01_NEG[train_df$Activity != "mutagen"])^2)/(length(train_df$NEG_01_NEG[train_df$Activity != "mutagen"]))) 

提前感谢!

+1

首先,要求与编码帮助关闭话题在这里。其次,你为什么要使用$ t $ -statistic做特征选择?我不知道任何目标(如预测建模,解释性建模,......),这种选择将是最优的。考虑套索(及其版本),岭回归或弹性网。 –

+0

@RichardHardy首先,我不知道,对不起。我只是想在火车模型之前获得先验知识。我不是在寻找最佳选择或类似的东西。我只是在论文中看到了一个特征选择方法,并且想尝试一下。就这些了。顺便说一句,谢谢你的回答。 – silverstone

+0

我所做的正是,如果想要做的编码自己,但是这并不能帮助你太多的功能。我们如果希望 – ekstroem

回答

0

如果你不想担心速度(与155列,你可能不关心),你可以使用t.test功能,并将其应用到每一列。

模拟第一部分数据

set.seed(1) 
DF <- data.frame(y=rep(1:2, 50), x1=rnorm(100), x2=rnorm(100), x3=rnorm(100)) 
head(DF) 

    y   x1   x2   x3 
1 1 -0.6264538 -0.62036668 0.4094018 
2 2 0.1836433 0.04211587 1.6888733 
3 1 -0.8356286 -0.91092165 1.5865884 
4 2 1.5952808 0.15802877 -0.3309078 
5 1 0.3295078 -0.65458464 -2.2852355 
6 2 -0.8204684 1.76728727 2.4976616 

然后,我们可以将t.test功能所有,但使用公式参数的第一列。

group <- DF$y 
lapply(DF[,-1], function(x) { t.test(x ~ group)$statistic }) 

它返回每列的检验统计量。

t.test计算了很多额外的信息,你不需要这样你就可以直接做计算大幅加快这,但它确实是没有必要在这里

+0

这大概是计算叔得分数据帧中的最快,最简单的方法。非常感谢你! – silverstone

+0

如果它适合你,那么请接受答案。我相信这不是最快的,但可能不是你会注意到大多数数据集的东西 – ekstroem