IP주소에는 IPv4와 IPv6 두 가지 형식이 있는데, 

 

IPv4는 "A.B.C.D" 형태로 나타내면, 여기서 A, B, C, D는 0 이상 255이하의 정수이다.

 

IPv6는 "A:B:C:D:E:F:G:H" 형태로 나타내며, A,B,C,D,E,F,G,H는 각각 네 자리의 16진수이다. 

 

주어진 IP 주소가 어떤 형식인지 확인하여, IPv4인지 IPv6인지 알려주는 코드

import re

def is_ipv4(address):
    ipv4_pattern = r'^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$'
    return re.match(ipv4_pattern, address) is not None

def is_ipv6(address):
    ipv6_pattern = r'^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|' \
                   r'([0-9a-fA-F]{1,4}:){1,7}:|' \
                   r'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' \
                   r'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' \
                   r'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' \
                   r'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' \
                   r'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' \
                   r'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' \
                   r':((:[0-9a-fA-F]{1,4}){1,7}|:)|' \
                   r'fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|' \
                   r'::(ffff(:0{1,4}){0,1}:){0,1}(([0-9]{1,3}\.){3}[0-9]{1,3})|' \
                   r'([0-9a-fA-F]{1,4}:){1,4}:(([0-9]{1,3}\.){3}[0-9]{1,3}))$'
    return re.match(ipv6_pattern, address) is not None

address = input().strip()

if is_ipv4(address):
    print("IPv4")
elif is_ipv6(address):
    print("IPv6")

'알고리즘' 카테고리의 다른 글

N을 보는 시각  (1) 2025.03.30
기둥 세우기  (0) 2025.03.30
백준 파이썬 - 9506  (1) 2024.02.02
백준 파이썬 - 2869  (0) 2024.02.02
백준 파이썬 - 2292  (0) 2024.01.30

첫째 줄에 정수 N이 주어지는데 하루 동안 숫자 N을 볼수있는 시간은 몇초인지 출력하고 싶다.

예를 들어 N = 3일 때는 00:00:00부터 23:59:59까지 3이라는 숫자가 포함된 시간이 총 43875초라서 43875를 출력하면 된다. 

N = int(input())

count = 0

for hour in range(24):
  for minute in range(60):
    for second in range(60):
      time_str = f"{hour:02}{minute:02}{second:02}"
      if str(N) in time_str:
        count += 1

print(count)

'알고리즘' 카테고리의 다른 글

IP주소 판별하기  (0) 2025.04.01
기둥 세우기  (0) 2025.03.30
백준 파이썬 - 9506  (1) 2024.02.02
백준 파이썬 - 2869  (0) 2024.02.02
백준 파이썬 - 2292  (0) 2024.01.30

직사각형 형태의 궁전을 형성하는 모든 가로, 세로 줄에 대해서 적어도 기둥이 하나씩은 존재하도록 만들고자 할때, 세워야하는 기둥의 최솟값을 출력하는 프로그램을 작성하고 싶다.

첫째 줄에  궁전의 세로 크기 N과 가로 크기 M이 주어진다는 말.
N과 M은 50보다 작거나 같은 자연수.

둘째 줄부터는 N개의 줄에는 궁전의 상태가 주어지고
궁전의 상태는 1은 빈칸, 0은 기둥이 있는 칸이다.

세워야 하는 기둥의 최솟값을 출력하고 싶다.

입력 예시는
3 3
1 1 1
1 1 1
1 1 1 이면
출력예시는 3이다. 

N, M = map(int, input().split())

matrix_dimension = [N, M]

matrix = []
for i in range(N):
    matrix.append(list(map(int, input().split())))

count_row = 0
count_col = 0

for row in range(N):
  if sum(matrix[row]) == M:
    count_row += 1

for col in range(M):
  column_values = [matrix[row][col] for row in range(N)]
  
  if sum(column_values) == N:
    count_col += 1

if (count_col + count_row) < max(matrix_dimension):
  print((count_col + count_row))

else:
  if count_col > count_row:
    print(count_col)

  else:
    print(count_row)

'알고리즘' 카테고리의 다른 글

IP주소 판별하기  (0) 2025.04.01
N을 보는 시각  (1) 2025.03.30
백준 파이썬 - 9506  (1) 2024.02.02
백준 파이썬 - 2869  (0) 2024.02.02
백준 파이썬 - 2292  (0) 2024.01.30

소프트웨어


소프트웨어의 의미

  • 소프트웨어란 '컴퓨터 프로그램과 그와 관련된 문서들'
  • 소프트웨어는 컴퓨터를 작동하게 만드는 논리적 바탕을 제공
  • 컴퓨터 자체인 하드웨어(Hardware: H/W)에 대응하는 개념

 

