线性回归和卡方分布与方差分析

article/2025/9/29 19:27:34

**1、线性回归

在这里插入图片描述

在这里插入图片描述
例子

import numpy as np
import pylab
def compute_error(b,m,data):totalError = 0#Two ways to implement this#first way# for i in range(0,len(data)):#     x = data[i,0]#     y = data[i,1]##     totalError += (y-(m*x+b))**2#second wayx = data[:,0]y = data[:,1]totalError = (y-m*x-b)**2totalError = np.sum(totalError,axis=0)return totalError/float(len(data))
def optimizer(data,starting_b,starting_m,learning_rate,num_iter):b = starting_bm = starting_m#gradient descentfor i in range(num_iter):#update b and m with the new more accurate b and m by performing# thie gradient stepb,m =compute_gradient(b,m,data,learning_rate)if i%100==0:print 'iter {0}:error={1}'.format(i,compute_error(b,m,data))return [b,m]def compute_gradient(b_current,m_current,data ,learning_rate):b_gradient = 0m_gradient = 0N = float(len(data))#Two ways to implement this#first way# for i in range(0,len(data)):#     x = data[i,0]#     y = data[i,1]##     #computing partial derivations of our error function#     #b_gradient = -(2/N)*sum((y-(m*x+b))^2)#     #m_gradient = -(2/N)*sum(x*(y-(m*x+b))^2)#     b_gradient += -(2/N)*(y-((m_current*x)+b_current))#     m_gradient += -(2/N) * x * (y-((m_current*x)+b_current))#Vectorization implementationx = data[:,0]y = data[:,1]b_gradient = -(2/N)*(y-m_current*x-b_current)b_gradient = np.sum(b_gradient,axis=0)m_gradient = -(2/N)*x*(y-m_current*x-b_current)m_gradient = np.sum(m_gradient,axis=0)#update our b and m values using out partial derivationsnew_b = b_current - (learning_rate * b_gradient)new_m = m_current - (learning_rate * m_gradient)return [new_b,new_m]def plot_data(data,b,m):#plotttingx = data[:,0]y = data[:,1]y_predict = m*x+bpylab.plot(x,y,'o')pylab.plot(x,y_predict,'k-')pylab.show()def Linear_regression():# get train datadata =np.loadtxt('data.csv',delimiter=',')#define hyperparamters#learning_rate is used for update gradient#defint the number that will iteration# define  y =mx+blearning_rate = 0.001initial_b =0.0initial_m = 0.0num_iter = 1000#train model#print b m errorprint 'initial variables:\n initial_b = {0}\n intial_m = {1}\n error of begin = {2} \n'\.format(initial_b,initial_m,compute_error(initial_b,initial_m,data))#optimizing b and m[b ,m] = optimizer(data,initial_b,initial_m,learning_rate,num_iter)#print final b m errorprint 'final formula parmaters:\n b = {1}\n m={2}\n error of end = {3} \n'.format(num_iter,b,m,compute_error(b,m,data))#plot resultplot_data(data,b,m)if __name__ =='__main__':Linear_regression()

2、卡方分布**
若n个相互独立的随机变量ξ₁、ξ₂、……、ξn ,均服从标准正态分布N(0,1)(也称独立同分布于标准正态分布),则这n个服从标准正态分布的随机变量的平方和在这里插入图片描述构成一新的随机变量,其分布规律称为分布(chi-squaredistribution)。其中参数n称为自由度(通俗讲,样本中独立或能自由变化的自变量的个数,称为自由度),正如正态分布中均值或方差不同就是另一个正态分布一样,自由度不同就是另一个在这里插入图片描述分布。记为在这里插入图片描述。 分布的均值为自由度 n,记为若n个相互独立的随机变量ξ₁、ξ₂、……、ξn ,均服从标准正态分布N(0,1)(也称独立同分布于标准正态分布),则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为分布(chi-squaredistribution)。其中参数n称为自由度(通俗讲,样本中独立或能自由变化的自变量的个数,称为自由度),正如正态分布中均值或方差不同就是另一个正态分布一样,自由度不同就是另一个分布。记为。 分布的均值为自由度 n,记为 E( x^2) = n; 分布的方差为2倍的自由度(2n),记为 D( ) = 2n。; 分布的方差为2倍的自由度(2n),记为 D( x^2) = 2n。
在这里插入图片描述
从卡方分布图可以看出:卡方分布在第一象限内,卡方值都是正值,呈正偏态(右偏态),随着参数 n 的增大;卡方分布趋近于正态分布;随着自由度n的增大,卡方分布向正无穷方向延伸(因为均值n越来越大),分布曲线也越来越低阔(因为方差2n越来越大)。
3.方差分析
方差分析----单因素方差分析/双因素方差分析
ANOVA 由英国统计学家R.A.Fisher首创,为纪念Fisher,以F命名,故方差分析
又称 F 检验 (F test)。
单因素方差分析:众多因素中仅有一个因素的的水平有多个,其余因素只有一个水平。
多因素方差分析:多个因素有多个水平。

