簡單線性迴歸及實現

0. 前提介紹:

爲什麼需要統計量?
     統計量:描述數據特徵

0.1 集中趨勢衡量

0.1.1均值(平均數,平均值)(mean)
這裏寫圖片描述

graphic
{6, 2, 9, 1, 2}
(6 + 2 + 9 + 1 + 2) / 5 = 20 / 5 = 4

0.1.2中位數 (median): 將數據中的各個數值按照大小順序排列,居於中間位置的變量

0.1.2.1. 給數據排序:1, 2, 2, 6, 9
0.1.2.2. 找出位置處於中間的變量:2
當n爲基數的時候:直接取位置處於中間的變量
當n爲偶數的時候,取中間兩個量的平均值

0.1.3衆數 (mode):數據中出現次數最多的數

0.2

0.2.1. 離散程度衡量

0.2.1.1方差(variance)
這裏寫圖片描述

graphic

{6, 2, 9, 1, 2}

(1) (6 - 4)^2 + (2 - 4) ^2 + (9 - 4)^2 + (1 - 4)^2 + (2 - 4)^2
= 4 + 4 + 25 + 9 + 4
= 46

(2) n - 1 = 5 - 1 = 4

(3) 46 / 4 = 11.5

0.2.1.2標準差 (standard deviation)
這裏寫圖片描述

graphic

s = sqrt(11.5) = 3.39

1. 介紹:迴歸(regression) Y變量爲連續數值型(continuous numerical variable)

如:房價,人數,降雨量
分類(Classification): Y變量爲類別型(categorical variable)
如:顏色類別,電腦品牌,有無信譽

2. 簡單線性迴歸(Simple Linear Regression)

2.1 很多做決定過過程通常是根據兩個或者多個變量之間的關係
2.3 迴歸分析(regression analysis)用來建立方程模擬兩個或者多個變量之間如何關聯
2.4 被預測的變量叫做:因變量(dependent variable), y, 輸出(output)
2.5 被用來進行預測的變量叫做: 自變量(independent variable), x, 輸入(input)

3. 簡單線性迴歸介紹

3.1 簡單線性迴歸包含一個自變量(x)和一個因變量(y)
3.2 以上兩個變量的關係用一條直線來模擬
3.3 如果包含兩個以上的自變量,則稱作多元迴歸分析(multiple regression)

4. 簡單線性迴歸模型

4.1 被用來描述因變量(y)和自變量(X)以及偏差(error)之間關係的方程叫做迴歸模型
4.2 簡單線性迴歸的模型是:
這裏寫圖片描述
其中:        參數               偏差
5. 簡單線性迴歸方程
E(y) = β0+β1x
這個方程對應的圖像是一條直線,稱作迴歸線
其中,β0是迴歸線的截距
β1是迴歸線的斜率
E(y)是在一個給定x值下y的期望值(均值)

6.正向線性關係:

這裏寫圖片描述
7.負向線性關係:
這裏寫圖片描述
8.無關係:
這裏寫圖片描述

9. 估計的簡單線性迴歸方程
ŷ=b0+b1x
這個方程叫做估計線性方程(estimated regression line)
其中,b0是估計線性方程的縱截距
b1是估計線性方程的斜率
ŷ是在自變量x等於一個給定值的時候,y的估計值

10. 線性迴歸分析流程:
這裏寫圖片描述

11. 關於偏差ε的假定
11.1 是一個隨機的變量,均值爲0
11.2 ε的方差(variance)對於所有的自變量x是一樣的
11.3 ε的值是獨立的
11.4 ε滿足正態分佈

12 簡單線性迴歸模型舉例:

汽車賣家做電視廣告數量與賣出的汽車數量:
這裏寫圖片描述
12.1 如何練處適合簡單線性迴歸模型的最佳迴歸線?
這裏寫圖片描述
這裏寫圖片描述
使sum of squares最小

12.1.2 計算
這裏寫圖片描述

分子 = (1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-20)+(3-2)(27-20)
= 6 + 4 + 0 + 3 + 7
= 20

分母 = (1-2)^2 + (3-2)^2 + (2-2)^2 + (1-2)^2 + (3-2)^2
= 1 + 1 + 0 + 1 + 1
4

b1 = 20/4 =5

這裏寫圖片描述

b0 = 20 - 5*2 = 20 - 10 = 10

這裏寫圖片描述
12.2 預測:

假設有一週廣告數量爲6,預測的汽車銷售量是多少?
這裏寫圖片描述

# -*- encoding=utf-8 -*-
# 簡單現行迴歸:只有一個自變量 y=k*x+b 預測使 (y-y*)^2  最小
import numpy as np


def fitSLR(x, y):
    n = len(x)
    dinominator = 0
    numerator = 0
    for i in range(0, n):
        numerator += (x[i] - np.mean(x)) * (y[i] - np.mean(y))
        dinominator += (x[i] - np.mean(x)) ** 2

    print("numerator:" + str(numerator))
    print("dinominator:" + str(dinominator))

    b1 = numerator / float(dinominator)
    b0 = np.mean(y) / float(np.mean(x))

    return b0, b1


# y= b0+x*b1
def prefict(x, b0, b1):
    return b0 + x * b1


x = [1, 3, 2, 1, 3]
y = [14, 24, 18, 17, 27]

b0, b1 = fitSLR(x, y)
y_predict = prefict(6, b0, b1)
print("y_predict:" + str(y_predict))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章