表中一列和不同列之间的多个 t.test

问题描述

我尝试在不同的列之间进行 t 检验的循环,特别是一个列和不同的列。 我想做多个 t.test 并将其插入表格中以总结 p 值并显示我对哪些列进行了 t.test。

我试过了,

    var1<- c('empfte','empft_rate','wage_st','wage_min','pmeal','hrsopen','bonus')
for (i in var1){
  result=t.test(eval(parse(text = paste0(i,"~state"))),data)
pvalue<-  print(i)
  print(result$p.value)
}

但这不是“印刷”的美学。

此外,如果可以将表格放在 Latex 格式中。

解决方法

您可以使用 lapply ("list-apply") 来针对单个变量评估每个变量(在这种情况下,“empfte”与所有其他变量),例如

library(tidyverse)
var1 <- tribble(~'empfte',~'empft_rate',~'wage_st',~'wage_min',~'pmeal',~'hrsopen',~'bonus',3,0.7,22,2.0,8,5,4,1,2.5,9,5.1,2,0.6,2.1,5.2,6,0.8,2.9,5.3,5.4,5.8)

t.test_func <- function(name){
  test <- t.test(x = var1$empfte,y = name)
  return(test$p.value)
}

list_of_results <- lapply(var1,t.test_func)
table <- t(data.frame("empfte vs" = list_of_results))
colnames(table) <- c("P-Value")
table

                                   P-Value
    empfte.vs.empfte     1.000000000000000
    empfte.vs.empft_rate 0.526440549147148
    empfte.vs.wage_st    0.000280122578855
    empfte.vs.wage_min   0.000000008779076
    empfte.vs.pmeal      0.181259032114088
    empfte.vs.hrsopen    0.047201925878887
    empfte.vs.bonus      0.000087211443709

library(xtable)
xtable(t(data.frame("empfte vs" = list_of_results)))

    % latex table generated in R 4.0.3 by xtable 1.8-4 package
    % Tue Dec 22 11:44:20 2020
    \begin{table}[ht]
    \centering
    \begin{tabular}{rr}
      \hline
     & x \\ 
      \hline
    empfte.vs.empfte & 1.00 \\ 
      empfte.vs.empft\_rate & 0.53 \\ 
      empfte.vs.wage\_st & 0.00 \\ 
      empfte.vs.wage\_min & 0.00 \\ 
      empfte.vs.pmeal & 0.18 \\ 
      empfte.vs.hrsopen & 0.05 \\ 
      empfte.vs.bonus & 0.00 \\ 
       \hline
    \end{tabular}
    \end{table}

您应该意识到这些值对于多次测试(例如 Bonferroni 校正)和方差分析可能是更合适的统计检验。