하드웨어의 의미

  • 하드웨어는 컴퓨터 시스템의 물리적인 기반을 제공
  • 전자 회로와 그 밖의 물리적인 장치들로 이루어짐
  • 소프트웨어에 대응되는 개념

 

프로그램의 의미

  • 명령어들을 순서대로 나열해 놓은 것이 프로그램(program)
  • 프로그램을 작성하는 작업 - 프로그래밍(programming)
  • 프로그램을 작성하는 사람 - 프로그래머(programmer)

예) 

5!(5의 계승)을 구하는 스크래치(scratch) 프로그램

5!(5의 계승)을 구하는 파이썬(python) 프로그램

 

 

소프트웨어의 분류

  • 시스템 소프트웨어(system software) 컴퓨터 시스템을 가동시키는데 필수적인 운영체제 등
  • 응용 소프트웨어(applications software) 문서작성이나 게임 등 특정 분야의 업무 처리에 사용됨

 

시스템 소프트웨어

  • 컴퓨터 시스템들을 효율적으로 작동시킬 수 있는 프로그램
  • 대표적인 것은 운영체제(Operating System: OS)
  • 하드웨어와 응용 소프트웨어 사이에 위치, 컴퓨터 자원 관리

 

응용 소프트웨어

  • 운영체제 위에서 작동되는 소프트웨어
  • 워드프로세서, 엑셀, 파워포인트, 스프레드시트, 데이터베이스 관리, SAS, 동영상 플레이어, 각종 게임 등 수없이 많음

 

소프트웨어와 하드웨어 비중 변화

컴퓨터가 개발된 초창기에는 하드웨어가 큰 비중을 차지했음. 

최근에는 하드웨어의 비중이 크게 감소.

응용 소프트웨어의 비중이 점차 커지고 있음.

 

 

운영체제(ex Windows, MacOS, Linux)

운영체제는 시스템 소프트웨의 일종

컴퓨터를 지휘하고 관리하는 프로그램으로 통상 OS라고 함. 

컴퓨터 시스템 이용을 편리하게, 하드웨어를 효율적으로 관리

 

 

운영체제의 목표

① 컴퓨터 내의 하드웨어와 소프트웨어 자원들의 관리와 제어

② 컴퓨터의 편리한 인터페이스(interface)를 제공

③ 수행 중인 프로그램들의 효율적인 운영을 도와줌

④ 입출력에서 보조적인 기능을 수행

⑤ 오류가 발생할 경우 오류를 원활하게 처리함

 

 

 

소프트웨어를 받쳐주는 하드웨어의 구성

입력(키보드, 마우스, 스캐너, 터치 패드, 바코드)

출력(프린터, 모니터, 사운드 카드, 3D 프린터)

 

중앙처리 장치(CPU)

  • 중앙처리 장치는 하드웨어의 성능 좌우함.
  • CPU
  • 마이크로프로세서가 주로 사용됨.

 

기억장치(Main Memory)

통상 메모리라고 불림. 

 

 

소프트웨어 교육

>> 컴퓨팅 사고

 

 

소프트웨어의 중요성

소프트웨어가 다른 산업을 지배하거나 변화시킬 수 있음. 

 

  1. 전 산업의 부가가치 향상에 중요한 역할을 담당함. 
  2. 스마트화를 통하여 대부분의 제품을 혁신시킬 수 있음.
  3. 다른 시스템들과의 융합을 통해 생활을 편리하게 해줄 수 있음. 
  4. 소프트웨어는 가상공간을 통하여 인간의 소통 방식을 혁신시킬 수 있음. 
  5. 소프트웨어는 콘텐츠 생산과 유통에 기여함.

 

 

유능한 프로그래머가 부족한 원인은 우리나라 교육과도 관련이 있다.

프로그래밍은 문제 분석 후 프로그래밍 언어의 문법에 따라 작성

프로그램 작성은 매우 독창적인 일, 적성을 고려해야 함.

 

소프트웨어 산업과 통계

소프트웨어와 산업

  • 소프트웨어는 섬유, 자동차, 가전, 교육 등의 산업에 활용됨
  • 세계적으로는 구글, 애플, 마이크로소프트, 페이스북 등이 주도
  • 자동차 등 일반 산업에서도 소프트웨어와 융합하여 혁신 주도
  • 재난과 복지 등 다양한 사회문제 해결에도 SW가 활용됨.

소프트웨어는 점차 커지는 거대한 시장 형성

