在卡方检验中省略 Na 值
Omit Na values in a Chi Squared test
我需要一个函数来获取矩阵中多个卡方检验的 p 值
寻找,我找到了这段代码:
chisqmatrix <- function(x) {
names = colnames(x); num = length(names)
m = matrix(nrow=num,ncol=num,dimnames=list(names,names))
for (i in 1:(num-1)) {
for (j in (i+1):num) {
m[i,j] = chisq.test(x[,i],x[,j],)$p.value
}
}
return (m)
}
mat = chisqmatrix(DATAFRAME)
mat
而且效果很好!
但问题是我需要这个函数省略 NA 值。
我不能只省略所有数据框中的 NA 值,我需要为函数中的每一对省略它们
因此,当 x[,i]
select 列时,我如何才能实现该列,以便仅采用不为空的值。我试过 !="NA" 之类的东西,但方法不正确。
谢谢!
您确实需要提供可重现的数据。如手册页所述,chisq.test
在计算之前删除缺失值:
set.seed(42)
x <- matrix(sample(c(LETTERS[1:3], NA), 100, replace=TRUE), 20, 5)
x <- data.frame(x)
head(x)
# X1 X2 X3 X4 X5
# 1 A C C A <NA>
# 2 A C C B A
# 3 A A B B B
# 4 A A B B A
# 5 B C <NA> B A
# 6 <NA> <NA> <NA> B <NA>
x.chi <- chisq.test(x[, 1], x[, 2])
# Warning message:
# In chisq.test(x[, 1], x[, 2]) : Chi-squared approximation may be incorrect
x.chi$observed
# x[, 2]
# x[, 1] A B C
# A 3 1 3
# B 2 1 2
sum(x.chi$observed) # How many observations in x.chi?
[1] 12
nrow(na.omit(x[, 1:2])) $ How many rows in x after removing NAs?
[1] 12
您的函数将完全按照您的意愿执行。
我需要一个函数来获取矩阵中多个卡方检验的 p 值 寻找,我找到了这段代码:
chisqmatrix <- function(x) {
names = colnames(x); num = length(names)
m = matrix(nrow=num,ncol=num,dimnames=list(names,names))
for (i in 1:(num-1)) {
for (j in (i+1):num) {
m[i,j] = chisq.test(x[,i],x[,j],)$p.value
}
}
return (m)
}
mat = chisqmatrix(DATAFRAME)
mat
而且效果很好!
但问题是我需要这个函数省略 NA 值。
我不能只省略所有数据框中的 NA 值,我需要为函数中的每一对省略它们
因此,当 x[,i]
select 列时,我如何才能实现该列,以便仅采用不为空的值。我试过 !="NA" 之类的东西,但方法不正确。
谢谢!
您确实需要提供可重现的数据。如手册页所述,chisq.test
在计算之前删除缺失值:
set.seed(42)
x <- matrix(sample(c(LETTERS[1:3], NA), 100, replace=TRUE), 20, 5)
x <- data.frame(x)
head(x)
# X1 X2 X3 X4 X5
# 1 A C C A <NA>
# 2 A C C B A
# 3 A A B B B
# 4 A A B B A
# 5 B C <NA> B A
# 6 <NA> <NA> <NA> B <NA>
x.chi <- chisq.test(x[, 1], x[, 2])
# Warning message:
# In chisq.test(x[, 1], x[, 2]) : Chi-squared approximation may be incorrect
x.chi$observed
# x[, 2]
# x[, 1] A B C
# A 3 1 3
# B 2 1 2
sum(x.chi$observed) # How many observations in x.chi?
[1] 12
nrow(na.omit(x[, 1:2])) $ How many rows in x after removing NAs?
[1] 12
您的函数将完全按照您的意愿执行。