标签: correlation

相同维度的两个矩阵之间的 Spearman 相关性

我有两个相同维度(p 和 e)的矩阵,我想在同名的列之间进行 spearman 相关。我想在矩阵 (M) 中输出对相关性

我使用了corr.test()库 Psych 中的函数,这是我所做的:

library(psych)
M <- data.frame(matrix(ncol=3,nrow=ncol(p)))
M[,1] <- as.character()
G <- colnames(p)
for(rs in 1:ncol(p){
      M[rs,1] <- G[rs]     
      cor <- corr.test(p[,rs],e[,rs],method="spearman",adjust="none")
      M[rs,2] <- cor$r
      M[rs,3] <- cor$p
}
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息:

Error in 1:ncol(y) : argument of length 0
Run Code Online (Sandbox Code Playgroud)

你能告诉我有什么问题吗?或建议另一种方法?

loops r matrix correlation psych

1
推荐指数
1
解决办法
1275
查看次数

使用 findAssocs 构建 R 中所有单词组合的相关矩阵

我正在尝试编写代码来构建一个表格,该表格显示语料库中所有单词之间的所有相关性。

我知道我可以findAssocstm包中使用来查找单个单词的所有单词相关性,即findAssocs(dtm, "quick", 0.5)- 会给我所有与 0.5 以上的单词“quick”相关的单词,但我不想手动为每个单词执行此操作我所拥有的文字中的词。

#Loading a .csv file into R
file_loc <- "C:/temp/TESTER.csv"
x <- read.csv(file_loc, header=FALSE)
require (tm)
corp <- Corpus(DataframeSource(x))
dtm <- DocumentTermMatrix(corp)

#Clean up the text
corp <- tm_map(corp, content_transformer(tolower))
corp <- tm_map(corp, removeNumbers)
corp <- tm_map(corp, removePunctuation)
corp <- tm_map(corp, content_transformer(stripWhitespace))
dtm <- DocumentTermMatrix(corp)
Run Code Online (Sandbox Code Playgroud)

从这里我可以找到单个单词的单词相关性:

findAssocs(dtm, "quick", 0.4)
Run Code Online (Sandbox Code Playgroud)

但我想找到所有这样的相关性:

       quick  easy   the   and 
quick   1.00  0.54  0.72  0.92     
 easy   0.54  1.00  0.98  0.54   
  the   0.72  0.98  1.00 …
Run Code Online (Sandbox Code Playgroud)

text r correlation tm

1
推荐指数
1
解决办法
4579
查看次数

消除高度相关的列,但保留我的非数字列

我有一个包含分类变量和数值变量的数据框。我想摆脱高度相关的变量。

所以,首先我去掉了所有的分类列,制作了矩阵并找出哪些数字列可以消除。现在我想回去,也有我的分类变量列。

我对最简单的方法感到困惑......也许是一个连接选择我想从第二个表中添加哪些列......

library(caret)
training_2 <- subset(training, select = -c(user_name ,timestamp, etc))
corr_matrix <- cor(training_2)
highCorr <- findCorrelation(corr_matrix, .75)
training_2<- training_2[,-highCorr]
Run Code Online (Sandbox Code Playgroud)

编辑:数据

structure(list(X = 1:15, yaw_belt = c(-94.4, -94.4, -94.4, -94.4, 
-94.4, -94.4, -94.4, -94.4, -94.4, -94.4, -94.4, -94.4, -94.4, 
-94.4, -94.4), gyros_belt_x = c(0, 0.02, 0, 0.02, 0.02, 0.02, 
0.02, 0.02, 0.02, 0.03, 0.03, 0.02, 0.02, 0.02, 0), gyros_belt_y = c(0, 
0, 0, 0, 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), gyros_belt_z = c(-0.02, 
-0.02, …
Run Code Online (Sandbox Code Playgroud)

r correlation

1
推荐指数
1
解决办法
2233
查看次数

在多对列上提取和格式化 cor.test 结果

我正在尝试生成相关矩阵的表输出。具体来说,我使用 for 循环来识别第 4:40 列与第 1 列中的所有数据之间的相关性。虽然该表的结果不错,但它无法识别正在与什么进行比较。在检查 的属性时cor.test,我发现 data.name 被指定为x[1]y[1],这不足以追踪哪些列正在与哪些列进行比较。这是我的代码:

input <- read.delim(file="InputData.txt", header=TRUE)
x<-input[,41, drop=FALSE]
y=input[,4:40]
corr.values <- vector("list", 37)
for (i in 1:length(y) ){
  corr.values[[i]] <- cor.test(x[[1]], y[[i]], method="pearson")
}
lres <- sapply(corr.values, `[`, c("statistic","p.value","estimate","method", "data.name"))
lres<-t(lres)
write.table(lres, file="output.xls", sep="\t",row.names=TRUE)
Run Code Online (Sandbox Code Playgroud)

输出文件如下所示:

       statistic        p.value     estimate                                  method            data.name   
1   -2.030111981    0.042938137 -0.095687495    Pearson's product-moment correlation    x[[1]] and y[[i]]
2   -2.795786248    0.005400938 -0.131239287    Pearson's product-moment correlation    x[[1]] and y[[i]]
3   -2.099114632    0.036368337 -0.098908573 …
Run Code Online (Sandbox Code Playgroud)

statistics r correlation

1
推荐指数
1
解决办法
6252
查看次数

R中二元变量的相关分析

dat <- as.data.frame(replicate(100,sample(c(0,1),100,replace=TRUE)))
Run Code Online (Sandbox Code Playgroud)

我想创建一个 100 x 100 的矩阵,将这些二元变量之间的相关系数作为条目。

如果变量是连续的,那么我会用来cor()创建矩阵。我不确定cor()用 Pearson 作为方法是否合理。如果没有,假设我可以找到一个函数fn()来计算一对二元向量之间的相关性。构建 100 x 100 矩阵的有效方法是什么?

statistics r matrix correlation

1
推荐指数
1
解决办法
9354
查看次数

r function cor.test():如何计算 pearson 相关性的 p 值?

这可能是一个非常简单的问题。

我在 R 的 cor.test() 函数中找不到 pvalue 计算背后的方法。

r pearson correlation

1
推荐指数
1
解决办法
3421
查看次数

R:根据值 &gt; 和 &lt; 过滤相关矩阵

我在 R 中编程并且有一个巨大的相关矩阵。我想过滤这个矩阵,以便我只有包含值 >0.7 或 <-0.7 的行和列。我已经尝试过子集和过滤器,但并没有真正得到我想要的。另一个问题是行/列名称太多,我不想处理它们。有人可以帮忙吗?

例如

  1    2  3   4  
1 1    0  0.7 0.6  
2 0    1  0.6 0.6  
3 0.1  0  1   0.8  
4 -0.2 0  0.7 0.9  
Run Code Online (Sandbox Code Playgroud)

应该回来

  1    3    4   
1 1    0.7  0.6  
3 0.1  1    0.8  
4 -0.2 0.7  0.9
Run Code Online (Sandbox Code Playgroud)

r filter correlation

1
推荐指数
1
解决办法
3004
查看次数

如何在 Python 中计算相关比或 Eta?

根据这篇文章的回答,

名义变量和区间(“数字”)变量之间最经典的“相关”度量是 Eta,也称为相关比,等于单向方差分析的 R 方根(p 值 =方差分析)。Eta 可以被视为一种对称关联测度,就像相关性一样,因为方差分析的 Eta(名义为独立,数值为因变量)等于多元回归的 Pillai 迹(数值为独立,一组虚拟变量对应于名义上为受抚养人)。

如果您能让我知道如何用 python 计算 Eta,我将不胜感激。

事实上,我有一个包含一些数字和一些名义变量的数据框。

此外,如何为其绘制类似热图的图?

statistics correlation python-3.x pandas categorical-data

1
推荐指数
1
解决办法
8907
查看次数

如何计算不同样本量的两个变量之间的相关性

a <- c(1,2,3)
b <- c(1,2)
corr <- cor(a,b)
Run Code Online (Sandbox Code Playgroud)

我有两个时间序列变量,想要计算相关性,但它们有不同的样本量。为了简化我的问题,考虑是否有两个变量ab并且我想计算 和 之间的相关性ab但我只想计算前两个值。我如何在 R 中实现这一目标?

r correlation

1
推荐指数
1
解决办法
2862
查看次数

无法绘制一列相对于其他列的热图

在问题的帮助下:Correlation heatmap,我尝试了以下方法:

import pandas
import seaborn as sns 
dataframe = pandas.read_csv("training.csv", header=0,index_col=0)
for a in list(['output']):
    for b in list(dataframe.columns.values):
        corr.loc[a, b] = dataframe.corr().loc[a, b]
        print(b)
print(corr)
sns.heatmap(corr['output'])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

IndexError: Inconsistent shape between the condition and the input (got (8, 1) and (8,))
Run Code Online (Sandbox Code Playgroud)

我不想拥有所有值的所有值相关热图。我只想拥有一列与其他列的相关性。

请让我知道我缺少什么。

python heatmap correlation python-3.x pandas

1
推荐指数
1
解决办法
3995
查看次数