[英]P-value for polyserial correlation
我有一些關於polyserial polyserial()
{polycor}函數的基本問題。
謝謝。
如果使用以下內容形成返回的對象:
polS <- polyserial(x, y, ML=TRUE, std.err=TRUE) # ML estimate
...你應該沒有困難為假設形成一個p值: rho == 0
使用由參數的比率除以其標准誤差形成的z統計量。 但這與測試雙變量正態性假設不同。 對於您需要檢查的“CHISQ”部分polS
。 類'polycor'對象的打印方法用一個漂亮的小句子交給你。 您以通常的方式解釋該結果:低p值是針對零假設的更強證據(在這種情況下H0:雙變量正態性)。 作為一名科學家,你不要“想要”任何一個結果。 您想了解數據告訴您的內容。
我通過電子郵件發送了包裹作者 - 因為我有同樣的問題)並根據他的澄清,我提供了我的答案:
首先,一個簡單的問題:較高的p值(傳統上> 0.05)使您更有信心分布是雙變量正態。 較低的p值表示非正態分布,但是,如果樣本量足夠大,則最大似然估計(選項ML=TRUE
),非正態性無關緊要; 無論如何,相關性仍然可靠。
現在,對於更難的問題:要計算p值,您需要:
var[1, 1]
元素。 var
是參數估計的協方差矩陣, sqrt(var[1, 1])
是標准誤差(在rho結果之后顯示在輸出中的括號中)。 這里有一些代碼用可復制的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
),因為它更准確,除非你有一個非常慢的計算機,在這種情況下默認2-步驟方法是可以接受的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.