我们上应用回归分析(R语言版)这门课,老师每讲完一章就会带我们一起写这一章模型的代码,由于我们班同学大多会python不会R语言(包括我~~),所以代码都用python写。

这次写此书第二章.一元线性回归课后习题2.15的一些代码:

题目:一家保险公司十分关心其总公司营业部加班的程度,决定认真调查一下现状。经过10周时间,收集了每周加班时间的数据和签发的新保单数目, x 为每周签发的新保单数目, y 为每周加班时间(小时),数据见表-练习2.15

求:

(1)画散点图。

(2) x 与 y 之间是否大致呈线性关系?
(3)用最小二乘估计求出回归方程。 
(4)求回归标准误差
(5)给出的置信度为95%的区间估计。
(6)计算:x与 y 的决定系数。 
(7)对回归方程做方差分析。
(8)做回归系数β1的显著性检验
(9)做相关系数的显著性检验。
(10)对回归方程做残差图并做相应的分析。
(11)该公司预计下一周签发新保单 x0 =1000张,需要的加班时间是多少?
(12)给出 y0 的置信度为95%的精确预测区间和近似预测区间。
(13)给出 E ( y0 )的置信度为95%的区间估计

用到的数据表-练习2.15

代码部分:

# -*- coding: UTF-8 -*-
#首先导入我们需要的库,我用的是pycharm,在pycharm事先安装好这些库
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import pandas as pd
from patsy import dmatrices
from statsmodels.stats.api import anova_lm
import scipy

# Load data
df = pd.read_csv('‪C:\Users\joyyiyi\Desktop\练习2.15.csv')

#(1)   画散点图代码:
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(df['x'], df['y'], 'o', label='data')
ax.legend(loc='best')
plt.show()#(3)OLS建模求出回归方程:
#=========第一种建模方======================================
y,X = dmatrices('y~x', data=df, return_type = 'dataframe')
mod = sm.OLS(y,X)
result = mod.fit()
print(result.summary())
#==========第二种建模方式(类R语言方式)======================================
result1 = smf.ols('y~x',data=df).fit()
# print(result1.params),这种只输出回归系数结果
print(result1.summary())
#(4)求回归标准误差
print(result.scale) #result.scale是σ²,回归标准误差是σ,要开根号np.sqrt(result.scale)

#(5)(6)(8)答案在问题(3)结果已经给出

#问题(5): 的置信度为95%的区间估计分别为:[-0.701,0.937],[0.003,0.005]

#问题(6):R方=0.9

#问题(8):的P值=0.000

#(7)方差分析
table = anova_lm(result, typ=2)
print(table)#(9)相关系数的显著性检验
#pearson相关系数检验
cortest = scipy.stats.pearsonr(df['x'],df['y'])
print(cortest)
#(10) 计算残差
eres = result.resid
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(eres, 'o', label='resid')
plt.show()
#我们老师还教了标准化残差和学生化残差的代码
# 标准化残差
stand_eres = eres / np.sqrt(result.scale)  # eres.std()
print(stand_eres)# 学生化残差
infl = result.get_influence()
# studentied_eres = infl.summary_table()
studentied_eres = infl.resid_studentized_internal
print(studentied_eres)
# 问题(11)单值预测,当x0=1000
print("单值预测\n\n")
predictvalues = result.predict(pd.DataFrame({'x': [1000]}))
print(predictvalues)
print("\n\n")

#问题(11)得到y0=3.703

#问题(12)和(13)代码:
predictions = result.get_prediction(pd.DataFrame({'x': [1000]}))
print("E(Y0)区间估计以及y0的精确预测区间:\n\n")
print(predictions.summary_frame(alpha=0.05))
print("\n\n")
print("y0的近似预测区间:\n")#手动公式计算
ylow=3.703-2*np.sqrt(result.scale)
yup=3.703+2*np.sqrt(result.scale)
print(ylow,yup)
问题(1)画散点图:

建模结果: 

问题(7)对回归方程做方差分析结果:

问题(9)相关系数的显著性检验:

问题(10)残差图:

分析(比较简单哈):残差值正常且分布均匀

问题(12): y0 的置信度为95%的精确预测区间:[2.519,4.887]和近似预测区间:[2.743,4.663]。
问题(13): E ( y0 )的置信度为95%的区间估计:[3.284,4.123]

代码整理(完整版):

​
# -*- coding: UTF-8 -*-
#首先导入我们需要的库,我用的是pycharm,在pycharm事先安装好这些库
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import pandas as pd
from patsy import dmatrices
from statsmodels.stats.api import anova_lm
import scipy# Load data
df = pd.read_csv('‪C:\Users\joyyiyi\Desktop\练习2.15.csv')#(1)   画散点图代码:
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(df['x'], df['y'], 'o', label='data')
ax.legend(loc='best')
plt.show()#(3)OLS建模求出回归方程:
#=========第一种建模方======================================
y,X = dmatrices('y~x', data=df, return_type = 'dataframe')
mod = sm.OLS(y,X)
result = mod.fit()
print(result.summary())
#==========第二种建模方式(类R语言方式)======================================
result1 = smf.ols('y~x',data=df).fit()
# print(result1.params),这种只输出回归系数结果
print(result1.summary())
#(4)求回归标准误差
print(result.scale) #result.scale是σ²,回归标准误差是σ,要开根号np.sqrt(result.scale)
#(5)(6)(8)答案在问题(3)结果已经给出#问题(5): 与的置信度为95%的区间估计分别为:[-0.701,0.937],[0.003,0.005]#问题(6):R方=0.9#问题(8):的P值=0.000#(7)方差分析
table = anova_lm(result, typ=2)
print(table)#(9)相关系数的显著性检验
#pearson相关系数检验
cortest = scipy.stats.pearsonr(df['x'],df['y'])
print(cortest)
#(10) 计算残差
eres = result.resid
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(eres, 'o', label='resid')
plt.show()
#我们老师还教了标准化残差和学生化残差的代码
# 标准化残差
stand_eres = eres / np.sqrt(result.scale)  # eres.std()
print(stand_eres)# 学生化残差
infl = result.get_influence()
# studentied_eres = infl.summary_table()
studentied_eres = infl.resid_studentized_internal
print(studentied_eres)
# 问题(11)单值预测,当x0=1000
print("单值预测\n\n")
predictvalues = result.predict(pd.DataFrame({'x': [1000]}))
print(predictvalues)
print("\n\n")
#问题(11)得到y0=3.703#问题(12)和(13)代码:
predictions = result.get_prediction(pd.DataFrame({'x': [1000]}))
print("E(Y0)区间估计以及y0的精确预测区间:\n\n")
print(predictions.summary_frame(alpha=0.05))
print("\n\n")
print("y0的近似预测区间:\n")#手动公式计算
ylow=3.703-2*np.sqrt(result.scale)
yup=3.703+2*np.sqrt(result.scale)
print(ylow,yup)
​

第一篇学习笔记,排版可能不太ok,会继续努力,有错误地方请指出~谢谢大家~有问题欢迎交流~