方差分析的主要功能就是验证两组样本,或者两组以上的样本均值是否有显著性差异,即均值是否一样。

这里有两个大点需要注意:①方差分析的原假设是:样本不存在显著性差异(即,均值完全相等);②两样本数据无交互作用(即,样本数据独立)这一点在双因素方差分析中判断两因素是否独立时用。

原理:

方差分析的原理就一个方程:SST=SS组间+SSR组内 (全部平方和=组间平方和+组内平方和)

说明:方差分析本质上对总变异的解释。

组间平方和=每一组的均值减去样本均值
组内平方和=个体减去每组平方和
方差分析看的最终结果看的统计量是:F统计量、R2。
在这里插入图片描述
其中:g为组别个数,n为每个组内数据长度。

from scipy import stats
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
from statsmodels.stats.multicomp import pairwise_tukeyhsd
import warnings
warnings.filterwarnings("ignore")import itertoolsdf2=pd.DataFrame()
df2['group']=list(itertools.repeat(-1.,9))+ list(itertools.repeat(0.,9))+list(itertools.repeat(1.,9))df2['noise_A']=0.0
for i in data['A'].unique():df2.loc[df2['group']==i,'noise_A']=data.loc[data['A']==i,['1','2','3']].values.flatten()df2['noise_B']=0.0
for i in data['B'].unique():df2.loc[df2['group']==i,'noise_B']=data.loc[data['B']==i,['1','2','3']].values.flatten()  df2['noise_C']=0.0
for i in data['C'].unique():df2.loc[df2['group']==i,'noise_C']=data.loc[data['C']==i,['1','2','3']].values.flatten()      
# for A
anova_reA= anova_lm(ols('noise_A~C(group)',data=df2[['group','noise_A']]).fit())
print(anova_reA)
#B
anova_reB= anova_lm(ols('noise_B~C(group)',data=df2[['group','noise_B']]).fit())
print(anova_reB)
#C
anova_reC= anova_lm(ols('noise_C~C(group)',data=df2[['group','noise_C']]).fit())
print(anova_reC)

参考:https://github.com/Shicoder/DeepLearning_Demo/tree/master/linear_regression_use_gradient_decent

http://www.shujuren.org/article/104.html
https://www.cnblogs.com/jin-liang/p/9852321.html
http://blog.sciencenet.cn/blog-2577109-1143281.html
https://www.cnblogs.com/jin-liang/p/9852321.html


http://chatgpt.dhexx.cn/article/YtA0QSTn.shtml

相关文章

数据分析之卡方检验

1、卡方检验定义 卡方检验,是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用,包括两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。 是一种非参数检验方法。它的原假设…

高斯分布和卡方分布

高斯分布和卡方分布 高斯分布和卡方分布高斯分布1 单元高斯分布1.1 一维随机变量1.2 标准正太分布1.3 numpy中使用正太分布 2 多元高斯分布2.1 独立多元/维高斯分布2.2 举例-画2维独立不相关高斯图2.3 相关系数2.3 举例-画2维不独立相关高斯图 高斯分布和卡方分布 高斯分布 1…

卡方分布(Chi-Square Distribution)

1.卡方分布 在统计学中, 很多假设检验的检验统计量在原假设下服从卡方分布. 这种检验统计量服从卡方分布的假设检验适用于分类数据. Γ ( v 2 ) \Gamma(\frac{v}{2}) Γ(2v​)为伽马函数 检验此PDF的积分值是否为1? 自由度(DoF)的正式定义为…

卡方检验和卡方分布

什么是卡方检验 卡方检验是一种用途很广的计数资料的假设检验方法。它属于非参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。 它在分类资料…

卡方分布分析与应用

卡方检验(chi-square,记为 χ2 检验)是统计学中常用来计数数据分析的方法,对于总体的分布不作任何假设,因此它属于非参数检验法中的一种。本博文从理论到实际应用去阐述卡方检验,最后用python语言去实现卡方分布的代码。 1. 卡方…

常见分布 的 数学期望以及方差公式

一、通用公式【数学期望】 1》求解数学期望 2》数学期望的性质 二、常用分布的期望与方差 1》精简版: 2》叨叨版:

