R 依赖矩阵
我需要用我的数据集的所有91个变量建立一个依赖关系矩阵 我试图使用一些代码,但没有成功 这里是重要代码的一部分:R 依赖矩阵,r,chi-squared,R,Chi Squared,我需要用我的数据集的所有91个变量建立一个依赖关系矩阵 我试图使用一些代码,但没有成功 这里是重要代码的一部分: p<- length(dati) chisquare <- matrix(dati, nrow=(p-1), ncol=p) 除非在最后一列中似乎有p值,否则所有单元格按行显示相同的值 我还尝试了另一种方法,这是由比我更了解如何管理R的人提供的: #strange values I have in some columns sum(dati == 'x') #repl
p<- length(dati)
chisquare <- matrix(dati, nrow=(p-1), ncol=p)
除非在最后一列中似乎有p值,否则所有单元格按行显示相同的值
我还尝试了另一种方法,这是由比我更了解如何管理R的人提供的:
#strange values I have in some columns
sum(dati == 'x')
#replacing "x" by x
x <- dati[dati=='x']
#distribution of answers for each question
answers <- t(sapply(1:ncol(dati), function(i) table(factor(dati[, i], levels = -2:9), useNA = 'always')))
rownames(answers) <- colnames(dati)
answers
#correlation for the pairs
I<- diag(ncol(dati))
#empty diagonal matrix
colnames(I) <- rownames(I) <- colnames(dati)
rn <- rownames(I)
cn <- colnames(I)
#loop
system.time({
for(i in 1:ncol(dati)){
for(j in 1:ncol(spain)){
a <- dati[, rn[i]]
b <- dati[, cn[j]]
r <- chisq.test(a,b)$statistic
r <- chisq.test(a,b)$p.value
I[i, j] <- r
}
}
})
user system elapsed
29.61 0.09 30.70
There are 50 and more alerts (use warnings() to read the first 50)
warnings() #let's check
-> : In chisq.test(a, b) : Chi-squared approximation may be incorrect
diag(I)<- 1
#result
head(I)
列在第5个变量处停止,而我需要检查所有变量之间的依赖关系。每一个
我不明白我错在哪里,但我希望我不会走得太远
我希望能得到您的帮助。您显然是在试图计算卡方检验的p值, 对于数据集中的所有变量对。 这可以按如下方式进行
# Sample data
n <- 1000
k <- 10
d <- matrix(sample(LETTERS[1:5], n*k, replace=TRUE), nc=k)
d <- as.data.frame(d)
names(d) <- letters[1:k]
# Compute the p-values
k <- ncol(d)
result <- matrix(1, nr=k, nc=k)
rownames(result) <- colnames(result) <- names(d)
for(i in 1:k) {
for(j in 1:k) {
result[i,j] <- chisq.test( d[,i], d[,j] )$p.value
}
}
此外,您的数据可能有问题,
导致你收到警告,
但我们对此一无所知
您的代码有太多问题,我无法尝试枚举它们
您开始尝试创建一个具有不同数字的方阵
行和列,然后我就完全迷路了。你应该处理你的问题的格式…应该尝试使问题标题更具体,并放置更具代表性的标记,例如编程语言
#strange values I have in some columns
sum(dati == 'x')
#replacing "x" by x
x <- dati[dati=='x']
#distribution of answers for each question
answers <- t(sapply(1:ncol(dati), function(i) table(factor(dati[, i], levels = -2:9), useNA = 'always')))
rownames(answers) <- colnames(dati)
answers
#correlation for the pairs
I<- diag(ncol(dati))
#empty diagonal matrix
colnames(I) <- rownames(I) <- colnames(dati)
rn <- rownames(I)
cn <- colnames(I)
#loop
system.time({
for(i in 1:ncol(dati)){
for(j in 1:ncol(spain)){
a <- dati[, rn[i]]
b <- dati[, cn[j]]
r <- chisq.test(a,b)$statistic
r <- chisq.test(a,b)$p.value
I[i, j] <- r
}
}
})
user system elapsed
29.61 0.09 30.70
There are 50 and more alerts (use warnings() to read the first 50)
warnings() #let's check
-> : In chisq.test(a, b) : Chi-squared approximation may be incorrect
diag(I)<- 1
#result
head(I)
# Sample data
n <- 1000
k <- 10
d <- matrix(sample(LETTERS[1:5], n*k, replace=TRUE), nc=k)
d <- as.data.frame(d)
names(d) <- letters[1:k]
# Compute the p-values
k <- ncol(d)
result <- matrix(1, nr=k, nc=k)
rownames(result) <- colnames(result) <- names(d)
for(i in 1:k) {
for(j in 1:k) {
result[i,j] <- chisq.test( d[,i], d[,j] )$p.value
}
}