Chapter 2 简单线性回归

#导入库介绍
%matplotlib inline 
from scipy import stats# 专门解决科学计算中各种标准问题域的集合
import pandas as pd #快速处理大量数据结构和函数,选取子集等
import numpy as np #基础包,各种运算
import matplotlib.pyplot as plt #绘制数据图表
import statsmodels.api as sm#拟合多种统计模型
import math #出现求指数次数为1/2的情况可以用到

2.1 引言

  在学习回归之前,需要对简单线性回归有一个初步的了解,在初步学习之后,我们就可以慢慢对之后的研究有自己的一个理解。首先,先引进协方差和相关系数这两个概念,来度量两个变量之间线性关系的方向及强度。然后再构造简单的线性回归模型。

2.2协方差和相关系数

  以一个小例子出发,简单先了解以下本章节需要学习的知识点:均值、标准差、相关系数、协方差等

#由一个例子出发去解决均值、标准差等参数
x=[1,2,3,4,5]
y=[6,7,8,9,10]
print(x)
print(y)

#p22 如何求取均值
#第一步:定义一个求均值的函数
#第二步:刚开始总和为0
#第三步:利用for循环让求和的次数随着i的值依次叠加
#第四步:停止后的sum除以观测的长度
#第五步:return得到mean

def mean(x):
    sum=0
    for i in range(len(x)):
        sum+=x[i]
    mean=sum/len(x)
    return mean

print('X的平均数是:'+str(mean(x)))
print('Y的平均数是:'+str(mean(y)))


#p23 如何求取协方差 与标准差

#协方差
#第一步:定义一个求协方差的函数
#第二步:因为需要用到x_mean与y_mean,导入,并且总和为0
#第三步:利用for循环让求和的次数随着i的值依次叠加
#第四步:停止后的sum除以len(x)-1
#第五步:return得到cov

def cov(x,y):
    x_mean=np.mean(x)
    y_mean=np.mean(y)
    sum=0
    for i in range(len(x)):
        sum+=(x[i]-x_mean)*(y[i]-y_mean)
        cov=sum/len(x)-1
        return cov
print("cov(x,y)="+str(cov(x,y)))


#标准差
def s(x):
    x_mean=np.mean(x)
    x_sum_square=0
    for i in range(len(x)):
        x_sum_square+=(x[i]-x_mean)**2
        s=math.sqrt(x_sum_square/(len(x)-1))
        return s
print("sx="+str(s(x)))


#相关系数
#第一步:定义相关系数函数
#第二步:将x_mean与y_mean函数导入
#第三步:计算离差乘积求和
#第四步:计算x与y的离差平方和
#第五步:输出所定义的系数函数
def cor(y,x):
    x_mean=np.mean(x)
    y_mean=np.mean(y)
    sum_deviation=0
    
    for i in range(len(x)):
        sum_deviation+=(x[i]-x_mean)*(y[i]-y_mean)
   
    x_sum_square=0
    for i in range(len(x)):
        x_sum_square+=(x[i]-x_mean)**2
    
    y_sum_square=0
    for i in range(len(y)):
        y_sum_square+=(y[i]-y_mean)**2
    cor= sum_deviation/math.sqrt(x_sum_square* y_sum_square)
    return cor
print('\ncor(x,y)='+str(cor(y,x)))

【1】以上是对相关统计量的一些代码定义

协方差的符号反映了Y与X的线性关系的方向,计算协方差之前需要对数据进行标准化。

相关系数既可以解释为标准化后变量的协方差,也可以解释为协方差与两个变量标准差的比。因而它可以度量Y与X之间的相关的方向以及强度的非常有用的量。

#第25页表格和图

#从table 2.3 计算观测变量与响应变量的散点图

#第一步:我们需要输出我们所需要的数据
dataset1=pd.read_csv('F:\linear  regression\chapter 2\Table 2.3.csv')#dataset1 为表2.3的数据
print(dataset1)
print('Table 2.3 A Data Set With a Perfect Nonlinear Relationship Between Y and X')

#第二步:可以调整我们需要输出的散点图的大小
plt.figure(figsize=(5.5,3.5))#长5.5,宽3.5
#第三步:将表格中的两个变量输出,利用scatter 拟合散点图
x=dataset1['X']
y=dataset1['Y']      
plt.xlabel("X")#横坐标
plt.ylabel("Y")#纵坐标
plt.xticks([-4,0,4])#将横坐标的刻画点-4,0,4
plt.scatter(x,y,color='green')#每个点的坐标以及设置坐标颜色为绿色
plt.suptitle('Figure2.2   A scatter plot of Y versus X in Table 2.3 ',y=-0.05,color='green')#表的名称
plt.show()#显示图像


# 第25页的表格2.3的自相关系数的推断

#计算Table 2.3 的相关系数
dataset1=pd.read_csv('F:\linear  regression\chapter 2\Table 2.3.csv') #读取Table 2.3 的相关数据信息

y=dataset1['Y']
x=dataset1['X']

#定义自相关函数
def cor(x,y): 
    x_mean=np.mean(x)
    y_mean=np.mean(y)
    #计算分子:离差乘积求和
    sum_deviation=0
    for i in range(len(x)):
         sum_deviation+=(y[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值