通过相关系数和自由度求置信度

  • 相关系数
  • 置信度
  • T分布
  • 数据
  • 代码
  • 结果

在网上找了很多,发现没有这一类的代码,都是求置信区间的,所以写了个匹配置信度的代码,记录一下,方便以后自己来看

相关系数

相关系数的公式:

r=∑i=1n(xi−xˉ)(yi−yˉ)∑i=1n(xi−xˉ)2×∑i=1n(yi−yˉ)2r=\frac{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)}{\sqrt{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2} \times \sum_{i=1}^{n}\left(y_{i}-\bar{y}\right)^{2}}} r=∑i=1n​(xi​−xˉ)2×∑i=1n​(yi​−yˉ​)2​∑i=1n​(xi​−xˉ)(yi​−yˉ​)​

置信度

这里的置信度指的是T分布上临界值对应的置信度,通过相关系数和自由度求临界值的公式为:
t=rn−21−r2t=\frac{r \sqrt{n-2}}{\sqrt{1-r^{2}}} t=1−r2​rn−2​​
其中n-2是自由度,r是相关系数,t是t分布的临界值。

T分布


数据

数据大概是这样的,共有F0-F308这些组数据,8万多行,对每组数据的两列求相关系数,再通过相关系数求出t的临界值,得出相关系数对应的置信度。

代码