소프트웨어 대표 애플의 시가총액이 토요타차보다 3배이상이됨.

자동차, 반도체, 휴대폰 시장을 총합하면 세계 소프트웨어의 시장이 됨.

 

 

 

프로그래밍 언어

저급언어, 고급언어

 

저급언어 > 기계어, 어셈블리 언어, 목적 프로그램

고급언어 > 소스 프로그램 

 

번역 방식

컴파일러 방식, 인터프리터 방식

  • 컴퓨터는 0과 1의 조합으로 된 숫자만 다룰 수 있음.
  • 중간 역할을 해 줄 프로그래밍 언어 필요
  • 어셈블러, 컴파일러, 인터프리터

 

컴파일러와 인터프리터

특징, 방식 컴파일러 인터프리터
번역방법 프로그램 전체 번역 실행되는 행 단위로 번역
장점  한번 번역하면 빠른 시간 내에 전체 실행이 가능. 큰 기억 장치가 필요하지 않으며 번역 과정이 비교적 간단.
단점 프로그램의 일부를 수정하는 경우에도 전체를 다시 컴파일 반복문이 많은 경우 매 반복마다 번역
결과물  목적 언어로 된 프로그램 실행의 결과
적용언어  FORTRAN, Pascal, COBOL Lisp, Scratch

 

 

 


코딩

컴퓨터 프로그램을 수행하는 절차를 적어둔 명령어들인 코드를 작성하는 행위

 

 

코딩과 문제 해결

  • 코딩은 ‘문제해결을 위한 절차와 과정을 설정하고, 그것을 실행 가능한 프로그램으로 작성하는 일’
  • 코딩의 궁극적 목표는 주어진 문제를 제대로 해결하는 일

 

 

알고리즘 

  • 효율적인 코딩은 먼저 알고리즘(algorithm)부터 구상
  • 알고리즘은 ‘어떤 작업을 수행하는데 있어 적합한 절차와 과정’

컴퓨팅 사고

컴퓨팅 사고의 개념과 내용

컴퓨팅 사고는 컴퓨터과학자들의 문제해결 사고 방법 컴퓨터를 활용하여 여러 특성을 포함하는 문제해결 과정 각국에서 컴퓨팅 사고와 관련된 새로운 교과과정의 신설 다양한 사고를 통해 일상생활에도 효율적인 사고법을 적용

 

 

  • 데이터 수집과 분석, 자동화 등의 능력을 활용
  • 분석, 분해, 패턴인식, 추상화, 알고리즘, 평가 등의 과정

 

 


 

코딩과 관련된 다양한 교육 플랫폼

 

코드닷오알지, 코드카데미, 코드클럽, 생활코딩, 소프트웨어야 놀자

 

파이썬

  • 1991년 귀도 반 로섬(Guido van Rossum)이 개발
  • 파이썬(Python)은 고급 프로그래밍 언어
  • 비영리의 파이썬 소프트웨어 재단이 관리 
  • 개방적이고 공동체 기반의 모델
  • 어떤 값의 절대값 구하는 예와 파이썬 스크립트

 

파이썬의 주요 특징

  • 인터프리터 언어로서 실행결과를 즉석에서 확인 가능 
  • 일반 프로그래밍 언어들보다 문법이 비교적 간단
  • 수의 정의는 함수형 언어의 형태를 취하고 있음 
  • 문장의 끝을 표시하는 세미콜론(;) 기호가 없음
  • 들여쓰기를 사용하여 블록을 구분하는 독특한 문법 채용 
  • 플랫폼 독립적이며 동적 타이핑 대화형 언어 
  • C언어처럼 초보자들이 어려워하는 포인터 개념을 안 씀 
  • 사용 방법과 다양한 예를 통한 실습은 부록 2에 있음

 

'독서 > 과학' 카테고리의 다른 글

K반도체 대전략  (1) 2024.07.08
카이스트 미래전략 2024  (3) 2024.02.20
AI 이후의 세계  (1) 2024.01.19

GPT한테 물어보니깐 다음과 같이 쓰면 논리적일 것 같다고 해서 이렇게 씁니답.


1. 공모전에 참여한 이유

공모전에 어떻게 관심을 가지게 되었나요? 

 학교에서 수업 시간에 공모전에 참여하여 개개인마다의 인사이트를 얻고 발표를 하라는 교수님의 지시에 공모전을 찾아보다가 한 팀원이 '여기에 참여해보자!' 하여 24년 홍천군 공모전에 참여하게 되었습니다.

