识别回归分析中的所有异常值

  • 本文关键字:异常 回归 识别 r
  • 更新时间 :
  • 英文 :


我有一个大约17000行的文件,我在上执行了一个简单的线性回归

    Gene_id expA expB
    GeneA 5.462109    5.006181
    GeneB 2.667692    4.208152
    GeneC 4.796976    4.122660
    GeneD 3.127125    3.676322
    GeneE 4.500583    4.104575
    GeneF 4.598430    4.853717

我用进行了回归分析

plot(log2(data$expA)~log2(data$expB))
regression <- lm(log2(moved.data$expA)~log2(moved.data$expB))
abline(regression)

我感兴趣的是从我的回归分析中哪些基因是异常值。

我试着使用identify(log2(data$expA)~log2(data$expB), row.names(data))函数,但我的图中有很多点,所以逐个点击它们对我来说似乎不可行

我还看了看:R 中具有稳健回归的异常值

但这并不能告诉我如何计算异常值的基因名称

你真的对残差不感兴趣吗(每个基因的结果与回归的差异有多大)?残差告诉你你的数据与你的模型有多接近。在这种情况下,您有一个简单的线性模型。有许多大的残差表明你需要一个更好的模型。

如果可能的话,我永远不会删除异常值。如果你确实删除了它们,请诚实地报告它们已被删除以及删除的标准。为了完全诚实和透明,请提供您的数据和R脚本。

不管怎样,记住我刚才说的,这里有一种命名"异常值"的方法:

# Create sample data
Gene_id <- c("GeneA", "GeneB", "GeneC", "GeneD", "GeneE", "GeneF")
expA    <- c(5.462109, 2.667692, 4.796976, 3.127125, 4.500583, 4.598430)
expB    <- c(5.006181, 4.208152, 4.122660, 3.676322, 4.104575, 4.853717)
# Calculate log base two for results from each experiment
log2_A <- log2(expA)
log2_B <- log2(expB)
# Plot data
plot(log2_A~log2_B)
# Calculate and display the regression line
regression <- lm(log2_A~log2_B)
abline(regression)
# Show regression formula
print(regression)
# Create data frame for sample data
data <- data.frame(Gene_id, expA, expB)
# Calculate residuals
data$residuals <- residuals(regression)
# Choose a threshhold
outlier_threshold <- 0.3
# Print only names of outliers
outliers <- data[ abs(data$residuals) > outlier_threshold, ]
print(outliers$Gene_id)

最新更新