pbj0812의 코딩 일기

[통계학] python을 이용한 블로그 방문자수 회귀선 그리기 본문

Science/통계학

[통계학] python을 이용한 블로그 방문자수 회귀선 그리기

pbj0812 2020. 8. 29. 01:32

* 주의 : 이 데이터는 회귀를 사용하기에는 좋은 데이터가 아닙니다!!!

0. 목표

 - python을 이용한 내 블로그 방문자 수 회귀선 그리기

 - Y = a + bX (링크)

1. 실습

 1) library 호출

import matplotlib.pyplot as plt

 2) 데이터 생성

  - y : 블로그를 다시 쓰기 시작한 2019년 2월 부터의 방문자수를 사용

  - x : 2019년 2월을 1로 두고 1씩 증가하는 형태

y = [98, 221, 221, 419, 440, 451, 531, 523, 699, 612, 977, 1002, 1263, 1531, 2174, 3320, 3758, 5161]
x = [i for i in range(1, len(y) + 1)]

 3) 데이터 확인

plt.bar(x, y)

 4) 평균 함수

def mean(inp):
    result = 0
    len_inp = len(inp)    
    for i in inp:
        result += i
    result = result / len_inp
    return result

 5) b 계산 함수

def make_b(x, y):
    mean_x = mean(x)
    mean_y = mean(y)
    son = 0
    mom = 0
    for i in range(len(x)):
        son += (x[i] - mean_x) * (y[i] - mean_y)
    for i in range(len(y)):
        mom += (x[i] - mean_x) ** 2
    b = son / mom
    return b

 6) a 계산 함수

def make_a(x, y):
    mean_x = mean(x)
    mean_y = mean(y)
    b = make_b(x, y)
    a = mean_y  - (b * mean_x)
    return a

 7) a, b 연산

b = make_b(x, y)
a = make_a(x, y)

 8) 회귀로 구한 y 값

reg_y = []
for i in x:
    reg_y.append(a + (b * i))

 9) 그래프 생성

plt.scatter(x, y, label = 'real')
plt.plot(x, reg_y, c = 'r', label = 'reg')
plt.legend()

 10) seaborn 패키지를 통한 결과 비교

import seaborn as sns
import pandas as pd

df = pd.DataFrame({'x' : x, 'y' : y})

sns.lmplot(x = 'x', y = 'y', data = df, line_kws = {'color' : 'red'})

2. 참고

 - 선형 회귀 분석

 - 파이썬 회귀분석 그래프 그리기, seaborn을 이용하자!

Comments