참가하게 된 계기나 목표가 있었나요?

 기왕 참가하게 된 거 상은 무조건 타고 간다는 마인드였습니다. '세상은 2등은 기억해주지 않기 때문에 1등 해보자라는 마음가짐'이였습니다.

2. 준비 과정

어떤 방식으로 준비했나요? (팀원 구성, 역할 분배, 공부 방법 등)

팀원들 중 2명은 서류 작성에 많은 도움을 주셨고, 저랑 다른 팀원 한 명은 전반적인 데이터를 분석하는 역할을 맡았습니다. 여타 다른 공모전들도 마찬가지로 공모전은 얼마나 진심으로 문제에 대해 고민했고 그것의 해결방안을 어떻게 잘 ppt에 녹여내는지가 관건이기에 문제를 잘 설정하는 것에 진심이였던 것 같습니다. 

 

어려웠던 점과 이를 어떻게 해결했나요?

 저희는 최적의 위치 선정과 관련된 프로젝트를 진행했는데 여기서 유클리디안 거리를 사용했을 때는 지형물, 건물과 같은 장애물을 제외하고 오로지 직선 거리만을 계산하기에 최적의 위치를 적절하게 선정하는데에 있어서 어려움이 있었습니다. 고민을 하던 와중 같이 데이터 분석 역할을 맡은 팀원 한 명이 '네이버 길찾기의 최소 경로를 사용하면 어떨까'라는 말을 해줬고, 이것이 저희가 가지고 있는 한계를 돌파해 줄 수 있는 key라는 느낌이 와 바로 진행하니 좋은 결과를 얻을 수 있었습니다. 

3. 공모전 진행 중 경험

공모전에서 겪은 인상 깊은 경험이 있나요? 

 사실 팀원들과 이렇게 호흡이 잘 맞고 좋은 사람들이랑 했던 기억이 많이 없어서.. 좋은 사람들과 힘든 시간을 극복해가면서 같이 성장하는 느낌을 받았던 게 참 좋았던 것 같습니다. 

예상과 달랐던 점이 있었나요?

 23년도에 했던 데이터 분석은 팀원들이 데이터 분석에 대해 관심없기도 했고 잘 몰라서 대충해서 그냥 혼자 다 했었는데 이번에도 그런 팀원이 있었기는 했지만 자신의 힘이 되는 한에서 끝까지 도와줄려고 하는 모습에서 감동?을 받았었고, 같이 데이터 분석을 하는 친구는 밤을 새가며 자신의 책임을 다 하는거에서 이 친구들이랑 더 많은 공모전이나 프로젝트 할 수 있었으면 좋겠다라고 생각했습니다. 

4. 결과 및 배운 점

공모전 결과(수상 여부와 관계없이) 어떤 점에서 성장했나요?

 음... 일단 최우수상! 1등했고, 힘든 시간 동안 같이 버텨준 팀원들이 가장 자랑스럽고, 팀장인 제가 역량이 부족했다고 생각했는데, 잘 따라주기도 했고 많은 도움을 받았습니다. 지금 팀장으로서 어떤 부분이 제가 부족한 지를 알게 된 거 같아 좋았습니다. 

어떤 기술이나 역량이 향상되었나요?

 공부의 본질을 알게 되었다고 해야하나..ㅋㅋㅋ 모르는게 있으면 가만히 있는게 아니라 고민하고 찾고 또 찾으면 결국 자신만의 답이 나온다? 그게 정답은 아니더라도 자신만의 답을 그렇게 많이 도출하다 보면 결국에는 근접할 수 있습니다. 결론은 탐구하고 인내하는 능력이 늘어난 것 같습니다. 

5. 소감 및 앞으로의 계획

이번 경험이 앞으로 어떤 영향을 줄 것 같나요?

 도전 = 두려움이 아니라 도전 = 성장 이라고 생각을 하면서 앞으로 살아가도록 도움을 준 것 같네요

다음에는 어떤 공모전에 도전하고 싶은가요?

 공모전보다 학회나 학술대회를 많이 참여하려고요. 이번 공모전하면서 제 수학적 식견이 낮아 논문의 수식을 이해못했던 적이 있어서 부끄럽더라고요. 네. 그래서 학회나 학술대회에 많이 참여할 것 같습니다.

'프로그래밍 > 프로젝트' 카테고리의 다른 글

쇼핑몰 지점별 매출 예측 AI  (0) 2024.08.29
자기상관분석  (0) 2024.05.21
시계열 데이터의 정상성  (0) 2024.05.21
ARIMA 모델 검증 및 예측 정확도 평가  (0) 2024.05.21
ARIMA 모델  (0) 2024.05.21

