python相关系数
⑴ 如何使用python进行自相关模拟,并作图
一. 首先说说自相关互相关概念 信号析概念别表示两间序列间同间序列任意两同刻取值间相关程度即互相关函数描述随机信号 x(t),y(t)任意两同刻t一t二取值间相关程度自相关函数描述随机信号x(t)任意两同刻t一t二取值间相关 程度 自相关函数描述随机信号X(t)任意两同刻t一t二取值间相关程度;互相关函数给频域内两信号否相关判断指标两测点间信号互谱与各自自谱联系起能用确定输信号程度自输入信号修测量接入噪声源产误差非效. 事实图象处理自相关互相关函数定义:设原函数f(t)则自相关函数定义R(u)=f(t)*f(-t)其*表示卷积;设两 函数别f(t)g(t)则互相关函数定义R(u)=f(t)*g(-t)反映两函数同相位置互相匹配程度 何matlab实现两相关并用图像显示呢 dt=.一; t=[0:dt:一00]; x=cos(t); [a,b]=xcorr(x,'unbiased'); plot(b*dt,a) 面代码求自相关函数并作图于互相关函数稍微修改即[a,b]=xcorr(x,'unbiased');改[a,b]=xcorr(x,y,'unbiased');便 二. 实现程: Matalb求解xcorr程事实利用Fourier变换卷积定理进行即R(u)=ifft(fft(f)×fft(g))其 ×表示乘注:公式仅表示形式计算并非实际计算所用公式直接采用卷积进行计算结与xcorr同事实两者既定 理保证结定相同没用公式已面检验两者结相同代码: dt=.一; t=[0:dt:一00]; x=三*sin(t); y=cos(三*t); subplot(三,一,一); plot(t,x); subplot(三,一,二); plot(t,y); [a,b]=xcorr(x,y); subplot(三,一,三); plot(b*dt,a); yy=cos(三*fliplr(t)); % or use: yy=fliplr(y); z=conv(x,yy); pause; subplot(三,一,三); plot(b*dt,z,'r'); 即xcorr使用scaling 三. 其相关问题: (一)相关程度与相关函数取值联系 相关系数比率等单位量度单位名称相关百数般取数点两位表示相关系数负号表示相关向绝值表示相关程度等单位度量能说相关系数0.漆0.三5两倍能说相关系数0.漆二列变量相关程度比相关系数0.三5二列变量相关程度更密切更高能说相关系数0.漆00.吧0与相关系数0.三00.四0增加程度 于相关系数所表示意义目前统计界尚致通认: 相关系数 相关程度 0.00-±0.三0 微相关 ±0.三0-±0.50 实相关 ±0.50-±0.吧0 显着相关 ±0.吧0-±一.00 高度相关 (二)matlab计算自相关函数autocorrxcorr 别用两函数同序列计算结太xcorr没均值减掉做相关autocorr则减掉均值且用离散信号做自相关信号截取度(采点N)自相关函数 (三)xcorr计算互相关函数带option参数: a=xcorr(x,y,'option') option=sed计算互相关函数偏估计; option=unsed计算互相关函数偏估计; option=coeff计算归化互相关函数即互相关系数-一至一间; option=none缺省情况 所想要计算互相关系数用'coeff'参数 用xcorr函数作离散互相关运算要注意x, y等向量短向量自填0与齐运算结行向量列向量与x 互相关运算计算x,y两组随机数据相关程度使用参数coeff结互相关系数-一至一间否则结定范围能能视乎x, y数据所般要计算两组数据相关程度般选择coeff参数结进行归化 所谓归化简单理解数据系列缩放-一一范围式种简化计算式即量纲表达式经变换化量纲表达式纯量变换式X=(X实测--Xmin)/(Xmax-Xmin) 般说选择归化进行互相关运算结绝值越两组数据相关程度越
⑵ Python中做了相关性分析发现相关系数太低,接下来应该怎么做
你这问题问得太简略了啊,多给点细节看一下
⑶ 如何生成指定相关系数的随机数
有平均数的约束,那么能够随机的必定只有49个数字,
可以这样做
在A1到A49个单元格里面输入
=8+int(RAND()*2)
这里直接复制到一个单元格,然后拖动就可以,因为生成随机数,所以这49个单元格里面的公式都一样
在A50单元格里面输入
=M*50-sum(A1:A49)
注意,这里“M”就是你要求的平均数,你也可以把他关联到某个单元格
这样就可以了
如果不清楚可以给我一个邮箱,我做好发给你
⑷ python 哪个函数和matlab corrcoef函数功能相同
cov
这个函数是实现这个功能的
另外,对于任意两个维度之间的相关关系可以用pearsonr来计算
哦,忘了说了,cov是numpy里面的,pearsonr是scipy.stats里面的
⑸ python polyfit函数怎么使用
用polyfit(X,Y,1)得到的拟合函数只能得到a,b,但不能得到线性相关系数R^2。如想要得到其线性相关系数,可以用regress(y,X),其使用格式
[b,bint,r,rint,stats] = regress(y,X);
b——拟合系数
bint——b的置信区间
r——残差值
rint——r的置信区间
stats——检验统计量,第一个就是相关系数
例如:
x=[。。。];y=[。。。]
X=[x ones(n,1)]; %x的行数(列数)
[b,bint,r,rint,stats] = regress(y,X);
⑹ 初学python,怎样用python做pearson相关系数的检验呢,求指导啊
scipy.stats.pearsonr(x, y)
x和y为相同长度的两组数据
返回值 r, p-value
r是相关系数,取值-1~1. 表示线性相关程度
p-value越小,表示相关程度越显着。按照文档的说法“The p-values are not entirely reliable but are probably reasonable for datasets larger than 500 or so.”,p-value在500个样本值以上有较高的可靠性
⑺ pytnon中如何计算皮尔逊的p值
如何理解皮尔逊相关系数(Pearson Correlation Coefficient)?
皮尔逊相关系数理解有两个角度
其一, 按照高中数学水平来理解, 它很简单, 可以看做将两组数据首先做Z分数处理之后, 然后两组数据的乘积和除以样本数
Z分数一般代表正态分布中, 数据偏离中心点的距离.等于变量减掉平均数再除以标准差.(就是高考的标准分类似的处理)
标准差则等于变量减掉平均数的平方和,再除以样本数,最后再开方.
所以, 根据这个最朴素的理解,我们可以将公式依次精简为:
其二, 按照大学的线性数学水平来理解, 它比较复杂一点,可以看做是两组数据的向量夹角的余弦.
皮尔逊相关的约束条件
从以上解释, 也可以理解皮尔逊相关的约束条件:
1 两个变量间有线性关系
2 变量是连续变量
3 变量均符合正态分布,且二元分布也符合正态分布
4 两变量独立
在实践统计中,一般只输出两个系数,一个是相关系数,也就是计算出来的相关系数大小,在-1到1之间;另一个是独立样本检验系数,用来检验样本一致性.
先举个手算的例子
使用维基中的例子:
例如,假设五个国家的国民生产总值分别是1、2、3、5、8(单位10亿美元),又假设这五个国家的贫困比例分别是11%、12%、13%、15%、18%。
创建2个向量.(R语言)
x<-c(1,2,3,5,8)
y<-c(0.11,0.12,0.13,0.15,0.18)
按照维基的例子,应计算出相关系数为1出来.我们看看如何一步一步计算出来的.
x的平均数是:3.8
y的平均数是0.138
所以,
sum((x-mean(x))*(y-mean(y)))=0.308
用大白话来写就是:
(1-3.8)*(0.11-0.138)=0.0784
(2-3.8)*(0.12-0.138)=0.0324
(3-3.8)*(0.13-0.138)=0.0064
(5-3.8)*(0.15-0.138)=0.0144
(8-3.8)*(0.18-0.138)=0.1764
0.0784+0.0324+0.0064+0.0144+0.1764=0.308
同理, 分号下面的,分别是:
sum((x-mean(x))^2)=30.8sum((y-mean(y))^2)= 0.00308
用大白话来写,分别是:
(1-3.8)^2=7.84 #平方
(2-3.8)^2=3.24 #平方
(3-3.8)^2=0.64 #平方
(5-3.8)^2=1.44 #平方
(8-3.8)^2=17.64 #平方
7.84+3.24+0.64+1.44+17.64=30.8
同理,求得:
sum((y-mean(y))^2)= 0.00308
然后再开平方根,分别是:
30.8^0.5=5.5497750.00308^0.5=0.05549775
用分子除以分母,就计算出最终结果:
0.308/(5.549775*0.05549775)=1
再举个简单的R语言例子(R在这里下载:http://cran.r-project.org/bin/macosx/)
假设有100人, 一组数据是年龄,平均年龄是35岁,标准差是5岁;另一组数据是发帖数量,平均帖子数量是45份post,标准差是8份帖子.
假设这两组都是正态分布.我们来求这两者的皮尔逊相关系数,R脚本如下:
> x<-rnorm(n=100,mean=35,sd=5) #创建一组平均数为35,标准差为5,样本数为100的随机数
> y<-rnorm(n=100,mean=45,sd=8) #创建一组平均数为45,标准差为8,样本数为100的随机数
> cor.test(x,y,method="pearson") #计算这两组数的相关,并进行T检验
然后R输出结果为:
Pearson's proct-moment correlation
data: x and y
t = -0.0269, df = 98, p-value = 0.9786
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.1990316 0.1938019
sample estimates:
cor
-0.002719791
当然,这里是随机数.也可以用非随机的验证一下计算.
皮尔逊相关系数用于网站开发
直接将R与Ruby关联起来
调用很简单,仿照上述例子:
cor(x,y)
就输出系数结果了.
有这么几个库可以参考:
https://github.com/alexgutteridge/rsr...
https://github.com/davidrichards/stat...
https://github.com/jtprince/simpler
说明, 以上为ruby调用库. pythone程序员可以参考: Rpy (http://rpy.sourceforge.net/)
简单的相关系数的分类
0.8-1.0 极强相关
0.6-0.8 强相关
0.4-0.6 中等程度相关
0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关
ps : 这个网站开发者不要再次发明轮子,本来用markdown语法写作很爽,结果又不得不花时间来改动.请考虑尽快支持Markdown语法.
皮尔森相关系数的就是
x和y的协方差/(x的标准差∗y的标准差)
判断两组数的线性关系程度。
⑻ python(pandas模块)
1.什么是pandas? numpy模块和pandas模块都是用于处理数据的模块。 numpy主要用于针对数组进行统计计算,处理数字数据比较方便。 pandas除了可以处理数字数据,还可...
⑼ python计算多个数组的相关性
线性相关:主要采用皮尔逊相关系数来度量连续变量之间的线性相关强度;
线性相关系数|r| 相关程度
0<=|r|<0.3 低度相关
0.3<=|r|<0.8 中度相关
0.8<=|r|<1 高度相关
1 函数
相关分析函数:
DataFrame.corr()
Series.corr(other)
说明:
如果由数据框调用corr方法,那么将会计算每个列两两之间的相似度
如果由序列调用corr方法,那么只是计算该序列与传入序列之间的相关度
返回值:
dataFrame调用:返回DataFrame
Series调用: 返回一个数值型,大小为相关度
2 案例
import pandas
data=pandas.read_csv('C:\\Users\\Desktop\\test.csv')
print(data.corr())
#由数据框调用corr方法,将会计算每个列两两之间的相似度,返回的是一个矩形
print(data['人口'].corr(data['文盲率']))
#由某一列调用corr方法,只是计算该序列与传入序列(本例中的'文盲率')之间的相关度
print(data['超市购物率','网上购物率','文盲率','人口']).corr()