我有两个相同维度(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)
你能告诉我有什么问题吗?或建议另一种方法?
我正在尝试编写代码来构建一个表格,该表格显示语料库中所有单词之间的所有相关性。
我知道我可以findAssocs在tm包中使用来查找单个单词的所有单词相关性,即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) 我有一个包含分类变量和数值变量的数据框。我想摆脱高度相关的变量。
所以,首先我去掉了所有的分类列,制作了矩阵并找出哪些数字列可以消除。现在我想回去,也有我的分类变量列。
我对最简单的方法感到困惑......也许是一个连接选择我想从第二个表中添加哪些列......
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) 我正在尝试生成相关矩阵的表输出。具体来说,我使用 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) 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 矩阵的有效方法是什么?
这可能是一个非常简单的问题。
我在 R 的 cor.test() 函数中找不到 pvalue 计算背后的方法。
我在 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) 根据这篇文章的回答,
名义变量和区间(“数字”)变量之间最经典的“相关”度量是 Eta,也称为相关比,等于单向方差分析的 R 方根(p 值 =方差分析)。Eta 可以被视为一种对称关联测度,就像相关性一样,因为方差分析的 Eta(名义为独立,数值为因变量)等于多元回归的 Pillai 迹(数值为独立,一组虚拟变量对应于名义上为受抚养人)。
如果您能让我知道如何用 python 计算 Eta,我将不胜感激。
事实上,我有一个包含一些数字和一些名义变量的数据框。
此外,如何为其绘制类似热图的图?
a <- c(1,2,3)
b <- c(1,2)
corr <- cor(a,b)
Run Code Online (Sandbox Code Playgroud)
我有两个时间序列变量,想要计算相关性,但它们有不同的样本量。为了简化我的问题,考虑是否有两个变量a,b并且我想计算 和 之间的相关性a,b但我只想计算前两个值。我如何在 R 中实现这一目标?
在问题的帮助下: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)
我不想拥有所有值的所有值相关热图。我只想拥有一列与其他列的相关性。
请让我知道我缺少什么。
correlation ×10
r ×8
statistics ×3
matrix ×2
pandas ×2
python-3.x ×2
filter ×1
heatmap ×1
loops ×1
pearson ×1
psych ×1
python ×1
text ×1
tm ×1