Lecture_13__Simple_Linear_Regression_in_Matrix_Format_25_02_18__ (3).pdf
0.30MB

안녕하세요! 

 

경북대학교 통계학과에서 열심히 공부하고 있는 대학생입니답!

 

다름이 아니라 이제 작년이죠? 2024년 한 해를 굉장히 다사다난하게 보낸 것 같아 이렇게 기록으로 남기고 싶어

글을 쓰게 됐네요 ㅎㅎ

 

1학기와 2학기 때 생각나는 거 위주로 쓰겠습니답

 

 

1학기

 

음 사실 작년 1학기는 방황을 조금 많이 했던 것 같거든요 그 이유가

 

통계학이 실질적으로 사회에 얼마나 많은 영향을 끼치는지 저는 크게 와닿지 않았기 때문입니다..

 

사회를 바꾸는 건 공학, 압도적인 기술력, 자본이라고 생각했기에 주식 동아리도 들어가고 공대수업을 듣기도 하고 했었죠..

 

그런데 이렇게 방황하던 시기에 작년에 우리 학과에 오신 저의 지도 교수님과의 상담을 통해 제 생각이 틀렸다는 걸 알게 되었습니다.

 

1학년의 과목만을 듣고 통계학의 본질을 규명하려고 했던 저를 생각하니 참 어리석고 미련했다는 생각이 들더군요.

 

뭐 어쨌든 그렇게 해서 저는 다시 통계학을 열심히 공부할려고 마음을 먹고 교수님이 추천해주신 '선형대수학1'과목과 '해석학1' 과목을 듣기로 했습니다.

 

그런데 이게 무슨 일이지.... 너무너무너무너무너무 어려웠습니다.

 

욕이 나오기도 했고, 이렇게 하는게 맞나 싶기도 했습니다.

 

그 흔적을 보여드리자면

 

 

이런 식으로 개념을 이해하기 위해 대부분의 개념을 6번 정도 정독 후 6번 쓰기를 반복하여 제 걸로 만들고자 했습니다 ㅎㅎ.. 지금 생각해도 이때 시간박치기를 해석학1 과목에 제일 많이 한 것 같네요ㅋㅋㅋㅋㅋ

 

어쨌든 이러한 노력에 성과를 얻은건 해석학 기말고사 1등이긴 했습니다 하하하

 

기분이 좋았죠

저도 통계학이나 수학 쪽으로 조금이라도 재능(?)이 있지 않을까 라는 생각을 이때 처음 하게 되었습니다.

 

 

 

 

2학기

후.. 어찌됐든 이렇게 1학기는 힘들었던 거에 비해서 굉장히 기분좋게 마무리가 되었고

 

2학기를 맞이했을 때는 흠.. 

 

1학기보단 과목때문에 힘들었다기 보다는 프로젝트, 공모전이 많아서 많이 힘들었던 기억이 나네요..

 

사실 저는 이번년도에 많은 활동을 했다고 자부할 수 있는데 

 

이 사진을 보면 알 수 있습니다.

 

사실 여기 있는거 블로그에 올려서 정리하고 싶은데

 

그때그때 하나씩 바로바로!! 정리했어야했는데 제가 그럴 엄두가 도저히 안 났기도 했고 이번 2학기는 정말 만성 피로하고 해서 그러지를 못했네요... 

 

그래도 프로젝트는 다 정리할 겁니다! 기대해주세요!

 

저기서 가장 기억에 남는 프로젝트는 팀프로젝트였는데 하나는 통계콘서트라고 저희 과에서 주최하는 경북대 재학생을 대상으로 하는 데이터 공모전 중 가장 큰 대회였고, 하나는 홍천군에서 주관하는 데이터 기반 공모전 이였습니다.

 

대회의 주제를 잡는 것도 어려웠고 분석하는 과정에도 어려운 점이 한 두가지가 아니였는데 그럼에도 버틸 수 있었던 이유는 바로 제 팀원분들이 너무너무 훌륭하고 협조적이였다는 점입니다.

 

팀원 분들은 제가 모르는 게 있으면 잘 대답해주셨고 제가 주장하는 의견도 무시하지 않고 끝까지 들어줬으며 비판할 건 비판하며 정말로 이 프로젝트가 잘 됐으면 하는 사람들로 모였기에 효율적으로 일도 잘 처리했고 그 결과 


후후

 

최우수상 둘 다 받았습니답

 

기분 굉장히 좋았고 특히 통계콘서트에서 만났던 사람들은 꼭 한번 더 공모전 같이 하고 싶네요

 

