我想自动更新一些数据,但它有一些缺失的值,有没有快速的方法在matlab中做到这一点?如果任何输入是NaN,则xcorr返回NaN数组.
例如
data = [1 2 3 4 NaN 2 3 4 1 2 3 4];
xc = xcorr(data, 'biased');
Run Code Online (Sandbox Code Playgroud) 对不起我的英语不好:
我的查询select date from mytable返回如下内容:
DATE
27/09/2011
27/09/2011
27/09/2011
27/09/2011
28/09/2011
28/09/2011
29/09/2011
29/09/2011
29/09/2011
Run Code Online (Sandbox Code Playgroud)
我还需要我的查询根据每个不同的日期返回相关性.就像是...
DATE | CORRELATIVE
|
27/09/2011 | 1
27/09/2011 | 2
27/09/2011 | 3
27/09/2011 | 4
28/09/2011 | 1
28/09/2011 | 2
29/09/2011 | 1
29/09/2011 | 2
29/09/2011 | 3
Run Code Online (Sandbox Code Playgroud)
我需要帮助才能得到它,就像select date, any_way_to_get_it from mytable
thk 一样!
如何找到不同长度的矢量之间的相关性?例如:
clear all
time1 = 1 + (365-1).*rand(1,12);
time2 = 1 + (365-1).*rand(1,24);
data1 = 1 + (20-1).*rand(1,12);
data2 = 1 + (20-1).*rand(1,24);
Run Code Online (Sandbox Code Playgroud)
通常我会发现相关性:
R = corrcoef(data1,data2);
Run Code Online (Sandbox Code Playgroud)
但是矢量需要长度相同!我怎么做到这一点?
我试图将列转换为R中的行,而不使用reshape(无法安装包).我收到的数据包括属性及其相应的指标.我想计算所有这些属性之间的统计相关性 - 总共16000个,有800万条记录.并非所有记录都具有相同数量的属性.
为此,我相信我必须将列转换为行,以便最终可以使用cor函数,例如cor(x [,1],x [,2:16000]).如果有某种方法可以通过属性使用cor函数,即属性1和2,属性1和3,属性1 ... N之间的相关性,这可能完全没有必要.任何帮助都将非常感激.
ID Attribute Metric1
[1,] 1 1 -1.6363007
[2,] 2 1 1.1483294
[3,] 3 1 2.1682566
[4,] 4 1 -1.1823649
[5,] 5 1 -1.3631378
[6,] 1 2 -1.1715544
[7,] 2 2 1.5164278
[8,] 3 2 -1.0110274
[9,] 4 2 -0.9421652
[10,] 5 2 -0.2105443
[11,] 6 2 -0.4143548
[12,] 7 2 -1.6170975
[13,] 8 2 1.2402303
[14,] 9 2 0.4460047
[15,] 7 3 0.1060407
[16,] 8 3 0.9796893
[17,] 9 3 0.9254911
[18,] …Run Code Online (Sandbox Code Playgroud) 我想在R中的数据集中生成年份之间的相关性,但是我不断收到以下错误:
cor.test(y2013$CA,y2011$CA, method="spearman", use="complete")
Run Code Online (Sandbox Code Playgroud)
cor中的错误(x,y,use = use,method = method):不兼容的维度另外:警告消息:在cbind(x,y)中:结果的行数不是向量长度的倍数(arg 2)
y2013和y2011的长度不一样,但是我想通过使用命令"完成"这可以消除这个问题
我有一个数据框,M,我想计算M列之间的所有成对相关性.我可以使用应用函数轻松完成此操作,例如
pvals = laply(M, function(x) llply(M, function(y) cor.test(x, y)$p.value))
Run Code Online (Sandbox Code Playgroud)
然而,这个解决方案正在完成所需工作的2倍,因为x和y之间的相关性与y和x之间的相关性相同.
我正在寻找一种快速,简单的方法来计算独特的列对之间的所有相关性.我希望结果是NxN矩阵,其中N = ncol(M).我已经在Stack Overflow上搜索了很长时间,但找不到任何能做到这一点的东西.谢谢!
我想计算2个数组之间的相关性。为此,我想使用NumPy。
我numpy.correlate在一个小例子中使用了该函数:
import numpy as np
a = [1, 2, 3]
b = [2, 3, 4]
np.correlate(a, b)
>>> np.array([20])
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何解释这个结果。我想要的是一个介于-1和1之间的数字以表示相关性,其中1表示数组是正相关的,而-1表示数组是负相关的。
我如何获得这个号码?
我想要一个只有相关系数大于0.2的矩阵.我提出了以下解决方案.
mts.data <- ts(data.frame(a=arima.sim(model=list(1,0,0), n=10),
b=arima.sim(model=list(1,0,1), n=10), c=arima.sim(model=list(1,0,0),
n=10), d=arima.sim(model=list(1,0,2), n=10),
e=arima.sim(model=list(2,0,1), n=10)), start=c(2007,1), frequency=12)
critcor <- function(x) {
crit.mat <- matrix(0, nrow=ncol(x), ncol=ncol(x))
for(j in 1:ncol(x)) {
for(i in 1:ncol(x)) {
if(abs(cor(x[,i], x[,j])) > 0.2) {
crit.mat[i,j] <- cor(x[,i], x[,j])
}
}
}
return(crit.mat)
}
Run Code Online (Sandbox Code Playgroud)
这很好用.不幸的是,我的数据集包含缺失值.
mts.data[1:3, 4] <- NA
mts.data[9:10, 5] <- NA
Run Code Online (Sandbox Code Playgroud)
当我运行我的功能时,我收到了一个错误.
critcor(mts.data)
# Error in if (abs(cor(x[, i], x[, j])) > 0.2) { :
# missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)
我现在正在浏览互联网几个小时,我完全不知道如何解决这个问题.如果由于缺少值而无法进行相关,我希望我的函数只打印0.
我想在(融化的)相关矩阵中报告所有唯一值.
如果我做:
melt(cor(x,method="pearson",use="complete.obs"))
Run Code Online (Sandbox Code Playgroud)
我会得到:
VarA VarA 1
VarA VarB 0.001
VarA VarC -0.002
VarB VarB 1
VarB VarA 0.001
VarB VarC 0.003
VarC VarC 1
VarC VarA -0.002
VarC VarB 0.003
Run Code Online (Sandbox Code Playgroud)
然而,有些行有效地报告了同样的事情VarA VarB = VarB VarA,所以我真正想要的是:
VarA VarA 1
VarA VarB 0.001
VarA VarC -0.002
VarB VarB 1
VarB VarC 0.003
VarC VarC 1
Run Code Online (Sandbox Code Playgroud)
甚至更好的奖金删除与自己相关的变量,所以我只得到:
VarA VarB 0.001
VarA VarC -0.002
VarB VarC 0.003
Run Code Online (Sandbox Code Playgroud) 我在Pandas中有一个数据框,其形状为(136,1445)。我尝试为我的136行创建correlation(Pearson)矩阵。因此,结果是,我需要一个尺寸为136x136的矩阵。
我尝试了两种不同的方法,但是无法从中获得结果,或者当我创建136x136相关矩阵时,我丢失了数据框的列名。
第一,
gene_expression = pd.read_csv('padel_all_drug_results_original.csv',dtype='unicode')
gene_expression = gene_expression.convert_objects(convert_numeric=True)
gene_expression.corr()
Run Code Online (Sandbox Code Playgroud)
这给出了基于列的皮尔逊相关矩阵(1445 * 1445),当我尝试转置我的数据框然后尝试找到相关时,数据框的结构被破坏(例如列名丢失或我什至不确定该相关性是正确的)。
其次,
distance = lambda column1, column2: pearsonr(column1,column2)[0]
result = gene_expression.apply(lambda col1: gene_expression.apply(lambda col2: distance(col1, col2)))
Run Code Online (Sandbox Code Playgroud)
我应该如何计算136x136皮尔逊相关矩阵,以不更改原始数据帧?
另外,我有1445个功能,有些列几乎全为零。因此,我删除了这些列,因为它们是嘈杂的列,但是您有另一个想法来实现重用吗?
提前致谢