我试图在连续词汇得分和句法效率(二分法:生产性与非生产性)之间得到一个点的双关联。
我尝试了两个ltm软件包
> biserial.cor (lol$voc1_tvl, lol$synt, use = c("complete.obs"))
和polycor包
> polyserial( lol$voc1_tvl, lol$synt, ML = FALSE, control = list(), std.err = FALSE, maxcor=.9999, bins=4)
问题是两个测试都没有给我一个p值
我怎样才能运行点双线相关检验并获得相关的p值或者自己计算p值?
答案 0 :(得分:2)
由于点双线相关仅为a particular case of the popular Peason's product-moment coefficient,因此您可以使用cor.test
来近似(稍后更多)连续X和二分Y之间的相关性。例如,给定以下数据:
set.seed(23049)
x <- rnorm(1e3)
y <- sample(0:1, 1e3, replace = TRUE)
运行cor.test(x, y)
会为您提供所需的信息。
Pearson's product-moment correlation
data: x and y
t = -1.1971, df = 998, p-value = 0.2316
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.09962497 0.02418410
sample estimates:
cor
-0.03786575
作为系数之间相似性的指示,请注意-0.03786575
的计算相关性与ltm::biserial.cor
给出的相似之处:
> library(ltm)
> biserial.cor(x, y, level = 2)
[1] -0.03784681
不同之处在于biserial.cor
是根据人口计算的,标准偏差除以n
,其中cor
和cor.test
计算标准偏差样本,除以n - 1
。
正如cgage所说,你也可以使用polyserial()
函数,在我的例子中会产生
> polyserial(x, y, std.err = TRUE)
Polyserial Correlation, 2-step est. = -0.04748 (0.03956)
Test of bivariate normality: Chisquare = 1.891, df = 5, p = 0.864
在这里,我认为计算相关性(-0.04748)的差异是由于polyserial
使用优化算法来近似计算(除非Y有两个以上的水平,否则这是不必要的)。
答案 1 :(得分:1)
使用ggplot2
数据集mpg
作为可重现的示例:
library(ggplot2)
# Use class as dichotomous variable (must subset)
newData = subset(mpg, class == 'midsize' | class == 'compact')
# Now getting p-value
library(ltm)
polyserial(newData$cty,newData$class, std.err = T)
您将在std.err=T
polyserial
查看所需的所有输出