이렇게 학기가 마무리되고 지난 날을 회상해보니 재밌네요

 

앞으로 그럼 어떻게 할거냐고요?

 

저는 이번에 1학기 때 저에게 많은 도움을 주셨던 그 교수님이 운영하시는 랩실에 들어갑니다

 

가서 통계학이랑 수학 많이 공부하려고요 

 

취업도 취업이지만 수학과 통계학을 좀 더 본질적으로 하고 싶거든요

 

그렇게 해서 앞으로 좋은 결과를 낼 수 있도록 열심히 달려보겠습니다!

 

응원해주시면 감사드리구요 간간히 근황 많이 올리겠습니다

아 물론 프로젝트 정리도 조만간 해야죠 네네

 

긴 글 읽어주셔서 감사드리고 

언제나 좋은 하루 되세요!

Regression modeling with a two-level categorical variable

Suppose that Z is a two-level categorical variable such that Z = A or B.

Define

$$X = 
\begin{cases} 
1, & \text{if } Z = A \\ 
0, & \text{otherwise} 
\end{cases}$$

 

Then we can use the following regression model, $$ Y = \beta_0 + \beta_1X + \epsilon$$

  • $\beta_0 = \mu_B$(called the base line)
  • $\beta_1 = \mu_A - \mu_B$
  • Consequently, $\beta_0 + \beta_1 = \mu_A$

Since $E(Y) = \beta_0 + \beta_1X$,

if Z = A, X = 1, $E(Y) = \beta_0 + \beta_1 = \mu_A$

if Z = B, X = 0, $E(Y) = \beta_0 = \mu_B$

 

 

Suppose that Z is a three-level categorical variable such that Z = A, B or C. 

Define

$X_1 = 
\begin{cases} 
1, & \text{if } Z = A \\ 
0, & \text{otherwise} 
\end{cases}$

 

$X_2 = 
\begin{cases} 
1, & \text{if } Z = B \\ 
0, & \text{otherwise} 
\end{cases}$

 

Then we can use the following regression model, $$y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \epsilon$$

  • $\beta_0 = \mu_C$ (called the base line)
  • $\beta_1 = \mu_A - \mu_C$
  • $\beta_2 = \mu_B - \mu_C$

 

Since $E(Y) = \beta_0 + \beta_1X_1 + \beta_2X_2$,

if Z = A, (1, 0), $E(Y) = \beta_0 + \beta_1 = \mu_A$

if Z = B, (0, 1), $E(Y) = \beta_0 + \beta_2 = \mu_B$

if Z = C, (0, 0), $E(Y) = \beta_0 = \mu_C$

 

 

Two categorical variables

Consider two categorical variables: One at 3 levels ($F_1, F_2, F_3$) and the other at 2 levels ($B_1, B_2$).

Then, the model can be written as $$Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \beta_3X_3 + \epsilon,$$

where

$$X_1 = 1\,if\,F_2\, X_1 = 0, if\,not$$

$$X_2 = 1\,if\,F_3\, X_2 = 0, if\,not$$

$$X_3 = 1\,if\,B_2\, X_3 = 0, if\,not$$

 

Note that $F_1$ and $B_1$ : base levels

  • $\beta_0 = \mu_{11}$ (mean of combination of base levels)
  • $\beta_1 = \mu_{2j} - \mu_{1j}$ for any level $B_j$ (j = 1, 2)
  • $\beta_2 = \mu_{3j} - \mu_{1j}$ for any level $B_j$ (j = 1, 2)
  • $\beta_3 = \mu_{i2} - \mu_{i1}$ for any level $F_i$ (i = 1, 2, 3)

 

Interaction model with two categorical variables 

Consider an extended model as follows:

$$Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \beta_3X_3 + \beta_4X_4 + \beta_5X_5 + \epsilon,$$

where 

$$X_1 = 1\,if\,F_2\, X_1 = 0, if\,not$$

$$X_2 = 1\,if\,F_3\, X_2 = 0, if\,not$$

$$X_3 = 1\,if\,B_2\, X_3 = 0, if\,not$$

$$X_4 = X1X3, \, and\, X_5 = X_2X_3$$

 

Note that $F_1$ and $B_1$ : Base levels.

  • $\beta_0 = \mu_{11}$ (mean of combination of base levels)
  • $\beta_1 = \mu_{21} - \mu_{11}$ for any level $B_1$ only
  • $\beta_2 = \mu_{31} - \mu_{11}$ for any level $B_1$ only
  • $\beta_3 = \mu_{12} - \mu_{11}$ for any level $F_1$ only 
  • $\beta_4 = (\mu_{22} - \mu_{12}) - (\mu_{21} - \mu_{11})$
  • $\beta_5 = (\mu_{32} - \mu_{12}) - (\mu_{31} - \mu_{11})$

 

