반응형

통계학 관련 공부를 할 때 모든 책의 첫번째 챕터에서 변수의 종류를 다룬다. 처음 통계를 공부할 때 읽으면 아~ 이런게 있구나 하고 별것 아닌걸로 생각하고 변수들의 정의와 개념을 잘 익히지 않고 그냥 넘어가자 후반부로 가면 갈 수록 다시 책을 앞으로 넘겼다, 뒤로 넘겼다를 반복하였다. 통계학을 공부 할 때 반드시 알아야 할 변수의 종류. 아무리 강조해도 지나치지 않을 변수의 개념 공부.

 

1. 질적 변수(qualitative variable): 조사 대상을 특성에 따라 범주로 구분하여 측정된 변수로 범주형 변수(categorical data)라고도 함. 이러한 질적 변수에 대해 덧셈 등 수학적 연산결과는 아무런 의미가 없기 때문에 연산의 개념을 적용시킬 수 없다. 즉 남자 =1, 여자 =2 변수에서 1.5는 아무런 의미가 없다. 전화번호나 생일 역시 더하거나 나눈다고 하여 의미 있는 값을 얻을 수 없다. 질적 변수가 분석 대상일 때는 각 범주에 속한 개수나 퍼센트 등을 다룬다. 보통 원그래프나, 막대그래프를 이용한다.

 - 명목형(nominal): 변수나 크기가 순서에 대한 의미가 없고 이름만 의미를 부여할 수 있는 경우

   예) 성별(남자 = 1, 여자 =2), 자동차 브랜드(현대=1, 기아=2, 르노삼성=3, GM=4)

 - 순서형(ordinal) – 변수가 어떤 기준에 따라 순서에 의미를 부여할 수 있는 경우

   예) 교육수준(초졸=1, 중졸=2, 고졸=3, 대졸 이상=4), 건강 상태(양호=3, 보통=2, 나쁨=1)

 

2. 양적 변수(quantitative variable): 길이, 무게와 같이 양적인 수치로 측정되거나 몇 개인가를 세어 측정하는 변수로 덧셈, 뺄셈 등의 연산이 가능하다. 히스토그램, 줄기-잎 그림, 점 도표, 시계열 그래프 등을 이용한다.

 - 이산형(discrete): 변수가 취할 수 있는 값을 하나하나 셀 수 있는 경우

   예) 방 갯수, 퀴즈 문제 중 맞힌 개수, 보험 설계사가 계약을 체결할 때 까지 만난 사람 수

 - 연속형(continuous): 변수가 구간 안의 모든 값을 가질 수 있는 경우

 예) 실수 구간 안의 모든 값. 신생아의 키

 

 

어떤 변수의 경우는 이산형 또는 연속형으로 취급되는데, 나이가 그 좋은 예이다. 나이는 시간이 지남에 따라 계속 늘어나는 연속형 변수이지만, 1년 단위로 측정되면 이산형 변수이다. 

 

(1) 파이썬 코드

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# 예제 데이터 생성
data = pd.DataFrame({
    'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female'],
    'Age': [25, 30, 22, 35, 28, 40],
    'Height': [175, 160, 180, 155, 170, 165]
})

# 질적 변수: 성별(Gender)
# 양적 변수: 나이(Age), 키(Height)

# 질적 변수 시각화 (막대 그래프)
plt.figure(figsize=(10, 5))
sns.countplot(x='Gender', data=data)
plt.title('Count of Individuals by Gender')
plt.show()

 

 

# 양적 변수 시각화 (히스토그램)
plt.figure(figsize=(10, 5))
sns.histplot(data['Age'], bins=20, color='skyblue')
plt.title('Distribution of Age')
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.show()

 

# 양적 변수 시각화 (상자 그림)
plt.figure(figsize=(10, 5))
sns.boxplot(x='Height', data=data, color='lightgreen')
plt.title('Box Plot of Height')
plt.xlabel('Height')
plt.show()

 

 

 

반응형
Posted by 마르띤
,
반응형

Stars plot 이용한 다변량 데이터의 시각화

> total<-read.table('성적.csv',header=T,sep=',')

> total

이름 국어 영어 수학 국사 화학 물리

1 박지영   90   85   55   88   91   79

2 김태함   70   65   80   75   76   89

3 김효섭   92   95   76   65   89   91

4 임경희   76   89   88   95  100   91

5 권혁진   97   87   83   91   86   91

6 하혜진   80   86   97   85   69   77

7 이준원   80   30   40   50   70   90

8 윤정웅   70   82   54   56   58   60

9 주시현   90   95  100   85   89   92

 

> row.names(total)<-total$이름 #학생 별로 성적을 불러오기 위한 작업

> total

이름 국어 영어 수학 국사 화학 물리

박지영 박지영   90   85   55   88   91   79

김태함 김태함   70   65   80   75   76   89

김효섭 김효섭   92   95   76   65   89   91

임경희 임경희   76   89   88   95  100   91

권혁진 권혁진   97   87   83   91   86   91

하혜진 하혜진   80   86   97   85   69   77

이준원 이준원   80   30   40   50   70   90

윤정웅 윤정웅   70   82   54   56   58   60

주시현 주시현   90   95  100   85   89   92

> total<-total[,2:7]

> total

국어 영어 수학 국사 화학 물리

박지영   90   85   55   88   91   79

김태함   70   65   80   75   76   89

김효섭   92   95   76   65   89   91

임경희   76   89   88   95  100   91

권혁진   97   87   83   91   86   91

하혜진   80   86   97   85   69   77

이준원   80   30   40   50   70   90

윤정웅   70   82   54   56   58   60

주시현   90   95  100   85   89   92

 

 

그래프 그리기

> stars(total,flip.labels = FALSE, draw.segments = FALSE, frameplot=TRUE, full=TRUE, main='성적 분석-Star Chart')

 


> stars(total,flip.labels = FALSE, draw.segments = TRUE, frameplot=TRUE, full=TRUE, main='성적 분석-Nightingale Chart')

 


> stars(total,flip.labels = FALSE, draw.segments = TRUE, frameplot=TRUE, full=FALSE, main='성적 분석-Nightingale Chart')

 


> stars(total,flip.labels = FALSE, draw.segments = TRUE, frameplot=TRUE, full=FALSE, main='성적 분석-Nightingale Chart',scale=T,key.loc=c(10,2))


반응형
Posted by 마르띤
,
반응형


library(tm)

library(wordcloud)

library(KoNLP)

library(RColorBrewer)


ktext<-Corpus(DirSource("C:/Rwork/KText", encoding="UTF-8",recursive = TRUE)

words<-unlist(sapply(ktext[[1]]$content, extractNoun, USE.NAMES=FALSE))

words

wordfreq<-table(words)

sort(wordfreq,decreasing=T)[1:12]

wordcloud(names(wordfreq),freq=wordfreq,max.words=50)


wordfreq<-wordfreq[!(names(wordfreq) %in% c("등","한","이","개",들","적","것"))]

wordcloud(names(wordfreq),freq=wordfreq,max.words=50)

반응형
Posted by 마르띤
,