r - 用于运行多个变量的线性模型和方差分析并收集数据框中的 p 值的函数

标签 r

根据在线性模型和方差分析中运行的变量 pointA、pointB、pointC,我想收集数据框中的 p 值。在我的真实数据集中,大约有 30 个变量,因此我正在寻找一个运行这些变量并收集数据框中的 p 值的函数。这是比逐一运行并手动将它们放在数据框中更有效的方法。

set.seed(1)
id <- rep(1:3,each=4)
trt <- rep(c("A","OA", "B", "OB"),3)
pointA <- sample(1:10,12, replace=TRUE)
pointB<- sample(1:10,12, replace=TRUE)
pointC<- sample(1:10,12, replace=TRUE)
df <- data.frame(id,trt,pointA, pointB,pointC)
df

id trt pointA pointB pointC
1   1   A      8      8     10
2   1  OA      2      7      3
3   1   B      8      5      5
4   1  OB      5      9      4
5   2   A      9      5      7
6   2  OA      7      3      3
7   2   B      8      1      5
8   2  OB      6      1      8
9   3   A      6      4      1
10  3  OA      8      6      9
11  3   B      1      7      4
12  3  OB      5      5      9


data <- function(i){
  lmdf <- lm(df[,i]~trt, data=df)
  anv <- anova(lmdf)
  pvalue <- anv$`Pr(>F)`
  return(pvalue)
  }
data(5)

我希望它看起来像:

 variable pvalue
1   pointA  0.714
2   pointB  0.949
3   pointC  0.080

最佳答案

您可以将数据帧的列视为列表,并使用 sapply 迭代要用作结果的列。

从每个方差分析中获取 p 值有点繁琐,也许有人知道更好的方法,但这可行:

pvalues <- sapply( df[,3:5] , FUN = function(x) 
  summary(aov(x~df$trt))[[1]]$`Pr(>F)`[1]  
  )
data.frame(pvalues)

         pvalues
pointA 0.9737895
pointB 0.2482931
pointC 0.7660808

我确实考虑过使用多元回归,但通过这种方式获得每个结果变量的 p 值并不容易。

关于r - 用于运行多个变量的线性模型和方差分析并收集数据框中的 p 值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440760/

相关文章:

使用ggplot在ecdf图中反转x轴

R 使用函数、case_when 和数据屏蔽进行变异来解析时间戳

r - Debian/Ubuntu r-base-*、r-cran-*、revolution-r 软件包 : porting to ArchLinux

r - 准备具有外部依赖项的 CRAN R 包 (nlopt)

r - 将矩阵添加到绘图中?

r - 如何在数据框其他列的一列中搜索字符串

r - 使用 R 中的 DBI 和 ActiveDirectoryPassword 身份验证连接到 Azure SQL 数据库

r - 将 data.frame 转换为列表列表

r - 在 R 中给定条件下查找与另一个值最接近的值的位置

r - 如何从数据框中提取一些按字母顺序排列的列?