Since $F_2$, $B_1$, $\mu_{21} = \beta_0 + \beta_1$ then we can write $\beta_1 = \mu_{21} - \mu_{11}$.

 

 

Example(Two categorical variables with interaction)

 

이걸 보고 우리가 질문할 수 있는 것은 다음과 같습니다. 

  1. interaction이 유의한가요?
    • $H_0: \beta_4 = \beta_5 = 0$ vs. $H_1: \beta4 \neq 0\, or\, \beta_5 \neq 0 $
    • SAS에서 추가적인 옵션이 test를 걸어줘서 확인을 해도 되나, T-test에서 유추가 가능합니다. 
  2. interaction이 없는 모델과 비교할 때는 $R_a^2$을 비교합니다. 

결론: 범주형에 대한 회귀분석을 진행할 때도 interaction을 고려해볼 수 있다는 것입니다. 

 

 

Needs for transformations

Transformations are applied to accomplish certain objectives such as 

  • to ensure that the model is correctly specified,
  • to achieve normality,
  • or to stabilize the variance.

 

 

Example : Bacteria deaths due to X-ray radiation

$$n_t = \beta_0 + \beta_1 + \epsilon_t $$

 

9개의 plot 중에 첫 번째 plot을 통해 Lack of fit($E(\epsilon) \neq 0$) 문제를 확인할 수 있습니다.

따라서 X 변환을 통해 이 문제를 해결해주면 좋을 듯 합니다. 

그렇기에 우리가 처음 썼던 식에서 조금 변형을 해주면 다음과 같이 쓸 수 있습니다.

$$ n_t = \beta_0 + \beta_1t + \beta_2t^2 + \epsilon_t$$

그런데 첫 번째 그림에서 Lack of fit의 문제는 어느 정도 해결된 듯 보이나 

unequal variance 문제가 발생하였습니다. 

따라서 이 문제를 해결하기 위해 Y 변환을 고려하는 것이 좋을 듯 합니다. 

 

생물학에서는 Bacteria deaths due to X-ray radiation 문제의 식이 따로 존재합니다. 

$$n_t = n_0 e^{\alpha t}$$

 

따라서 이 식을 통해 다음과 같은 식을 유도할 수 있습니다.

$$logn_t = log n_0 + \alpha t$$

 

이 식은 $log n_t$를 Y로 생각하고 $logn_0$를 \beta_0, $\alpha t$를 $\beta_1 X$로 생각하면 선형회귀의 식으로 이해할 수 있습니다. 

 

따라서 $$logn_t = \beta_0 + \beta_1 t + \epsilon_t$$의 값으로 fitting을 하면 

 

네 이렇게 해서 lack of fit과 unequal variance에 대한 문제를 해결했습니다. 

3번째 그림을 통해 inferential observation을 관찰한 결과, 영향점은 없는 것으로 확인되고 있습니다. 

qqplot을 통해서 Normality도 보장되고 있다는 것을 확인할 수 있습니다. 

그럼 잔차의 독립성을 위해 Durbin-Watson 검정을 시행하면 

다음과 같이 나옵니다. 

Durbin-Watson D의 값이 2보다 크기 때문에 Pr > DW 부분의 p-value값을 통해 검정을 시행해보면

We fail to reject the null이기에 H0를 기각하지 못합니다.

그렇다고 안 좋은 게 아닙니다. 절대! 

Durbin-Watson 검정은 H0를 기각하지 않아야 잔차의 독립성을 만족한다고 생각하기에 

위의 값을 통해 잔차의 독립성이 만족된다는 것을 확인할 수 있습니다. 

 

따라서 저희는 이렇게 하여 회귀분석 4가지 가정을 모두 만족시켰습니다. 

 

 

또 다른 얘기를 위해 한 가지 예제를 더 들겠습니다. 

 

Example : Supervisors and supervised workers in industrial establishments

여기서 R-square가 0.7759가 나왔는데 사실 field에 따라 결정계수의 높고 낮음의 기준은 다르기에 field에 따라 결정계수의 값이 높다 나쁘다가 결정됩니다. 

 

여기서도 마찬가지로 첫 번째 그림에서 Lack of fit과 unequal variance가 의심이 됩니다. 

따라서 X, Y 변환을 고려해야 합니다. 

X의 제곱근을 더해주고, boxcox 변환을 통해 Y변환을 취해 줍니다. 

