R 多序列相关的P值
我有一些关于R 多序列相关的P值,r,correlation,R,Correlation,我有一些关于polyserial(){polycor}函数的基本问题 rho是否存在p值,或者是否可以计算 对于二元假设 正常,被测试的无效假设“是的,双变量正常”吗?也就是说,我想要一个高p值还是低p值 谢谢 如果您使用以下内容形成返回的对象: polS <- polyserial(x, y, ML=TRUE, std.err=TRUE) # ML estimate polS我给包作者发了电子邮件(因为我有同样的问题),根据他的澄清,我给出了我的答案: 首先,一个简单的问题:较高的p
polyserial()
{polycor}函数的基本问题
谢谢 如果您使用以下内容形成返回的对象:
polS <- polyserial(x, y, ML=TRUE, std.err=TRUE) # ML estimate
polS我给包作者发了电子邮件(因为我有同样的问题),根据他的澄清,我给出了我的答案:
首先,一个简单的问题:较高的p值(传统上>0.05)会让你更加确信分布是双变量正态分布。较低的p值表示非正态分布,但如果样本量足够大,则最大似然估计(选项ML=TRUE
),非正态性并不重要;无论如何,这种相关性仍然是可靠的
现在,对于更难的问题:要计算p值,您需要:
使用std.err=TRUE选项执行polyserial以访问更多详细信息
从生成的polyserial对象中,访问var[1,1]
元素var
是参数估计的协方差矩阵,sqrt(var[1,1])
是标准误差(显示在rho结果后输出的括号中)
根据标准误差,您可以根据下面的R代码计算p值
下面是一些代码,根据polyserial文档中的示例代码,用可复制的R代码来说明这一点:
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
库(mvtnorm)
图书馆(polycor)
种子集(12345)
数据谢谢!你能举个例子吗。如何从POL中获取z统计和Pv值?您应该首先搜索SO和google,了解如何从估计和估计方差(或sd)中进行统计。如果您无法通过搜索或阅读一本介绍性统计数据的书来做到这一点,那么您应该发布一个新问题,表明您已经阅读了此信息和多序列帮助页面。如果我理解,cut
函数仅用于分类数据。但我不明白2*pnorm(-abs(poly_ML$rho/std.err_ML))
。分布应该是正常的,还是假定为正常的?