// An highlighted block
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 18 11:06:15 2019@author: ChenW
"""import math
import pandas as pd
import numpy as np
from scipy.stats import t
#T分布的临界值
percents = [0.200,0.150,0.100, 0.050, 0.025, 0.020, 0.010, 0.005, 0.0025,0.001,0.0005]
tfb = np.array([t.isf(percents, df=i) for i in range(0, 10000)])
#print (t)
dft = pd.DataFrame(tfb,columns=['60%','70%','80%', '90%','95%','96%','98%','99%','99.5%',"99.8%","99.9%"])
#dft.to_csv('T-distribution.csv',index = None) def confidence(r,n):                    return (r*(math.sqrt(n-2))/(math.sqrt(1-r*r)))path = r'C:\Users\gxn-pc\Desktop\correlation\new308\newdata308.csv'
file = open (path,'rb+')
df = pd.read_csv(file,index_col='JoinTXT')
#print(df)
df['count'] = 0
df['correlation'] = 0.0000
for i in range(0,327):filename = "F%d"%iprint(i)j = 0for index,row in df.iterrows():        if index == filename:j += 1A = df.loc[filename]['TR_LST'] B = df.loc[filename]['TR_EVI']ab = np.array([A, B]) dfab = pd.DataFrame(ab.T,columns=['A', 'B'])c = dfab.A.corr(dfab.B) df.loc[filename,'correlation'] = cdf.loc[filename,'count'] = j
#            print(j)
#            print(c)else:pass
df2 = df['count']
df3 = df['correlation']
#print(df2)
df3 = pd.concat([df2,df3], axis=1)
if df3.duplicated:dataF=df3.drop_duplicates()
print(dataF)
n = dataF['count']
r = dataF['correlation']
t = [0 for x in range(0, 308)]
for i in range(0,308):t[i] = confidence(r[i],n[i])
print(t)
dataF['T'] = t
a3 = [0 for x in range(0, 308)]
j = 0
a4 = ['<=60%','70%','80%', '90%','95%','96%','98%','99%','99.5%',"99.8%","99.9%"]
for i in range(0,308):for index,row in dft.iterrows():if index == n[i]-2 :a1 = dft.ix[index,'60%':'99.9%']for j in range(0,11):if a1[j] >= abs(t[i]) and j!=0:print(j)j = a4[j-1]a3[i] = j                     breakif a1[10] < abs(t[i]) :a3[i] = a4[10]breakif a1[0]>=abs(t[i]):a3[i] = a4[0]breakelse:pass
dataF['P'] = a3
dataF.to_csv('XJG.csv',header=True,index=True)

结果

通过相关系数和自由度求置信度相关推荐

  1. Matlab概率统计编程指南

    Matlab概率统计编程指南 第4章 概率统计 本章介绍MATLAB在概率统计中的若干命令和使用格式,这些命令存放于MatlabR12\Toolbox\Stats中. 4.1 随机数的产生 4.1.1 ...

  2. 假设检验2_t分布的应用

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮 ...

  3. 特征选择:概述与方法

    不知各位读者是否遇到这种情形:在一项机器学习工作中,千方百计地变换模型并调整参数,但收效甚微:后经高人指点,对进入模型的特征做了一些修改后,即使用了最基础的模型,其效果也有如脱胎换骨.这似乎在暗示我们 ...

  4. 推断统计python化(参数估计,假设检验与 t检验)

    目录 1.参数估计 1.1 点估计 1.2 区间估计 1.2.1 区间估计概述 1.2.2 区间估计的方法 1.3 进行区间估计的Python函数 2. 案例分析 3. 假设检验 3.1 假设检验概述 ...

  5. 基于PCA的故障诊断方法(matlab)

    1. PCA原理分析 PCA的原理主要是将原始数据进行降维.其具体工作原理参照:CodingLabs - PCA的数学原理 2. 数据预处理 训练数据集(只有正样本)为维数据,即有n个采样值,每个采样 ...

  6. 【程序员眼中的统计学(12)】相关与回归:我的线条如何? (转)

    阅读目录 目录 1 算法的基本描述 2 算法的应用场景. 3算法的优点和缺点 4 算法的输入数据.中间结果以及输出结果 5 算法的代码参考 6 共享 相关与回归:我的线条如何? 作者 白宁超 2015 ...

  7. python 卡方分箱算法_python实现二分类的卡方分箱示例

    解决的问题: 1.实现了二分类的卡方分箱: 2.实现了最大分组限定停止条件,和最小阈值限定停止条件: 问题,还不太清楚,后续补充. 1.自由度k,如何来确定,卡方阈值的自由度为 分箱数-1,显著性水平 ...

  8. 正态分布概率表_三、统计概率思维

    一.误差思维(只要有估计,就会有误差) 1.误差永远存在,并且不可避免. 2.多次测量用平均值的统计方式取得结果,尽量避免偶然因素的影响. 二.置信区间(误差范围) 1.统计学最核心思想:用样本信息估 ...

  9. 灰色关联与TOPSIS法 —— python

    目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得 ...

  10. 灰色关联与TOPSIS法 —— matlab

    目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得 ...

最新文章

  1. Heartbeat V2.x双机热备安装
  2. Selenium 与 PhantomJS
  3. AIX主机信任关系配置
  4. WebBrowser,挖坑,跳坑,填坑
  5. CCNA初认识——链路捆绑命令
  6. java B2B2C源码电子商务平台 --zuul跨域访问问题
  7. 带你彻底弄明白!java实现平衡二叉树
  8. java词频统计——web版支持
  9. Citrix XenApp6.5 另类发布文档
  10. SPSS实现单样本t检验
  11. json模块的转义dump 和反转义 loap
  12. Python案例 计算 S=1-3+5-7+9-11+…+n,计算n=100001或n=10000001时的和。
  13. 计算机名和ip不匹配,错误:主机名/ IP不匹配证书的altnames Node.js的
  14. 我们称字母顺些和逆写都相同的单词或者短语为“回文”,编写一个Java程序判断输入的一行文本是否是回文。
  15. STM32常见通信方式(TTL、RS232、RS485、I2C,SPI,CAN)总结
  16. A53开发板命令操作wifi-wap主要命令
  17. 自然语言处理简介及研究方向
  18. Java篇第三回——运算符、表达式与语句(C不好的也快来)
  19. 在线拍卖系统、竞拍源码中降价拍(荷兰式拍卖)的逻辑和实现
  20. 基于Java毕业设计中医药科普网站源码+系统+mysql+lw文档+部署软件

热门文章

  1. 用java观察者模式解耦经典三层架构
  2. 基于 SpringBoot + MyBatis 的在线五子棋对战
  3. AD怎么设置相同网络的线宽
  4. 抖音特效转场模板预设 Premiere调色预设 PR光效转场等900个特效包(含教程及转场音效)
  5. linux系统安装yarn,centos安装yarn
  6. 图书馆管理系统-登录流程
  7. 导航鼠标悬停变色--H5+css
  8. 别人的底鼓/808为什么比你有力?你可能忘了用这个插件
  9. Python+Dlib库实现人脸合成
  10. ubuntu运行迅雷极速版