python进行回归分析(2)

数据来源:选自课件

ixiyi
154
256
3108
42013
53016
64017
75019
86025
96525
109029
1112046

这里面涉及到求回归系数,拟合值,拟合直线,F检验统计量的计算。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv('C:/Users/admin/Desktop/2019.10.05/回归分析/data.csv')  # 读取数据

data=data.drop('i', axis=1)  #去掉序号那一列

#样本相关系数,可用于回归检验
r=data.corr()

describe=data.describe()          #描述性统计
mean=describe.loc['mean']         #列均值
T=list(data.apply(sum,axis=0))    #列和

m=data.index.size                 #数据行数

# xx=0
# yy=0
# xy=0
# for i in range(0,m):
#     xx=xx+data.iloc[i,0]**2
#     yy=yy+data.iloc[i,1]**2
#     xy=xy+data.iloc[i,0]*data.iloc[i,1]
#
# lxx=xx-m*(mean[0]**2)   
# lyy=yy-m*(mean[1]**2)  
# lxy=xy-m*mean[0]*mean[1]

lxx=sum(x**2 for x in data['xi'])-m*(mean[0]**2)
lyy=sum(x**2 for x in data['yi'])-m*(mean[1]**2)

# 举例:
# func = lambda x,y:x*y
# result=map(func,[1,2,3,4],[4,3,2,1])
# list_result = list(result)
# print(list_result)

func = lambda x,y:x*y
result=map(func,data['xi'],data['yi'])
list_result = list(result)
lxy=sum(list_result)-m*mean[0]*mean[1]


# print(lxx)
# print(lxy)
# print(lyy)

b1=lxy/lxx
b0=mean[1]-b1*mean[0]
print("常数项回归系数:\n%f\n一次项回归系数:\n%f"%(b0,b1))

#小数位数的控制,("%.4f" % b0)是str类型,所以转为浮点数
# b0=float(("%.4f" % b0))
# b1=float("%.4f" % b1)

data['拟合值']=[b0+b1*x for x in data['xi']]  #添加一列:拟合值
print("\n拟合值:")
print(data)                                    #在原有数据上加有拟合值一列

ST=lyy         #总离差平方和:ST
SR=sum((x-mean[1])**2 for x in data['拟合值'])    #残差平方和:SR
SE=lyy-b1*lxy    #回归平方和:SE
print("\nF统计量的值:")
print((SR/1)/(SE/(m-2)))   #F统计量

plt.scatter(data['xi'],data['yi'],alpha=0.5, color='blue')    # 1.真实的点
plt.plot(data['xi'],data['拟合值'], alpha=0.5,color='red', linewidth=4)  # 2.拟合的直线

plt.show()

其中describe=data.describe()的输出为:

 

xi

yi

count 

11.000000

11.000000

mean

45.000000

18.909091

std

36.878178

12.103343

min

5.000000

4.000000

25%

15.000000

10.500000

50%

40.000000

17.000000

75%

62.500000

25.000000

max

120.000000

46.000000

输出结果:常数项回归系数:4.366811,一次项回归系数:0.323162,F统计量的值:286.52242428783325

 SPSS回归分析结果:


模型摘要                
模型    R       R 方    调整后 R 方    标准估算的误差
1    .985a     .970          .966                   2.226
a 预测变量:(常量), xi                


ANOVAa                        
模型           平方和     自由度      均方             F    显著性
1    回归    1420.296     1       1420.296     286.522    .000b
      残差    44.613         9           4.957        
      总计    1464.909    10            
a 因变量:yi                        
b 预测变量:(常量), xi             


          

      

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值