医药数理统计方法9-2一元线性回归
- 格式:ppt
- 大小:80.00 KB
- 文档页数:24
一元线性回归分析法一元线性回归分析法是根据过去若干时期的产量和成本资料,利用最小二乘法“偏差平方和最小”的原理确定回归直线方程,从而推算出a(截距)和b(斜率),再通过y =a+bx 这个数学模型来预测计划产量下的产品总成本及单位成本的方法。
方程y =a+bx 中,参数a 与b 的计算如下:y b x a y bx n-==-∑∑ 222n xy x yxy x y b n x (x)x x x --==--∑∑∑∑∑∑∑∑∑ 上式中,x 与y 分别是i x 与i y 的算术平均值,即x =n x ∑ y =ny ∑ 为了保证预测模型的可靠性,必须对所建立的模型进行统计检验,以检查自变量与因变量之间线性关系的强弱程度。
检验是通过计算方程的相关系数r 进行的。
计算公式为:xy-x y当r 的绝对值越接近于1时,表明自变量与因变量之间的线性关系越强,所建立的预测模型越可靠;当r =l 时,说明自变量与因变量成正相关,二者之间存在正比例关系;当r =—1时,说明白变量与因变量成负相关,二者之间存在反比例关系。
反之,如果r 的绝对值越接近于0,情况刚好相反。
[例]以表1中的数据为例来具体说明一元线性回归分析法的运用。
表1:根据表1计算出有关数据,如表2所示:表2:将表2中的有关数据代入公式计算可得:1256750x ==(件) 22561350y ==(元) 17509500613507501705006b 2=-⨯⨯-⨯=(元/件) 100675011350a =⨯-=(元/件) 所建立的预测模型为:y =100+X相关系数为:9.01163810500])1350(3059006[])750(955006[1350750-1705006r 22==-⨯⨯-⨯⨯⨯= 计算表明,相关系数r 接近于l ,说明产量与成本有较显著的线性关系,所建立的回归预测方程较为可靠。
如果计划期预计产量为200件,则预计产品总成本为:y =100+1×200=300(元)。
⼀元线性回归1、概念⼀元线性回归是最简单的⼀种模型,但应⽤⼴泛,⽐如简单地预测商品价格、成本评估等,都可以⽤⼀元线性模型,本节主要讲解scikit-learn⼀元线性回归的使⽤以及作图说明。
y=f(x)叫做⼀元函数,回归的意思就是根据已知数据复原某些值,线性回归(regression)就是⽤线性的模型做回归复原。
那么⼀元线性回归就是:已知⼀批(x,y)值来复原另外未知的值。
⽐如:告诉你(1,1),(2,2),(3,3),那么问你(4,?)是多少,很容易复原出来(4,4),这就是⼀元线性回归问题的求解。
当然实际给你的数据可能不是严格线性,但依然让我们⽤⼀元线性回归来计算,那么就是找到⼀个最能代表已知数据的⼀元线性函数来做复原和求解。
2、scikit-learn的⼀元线性回归1import numpy as np2from sklearn.linear_model import LinearRegression3 x = [[1],[2],[3],[4],[5],[6]]4 y = [[1],[2.1],[2.9],[4.2],[5.1],[5.8]]5print x6print(y)7 model = LinearRegression()8 model.fit(x, y) #训练模型9 predicted = model.predict([13])[0]#预测输出10print predictedView Code结果:1 [[1], [2], [3], [4], [5], [6]]2 [[1], [2.1], [2.9], [4.2], [5.1], [5.8]]3 [ 12.82666667]这⾥⾯的model是⼀个estimator,它通过fit()⽅法来算出模型参数,并通过predict()⽅法来预测,LinearRegression的fit()⽅法就是学习这个⼀元线性回归模型:y = a + bx原数据的图像:1import matplotlib.pyplot as plt2from matplotlib.font_manager import FontProperties3 font = FontProperties()4 plt.figure()5 plt.title('this is title')6 plt.xlabel('x label')7 plt.ylabel('y label')8 plt.axis([0, 25, 0, 25])9 plt.grid(True)10 x = [[1],[2],[3],[4],[5],[6]]11 y = [[1],[2.1],[2.9],[4.2],[5.1],[5.8]]12 plt.plot(x, y, 'k.')13 plt.show()View Code结果:合在⼀起:1import numpy as np2from sklearn.linear_model import LinearRegression3import matplotlib.pyplot as plt4from matplotlib.font_manager import FontProperties56 x = [[1],[2],[3],[4],[5],[6]]7 y = [[1],[2.1],[2.9],[4.2],[5.1],[5.8]]8 model = LinearRegression()9 model.fit(x, y)10 x2 = [[0], [2.5], [5.3], [9.1]]11 y2 = model.predict(x2)1213 plt.figure()14 plt.title('linear sample')15 plt.xlabel('x')16 plt.ylabel('y')17 plt.axis([0, 10, 0, 10])18 plt.grid(True)19 plt.plot(x, y, 'k.')20 plt.plot(x2, y2, 'g-')21 plt.show()View Code其他相关⽤法⽅差计算:⽅差⽤来衡量样本的分散程度,⽅差公式是⽤numpy库已有的⽅法:1 np.var([1, 2, 3, 4, 5, 6], ddof=1)1 3.5得出⽅差是3.5。