R T临界值表

R T临界值表,r,matrix,statistics,R,Matrix,Statistics,我试图在R中创建t临界值表。我使用了以下代码,但出现了一些问题,因为我无法获得正确的值: t.power <- function(n) { alpha=c(0.50,0.75,0.80,0.85,0.90,0.95, 0.975,0.99,0.995,0.999,0.9995,1.0) power=qt(alpha, df=1:n) return(power) } 我得到了 [1] 0.0000000 0.8164966 0.978472

我试图在R中创建t临界值表。我使用了以下代码,但出现了一些问题,因为我无法获得正确的值:

t.power <- function(n) {

    alpha=c(0.50,0.75,0.80,0.85,0.90,0.95,
            0.975,0.99,0.995,0.999,0.9995,1.0)
    power=qt(alpha, df=1:n)
    return(power)
}
我得到了

[1] 0.0000000 0.8164966 0.9784723 1.1895669 1.4758840 1.9431803 2.3646243
[8] 2.8964594 3.2498355 4.1437005 4.4369793       Inf 0.0000000 0.6924171
[15] 0.8662450

有人能告诉我我做错了什么吗?

如果我没有搞错你,你想在
alpha
1:n
跨越的“网格”上评估
qt
。嗯,
outer
有助于:

t.power<-function(n){
  alpha <- c(0.50,0.75,0.80,0.85,0.90,0.95,0.975,0.99,0.995,0.999,0.9995,1.0)
  "dimnames<-"(outer(alpha, 1:n, FUN = qt), list(quantile = alpha, df = 1:n)) 
  }

t.power(5)
#        df
#quantile          1          2          3         4         5
#  0.5      0.000000  0.0000000  0.0000000 0.0000000 0.0000000
#  0.75     1.000000  0.8164966  0.7648923 0.7406971 0.7266868
#  0.8      1.376382  1.0606602  0.9784723 0.9409646 0.9195438
#  0.85     1.962611  1.3862066  1.2497781 1.1895669 1.1557673
#  0.9      3.077684  1.8856181  1.6377444 1.5332063 1.4758840
#  0.95     6.313752  2.9199856  2.3533634 2.1318468 2.0150484
#  0.975   12.706205  4.3026527  3.1824463 2.7764451 2.5705818
#  0.99    31.820516  6.9645567  4.5407029 3.7469474 3.3649300
#  0.995   63.656741  9.9248432  5.8409093 4.6040949 4.0321430
#  0.999  318.308839 22.3271248 10.2145319 7.1731822 5.8934295
#  0.9995 636.619249 31.5990546 12.9239786 8.6103016 6.8688266
#  1             Inf        Inf        Inf       Inf       Inf

t.powerR不够聪明,不知道你想要所有α和自由度的组合,相反,它只是复制较短的向量,直到它是较长向量的长度(有点奇怪,如果向量长度不公度,它不会警告你,例如
qt(c(0.5,0.75),df=1:3)
给出与qt(c(0.5,0.75,0.5),df=1:3)相同的结果

您可以使用
outer()
函数获得所有组合,如下所示(我将向量稍微缩短了一点,这样打印的结果会很紧凑,但您显然可以根据自己的喜好制作任意长度的向量)

阿尔法向量
t.power<-function(n){
  alpha <- c(0.50,0.75,0.80,0.85,0.90,0.95,0.975,0.99,0.995,0.999,0.9995,1.0)
  "dimnames<-"(outer(alpha, 1:n, FUN = qt), list(quantile = alpha, df = 1:n)) 
  }

t.power(5)
#        df
#quantile          1          2          3         4         5
#  0.5      0.000000  0.0000000  0.0000000 0.0000000 0.0000000
#  0.75     1.000000  0.8164966  0.7648923 0.7406971 0.7266868
#  0.8      1.376382  1.0606602  0.9784723 0.9409646 0.9195438
#  0.85     1.962611  1.3862066  1.2497781 1.1895669 1.1557673
#  0.9      3.077684  1.8856181  1.6377444 1.5332063 1.4758840
#  0.95     6.313752  2.9199856  2.3533634 2.1318468 2.0150484
#  0.975   12.706205  4.3026527  3.1824463 2.7764451 2.5705818
#  0.99    31.820516  6.9645567  4.5407029 3.7469474 3.3649300
#  0.995   63.656741  9.9248432  5.8409093 4.6040949 4.0321430
#  0.999  318.308839 22.3271248 10.2145319 7.1731822 5.8934295
#  0.9995 636.619249 31.5990546 12.9239786 8.6103016 6.8688266
#  1             Inf        Inf        Inf       Inf       Inf
alpha_vec <- c(0.5,0.75,0.95)
df_vec <- 1:5
tab <- outer(alpha_vec,df_vec,qt)
## set row/column names
dimnames(tab) <- list(alpha=alpha_vec,df=df_vec)
print(tab,digits=4)
##       df
## alpha      1      2      3      4      5
##   0.5  0.000 0.0000 0.0000 0.0000 0.0000
##   0.75 1.000 0.8165 0.7649 0.7407 0.7267
##   0.95 6.314 2.9200 2.3534 2.1318 2.0150