学习记录1-一元线性回归模型(附上python代码)相关推荐

  1. 基于R语言一元线性回归模型实例及代码

    基于R语言一元线性回归模型实例及代码 题目描述 数据特征及可视化 建立模型与初步评价 (自己写lm()代码) 显著性检验 整体显著性检验 数学理论 系数显著性检验 代码实现系统显著性检验 回归诊断 异 ...

  2. 一元线性回归模型及其Python案例

    回归的概念:(其实就是用曲线拟合的方式探索数据规律) 回归问题的分类: 一元线性回归: 线性回归模型是利用线性拟合的方式探寻数据背后的规律.如下图所示,先通过搭建线性回归模型寻找这些散点(也称样本点) ...

  3. 《计量经济学》学习笔记之一元线性回归模型

    注意:本笔记以文字概括为主,公式为辅,问为啥,因为贴图片和打公式对于我来说,太烦啦~所以,就只把每个章节里觉得重要的一些概念记下来. 书籍:<计量经济学(第三版)>–李子奈 导航 下一章: ...

  4. 机器学习(一元线性回归模型)

    模型:一元线性回归模型 回归分析:建立方程模拟两个或者多个变量之间是如何相互关联,被预测的变量称为因变量(结果),用来进行预测的变量称为 自变量(输入参数),当输入参数只有一个(输出1个)时,称为一元 ...

  5. 简单一元线性回归模型

    线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛.其表达形式为y = w'x+b,w为特征的回归系数,b为截距项. 回归是一种监督学习任务 ...

  6. 回归分析:一元线性回归模型 白话解析与案例实现

    线性学习 回归分析是研究自变量x与因变量y的关系的方法. 生活中经常会有类似的关系,例如工龄与工资的关系.房屋面积与价格的关系等等. 一元线性回归模型 只是涉及一个自变量的关系,可以用一元线性方程来表 ...

  7. 计算机线性回归实验报告,实验二 一元线性回归模型的估计、检验、预测和应用-学生实验报告...

    实验二 一元线性回归模型的估计.检验.预测和应用-学生实验报告 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 17.90 积分 飞矢告牌葬秸笆麦蜘 ...

  8. 传统机器学习模型解说01:一元线性回归模型

    引入 年薪和工作年限有关吗? 可见两个变量之间存在明显的线性关系,而根据常识,工作年限是因,年薪是果. 那么,是否存在某个模型,如图中的一次函数直线,来描述两个变量之间的关系呢? 原理简述与背景介绍 ...

  9. 小福利,带你快速了解数据分析之一元线性回归模型和多元线性回归模型

    大家好,我是天空之城,今天给大家带来小福利,带你快速了解一元线性回归方程模拟和多元线性回归方程模拟 主要用来进行数据的相关性分析 之前在研究生阶段用过一个叫origin的数据处理软件,只要是科研数据都 ...

最新文章

  1. AtCoder Regular Contest 071 D - 井井井 / ###
  2. 十厂商发起成立软件自律联盟
  3. foreach用法_25个你不得不知道的数组reduce高级用法
  4. C++线程同步之事件(生产者与消费者问题)
  5. ES6基础5(Promise)-学习笔记
  6. activity中获取fragment布局_安卓开发入门教程Fragment
  7. 【SAP解决方案干货合集】满满的干货,是您了解华为云SAP解决方案的必备利器
  8. pytorch GPU分布式训练 数据并行
  9. 辽宁师范大学计算机学院查寝吗,辽宁师范大学宿舍怎么样 住宿条件好不好
  10. 统计学常用的数据分析方法总结
  11. word流程图怎么做虚线框_word虚线框怎么打 word中目录虚线怎么打?
  12. 品牌如何正确联动B站UP主“恰饭视频”,最近一支不像恰饭视频的作品在B站火了
  13. 荣耀变局之下,国产智能手机九年往事
  14. MySQL练习题全部
  15. KVM虚拟机 装系统 命令行
  16. html text decoration,更好利用text-decoration属性
  17. 爱普生打印机在计算机上的地址,爱普生打印机怎么使用 爱普生打印机使用方法【详解】...
  18. BUU-Crypto-异性相吸
  19. oppo A3怎么刷机 oppo A3的刷机教程 oppo A3完美解除账号锁
  20. could only be written to 0 of the 1 minReplication nodes.

热门文章

  1. 【笔记】歌词显示问题
  2. Fecshop的安装以及配置
  3. P1401 矩阵连乘问题
  4. 软件工程凉了?很多大学撤销软工硕士学科!
  5. string类的常用方法有哪些以及用法
  6. 2022年塑料管材市场规模
  7. 【C++】Visual Studio教程(五) -安装 Visual Studio
  8. 宽带射频放大器OA4SMM4(1)
  9. ACCESS 2003中的 LEFT JOIN
  10. 如何用示波器测量串口