期望、方差

一、期望和方差的定义 随机变量(Random Variable) X 是一个映射,把随机试验的结果与实数建立起了一一对应的关系。而期望与方差是随机变量的两个重要的数字特征。 1. 期望(Expectation, or expected value) 期望是度量一个随机变量取值的集中位置或平均水平的最基…

[考研数学]概率论难点总结:样本标准差,样本均值,均值的期望和方差,与t分布、卡方分布和F分布的关系及推导

首先需要清楚一件事情,样本均值为X拔(上面有个棍) 样本的均值是讲从总体中抽样,这些样本的均值,而均值是指所有样本的真实均值。 后面部分很好推导,将括号展开后,由三部分组成,中间的部分为2倍的样本和样本…

统计学——卡方检验和卡方分布

什么是卡方检验 卡方检验是一种用途很广的计数资料的假设检验方法。它属于非参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。 它在分类资料…

卡方分布与卡方检验

1.卡方分布 卡方分布(chi-square distribution, χ2 χ 2 -distribution)是概率统计里常用的一种概率分布,也是统计推断里应用最广泛的概率分布之一,在假设检验与置信区间的计算中经常能见到卡方分布的身影。 我们先来看看卡方分布的定义:…

卡方分布

卡方分布是抽样分布的一种。抽样分布其实与概率论中的大数定律有密切的关系。当关注的对象的概率不可知,意味着只知道数据,不知道其内在规律;另一方面,关注的对象是可以分解成多种因素的组合时,就引入了抽样分布。抽样分布是描述从多个随机变量中抽取数据并且加以组合后,…

你还记得吗,超重要的3大抽样分布?

你还记得吗,超重要的3大抽样分布? 原创2022-07-03 21:07爱阅读 三大抽样统计分布是指卡方分布(χ2分布),t分布和F分布,是来自正态总体的三个常用的分布。 1、卡方分布 卡方分布是指符合标准正态分布的样…

卡方分布、方差分析

卡方分布: 首先我们先把现代数学中的数理统计中的卡方分布已经烂大街的定义先放下来,我先回到卡方检验的诞生的之地。 在1900年,皮尔森发表了著名的关于卡方检验的文章,该文章被认为是现代统计学的基石之一。在该文章中&#…

SVN汉化包安装后,没有出现对应的语言选项问题解决(附SVN1.12.1汉化包下载地址)

检查SVN与汉化包的版本是否一致 1、查看tortoise SVN的版本 2、在SVN的安装目录下,将对应版本的汉化包拷过去 注意,保证Languages目录下的文件都已删掉 3、双击安装汉化包,安装完成时,在出现的最后一个页面中,选中Con…

TortoiseSVN安装中文语言包

TortoiseSVN安装中文语言包 1.TortoiseSVN 1.14.0下载地址 下载网址:https://tortoisesvn.net/downloads.zh.html 2.安装 直接下一步 3.下载中文安装包 找到安装目录 在桌面空白处右击TortoiseSVN设置

SVN安装语言包后无中文

给svn下载了个语言包,但是安装后无反应,重启了下还是无反应。 后来看了一下svn版本,是12的下载的语言包是11的。就重新下一个版本一样的试试。结果ok了 下载安装ok去选择即可,我的安装后自动就选择了。 版本选择地址https://osd…

SVN:下载、安装和中文设置

一、SVN 下载 步骤1:点击下方链接进入 SVN 下载网址 下载网址:https://tortoisesvn.net/downloads.html 步骤2:点击下载 TortoiseSVN 1.14.3-64-bit 步骤3:点击下载 中文语言包 步骤4:下载完成 二、SVN 安装 步骤1…

SVN 汉化(官网下载汉化包)

这是网址 Downloads TortoiseSVN 看好版本 下滑 点击后他可能反应慢不用管等待

解决SVN语言包安装后无法出现下拉框选择

前言: 今天终于有空研究下SVN为啥安装完语言包后无法出现中文下拉框的问题,直接在官网下载语言包安装后也无效。。 看了网上好多教程都是让你删Language目录再安装的,结果也布星。。折磨。。。 然后想了下,干脆去官网对着版本号…

TortoiseSVN 安装中文语言包,SVN中文语言包

SVN中TortoiseSVN 是比较出门的一款SVN软件 TortoiseSVN 是Subversion 版本控制系统的一个免费开源客户端。 由于TortoiseSVN 默认是英文的;所以很多小伙伴可能有压力;那么这次我们来介绍一下怎么样安装中文的语言包 工具/原料 能上网的windows电脑一台 …