여기서 만약 선형모형이 맞다고 생각이 들더라도 Lack of fit이 의심되면 2차를 오버피팅하는 습관은 아주 좋습니다.

어차피 선형모형이 맞다고 하면 X의 제곱의 $\hat{\beta}$ = 0 으로 나올 것이기 때문입니다. 

 

현재 $\lamda$ = 0이 나왔기에 boxcox 변환할 때 log 변환을 취해주고 fitting을 해주면

 

위와 같은 결과가 나옵니다. 

여기서 그림을 살펴보면 기본 4가지 가정 중 3가지는 만족하는 것으로 보입니다만, 

inferential point가 2개 있는 것을 할 수 있습니다. 

 

일단 이 결과를 바탕으로 Durbin-Watson 검정을 시행해주면

위와 같은 결과가 나오기에 We fail to reject the null 이기에 잔차의 독립성은 만족됩니다.

 

 

안녕하세요~ 

 

너무 오랜만에 글을 올리는데 사실 요즘 하고 있는 공모전이 2개 있었고 

 

현재 진행중인게 하나 있는데 이게 잘 될지 안 될지는 잘 모르겠네요..ㅋㅋㅋ 현재 잘 안되고 있기도 하고요 하핫

 

주변에서는 '공모전 중독이다 그 정도면' 라고 할 정도로 막 뭐라하는데 저는 이 공모전들을 하기 전까지는 

 

실무 경험이 되게 중요하다고 느꼈거든요?

 

그런데 막상 지금에서야 느끼는거지만 실무 경험도 중요하긴한데 이론적 배경이 너무너무너무너무너무 중요한 것 같아요!

 

당장 이번에 하고 있는 공모전을 예로 들자면 회귀분석을 모델로 예측하는 걸 하고 있는데

 

회귀분석을 할 때 잔차에 대한 검정을 제대로 하고 했어야 했는데 그렇지 않은 것 같아 지금 결과가 예상한 것과는 다르게 나오네요 하핫

 

간단한 내용이긴 하지만 아는 만큼 보인다고 회귀분석 이론에 대해서 조금이라도 더 깊게 알고 있었다면 하지 않았을 실수라고 생각하니 안타까워 죽겠어요!! 

 

그런데 뭐 어쩌겠습니까 이미 엎질러진거 악으로 깡으로 버티면서 스토리라인 잘 그려가면서 어떻게든 발표 완수해야죠

 

어쨌든 그만큼 이론적 배경을 아는 것은 중요하다 따라서 앞으로의 공모전에서는 '최대한 많이 공부해서 하자'가 저의 목표입니다. 

 

공모전을 하니깐 옛날에는 그렇게 하기 싫던 공부가 그립더라고요 ㅋㅋㅋㅋㅋ 아으

 

사람이 참 간사한게 1학기 때는 해석학 때문에 엄청 고생해서 실무경험하고 싶다였는데 2학기 때는 실무경험 많이 하니깐 이론 쪽으로 공부하고 싶다는 생각이나 하고 있고 참

 

넵 어쨌든 요즘 글 안 올린다고 놀고 있는게 아니라 그만큼 음 빡세게 살고 있는거 같다는 겁니답 

 

아 물론 롤하러 안 갔으면 쓸 시간은 있었겠지만 ㅋㅋㅋㅋ.. 반성해야죠.. 롤이나 하러가고 아으.. 공모전하는 기간만이라도 롤을 아.. 안.. 안하지는 못하겠고 줄여보겠습니다!! ㄷㅇㅌ

 

아 그리고 앞으로는 복습한 내용 최대한 그날그날 올릴 수 있도록 노력하겠습니다. 

제 블로그가 정리도 잘 안 돼있고 하지만 그래도 오시는 분들을 위해서라도 잘잘잘 공부내용 정리해놓겠습니답

 

겨울 방학이 됐을 때 제가 이 글을 보면 어떤 생각이 들지도 궁금하네요ㅋㅋㅋㅋㅋ 

 

그럼 다른 글에서 뵙겠습니다

그리고 더 파이팅해보겠습니다 

 

이 글을 읽는 여러분들도 파이팅하세요!!

파이팅!

 

'일상 > 일기' 카테고리의 다른 글

2024년 회고록(?)  (0) 2025.01.19
요즘 근황(24.09.23)  (6) 2024.09.23
24.08.30 - 24.09.01 서울여행  (11) 2024.09.16
24.08.21 (수) - 계곡여행 + 앞으로의 다짐(?)  (2) 2024.08.21
오랜만에 일기  (0) 2024.04.02

+ Recent posts