多元相关的P值

时间:2013-04-29 14:49:11

标签: r correlation

我有一些关于polyserial() {polycor}功能的基本问题。

  1. rho是否存在p值,还是可以计算?
  2. 假设双变量 正常,是否测试零假设“是,双变量正常”?也就是说,我想要一个高或低的p值。
  3. 感谢。

2 个答案:

答案 0 :(得分:2)

如果使用以下内容形成返回的对象:

 polS <- polyserial(x, y, ML=TRUE, std.err=TRUE) # ML estimate

...您应该毫无困难地为假设形成p值:rho == 0使用由参数的比率除以其标准误差形成的z统计量。但这与测试双变量正态性假设不同。为此,您需要检查polS的“chisq”组件。类'polycor'对象的打印方法用一个漂亮的小句子交给你。您以通常的方式解释该结果:低p值是反对零假设的更强证据(在这种情况下H0:双变量正态性)。作为一名科学家,你不要“想要”任何一个结果。您想了解数据告诉您的内容。

答案 1 :(得分:1)

我通过电子邮件发送了包裹作者 - 因为我有同样的问题)并根据他的澄清,我提供了我的答案:

首先,简单的问题是:较高的p值(传统上> 0.05)使您更有信心分布是双变量正态分布。较低的p值表示非正态分布,但是,如果样本量足够大,则最大似然估计(选项ML=TRUE),非正态性并不重要;无论如何,相关性仍然可靠。

现在,对于更难的问题:要计算p值,您需要:

  1. 使用std.err = TRUE选项执行polyserial以访问更多详细信息。
  2. 从生成的多义元对象中,访问var[1, 1]元素。 var是参数估计的协方差矩阵,sqrt(var[1, 1])是标准误差(在rho结果后显示在输出的括号中)。
  3. 根据标准错误,您可以根据下面的R代码计算p值。
  4. 这里有一些代码用可复制的R代码来说明这一点,基于polyserial文档中的示例代码:

    library(mvtnorm)
    library(polycor)
    
    set.seed(12345)
    data <- rmvnorm(1000, c(0, 0), matrix(c(1, .5, .5, 1), 2, 2))
    x <- data[,1]
    y <- data[,2]
    y <- cut(y, c(-Inf, -1, .5, 1.5, Inf))
    
    # 2-step estimate
    poly_2step <- polyserial(x, y, std.err=TRUE)  
    poly_2step
    ## 
    ## Polyserial Correlation, 2-step est. = 0.5085 (0.02413)
    ## Test of bivariate normality: Chisquare = 8.604, df = 11, p = 0.6584
    std.err_2step <- sqrt(poly_2step$var[1, 1])
    std.err_2step
    ## [1] 0.02413489
    p_value_2step <- 2 * pnorm(-abs(poly_2step$rho / std.err_2step))
    p_value_2step
    ## [1] 1.529176e-98
    # ML estimate
    poly_ML <- polyserial(x, y, ML=TRUE, std.err=TRUE) 
    poly_ML
    ## 
    ## Polyserial Correlation, ML est. = 0.5083 (0.02466)
    ## Test of bivariate normality: Chisquare = 8.548, df = 11, p = 0.6635
    ## 
    ##                  1      2       3
    ## Threshold -0.98560 0.4812 1.50700
    ## Std.Err.   0.04408 0.0379 0.05847
    std.err_ML <- sqrt(poly_ML$var[1, 1])
    std.err_ML
    ## [1] 0.02465517
    p_value_ML <- 2 * pnorm(-abs(poly_ML$rho / std.err_ML))
    p_value_ML
    ##              
    ## 1.927146e-94
    

    要回答一个您没有提出的重要问题:您会希望始终使用最大似然版本(ML=TRUE),因为它更准确,除非您的计算机速度非常慢,在这种情况下,默认的两步法是可以接受的。