Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- difftime
- 팀스파르타
- 단순회귀 분석
- 정보획득량
- 순위출력
- 총과 카드만들기
- 상관관계
- count
- 빅데이터
- %in%
- 데이터분석가
- sql
- Dense_Rank
- 그래프 생성 문법
- max
- if문 작성법
- Sum
- loop 문
- 데이터분석
- 그래프시각화
- Intersect
- merge
- sqld
- 불순도제거
- 히스토그램 그리기
- 회귀분석 알고리즘
- 여러 데이터 검색
- 회귀분석
- 막대그래프
- 빅데이터분석
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] R _ 39. 데이터 시각화 5 (히스토그램 그래프 2) 본문
★ 점심시간 문제: 커미션을 받는 사원들의 월급의 분포를 산포도 그래프로 시각화 하세요
# 데이터 불러오기 library(plotly) setwd("c:\\data") emp <- read.csv("emp.csv", header=TRUE) emp # 불러올 데이터 추출출 a<-emp[!is.na(emp$comm),c('ename','sal','comm')] a # 산포도 그래프 생성 fig <- plot_ly( data= a, x = ~ ename, y = ~sal, type='scatter', mode='markers', marker = list(color='red')) # 그래프 레이아웃 설정 fig <- fig %>% layout( xaxis = list(title = 'ename'), yaxis = list(title = 'sal')) # 그래프 출력 fig
# 필요한 라이브러리 로드
install.packages("modeest")
# 그래프 지우기
graphics.off()
library(modeest) # R 에서 최빈값을 출력하고 사용함, mlv 함수 이용하여 최빈값 추출
# 1. 대칭분포 데이터 생성
# 아래의 rnrom 함수가 값을 랜덤하게 생성하기 때문에 모든 자리에서 동일하게
# 랜덤한 값을 생성하기 위해서 set.seed(123) 를 사용한것입니다.
set.seed(123)
# 평균이 50이고 표준편차가 10인 정규분포로 구성된 1000개의 난수를 생성합니다.
data1 <- rnorm(1000, mean = 50, sd = 10)
data1
summary(data1)
# 2. 왼쪽으로 치우친 분포 데이터 생성
set.seed(123)
data2 <- c(rnorm(800, mean = 60, sd = 10), rnorm(200, mean = 30, sd = 5))
# 3. 오른쪽으로 치우친 분포 데이터 생성
set.seed(123)
data3 <- c(rnorm(800, mean = 40, sd = 10), rnorm(200, mean = 70, sd = 5))
# 평균값, 중앙값, 최빈값 계산 함수
calculate_stats <- function(data) {
mean_value <- mean(data)
median_value <- median(data)
mode_value <- density(data)$x[which.max(density(data)$y)]
return(list(mean = mean_value, median = median_value, mode = mode_value))
}
# 통계량 계산
stats1 <- calculate_stats(data1)
stats2 <- calculate_stats(data2)
stats3 <- calculate_stats(data3)
print("대칭분포 통계량:")
print(stats1)
print("왼쪽 치우친 분포 통계량:")
print(stats2)
print("오른쪽 치우친 분포 통계량:")
print(stats3)
# 1. 대칭분포 그래프 그리기
hist(data1, breaks=30, col="grey", border="white", prob=TRUE, ylim=c(0, 0.05), main="대칭분포", xlab="값", ylab="밀도")
lines(density(data1), col="red") # 확률 밀도 함수 그래프
abline(v=stats1$mean, col="blue", lwd=2, lty=2) # 평균값
abline(v=stats1$median, col="green", lwd=2, lty=2) # 중앙값
abline(v=stats1$mode, col="purple", lwd=2, lty=2) # 최빈값
# 2. 왼쪽 치우친 분포 그래프 그리기
hist(data2, breaks=30, col="grey", border="white", prob=TRUE, ylim=c(0, 0.05), main="왼쪽 치우친 분포", xlab="값", ylab="밀도")
lines(density(data2), col="red")
abline(v=stats2$mean, col="blue", lwd=2, lty=2)
abline(v=stats2$median, col="green", lwd=2, lty=2)
abline(v=stats2$mode, col="purple", lwd=2, lty=2)
# 3. 오른쪽 치우친 분포 그래프 그리기
hist(data3, breaks=30, col="grey", border="white", prob=TRUE, ylim=c(0, 0.05), main="오른쪽 치우친 분포", xlab="값", ylab="밀도")
lines(density(data3), col="red")
abline(v=stats3$mean, col="blue", lwd=2, lty=2)
abline(v=stats3$median, col="green", lwd=2, lty=2)
abline(v=stats3$mode, col="purple", lwd=2, lty=2)
문제1. 중고차의 가격 데이터를 위의 코드에 적용하여 그래프로 시각화 하시오.
#1. 데이터 불러오기 usedcars <- read.csv("usedcars.csv", header=T) price <- usedcars$price # 평균값, 중앙값, 최빈값 계산 함수 calculate_stats <- function(data) { mean_value <- mean(data) median_value <- median(data) mode_value <- density(data)$x[which.max(density(data)$y)] return(list(mean = mean_value, median = median_value, mode = mode_value)) } # 통계량 계산 price_stats <- calculate_stats(price) # 1. 대칭분포 그래프 그리기 hist(price, breaks=30, col="grey", border="white", prob=TRUE, main="대칭분포", xlab="값", ylab="밀도") lines(density(price), col="red") # 확률 밀도 함수 그래프 abline(v=price_stats$mean, col="blue", lwd=2, lty=2) # 평균값 abline(v=price_stats$median, col="green", lwd=2, lty=2) # 중앙값 abline(v=price_stats$mode, col="purple", lwd=2, lty=2) # 최빈값
설명: 평균값, 중앙값, 최빈값이 모두 비슷한 위치에 있어 대칭적으로 분포되어있음, 굳이 따지면 왼쪽 꼬리 분포임
( 대부분 중고차 가격 15000달러)
문제2. 중고차 주행거리 데이터로 위의 그래프를 그리고 그래프를 해석하시오.
#1. 데이터 불러오기 usedcars <- read.csv("usedcars.csv", header=T) mileage <- usedcars$mileage # 평균값, 중앙값, 최빈값 계산 함수 calculate_stats <- function(data) { mean_value <- mean(data) median_value <- median(data) mode_value <- density(data)$x[which.max(density(data)$y)] return(list(mean = mean_value, median = median_value, mode = mode_value)) } # 통계량 계산 mileage_stats <- calculate_stats(mileage) # 1. 대칭분포 그래프 그리기 hist(mileage, breaks=30, col="grey", border="white", prob=TRUE, main="대칭분포", xlab="값", ylab="밀도") lines(density(mileage), col="red") # 확률 밀도 함수 그래프 abline(v=mileage_stats$mean, col="blue", lwd=2, lty=2) # 평균값 abline(v=mileage_stats$median, col="green", lwd=2, lty=2) # 중앙값 abline(v=mileage_stats$mode, col="purple", lwd=2, lty=2) # 최빈값
설명:
대부분의 차량이 비교적 짧은 주행거리에 집중되어있고 일부 높은 주행거리를 가지고 있는 형태를 보이고 있습니다. 오른쪽으로 꼬리를 가지고 있으면서 주행거리 데이터는 대부분 왼쪽으로 치우친 분포를 보이고 있습니다. 대부분의 중고차의 주행거리가 20000 ~ 60000 마일 범위에 주행거리를 가지고 있으며 이는 많은 중고차가 이 범위내에 있음을 의미합니다. 100000 마일 이상의 높은 주행거리를 가지는 중고차도 일부 존재하고 있음이 보입니다.
문제 3. 그래프 자동화 코드 4번째에 히스토그램 그래프를 추가하기 위해서 문제113번 코드를 hist_plot.R 이라는 이름으로 c 드라이브 밑에 data 폴더 밑에 저장하시오 !
#1. 데이터 불러오기 usedcars <- read.csv("usedcars.csv", header=T) mileage <- usedcars$mileage # 평균값, 중앙값, 최빈값 계산 함수 calculate_stats <- function(data) { mean_value <- mean(data) median_value <- median(data) mode_value <- density(data)$x[which.max(density(data)$y)] return(list(mean = mean_value, median = median_value, mode = mode_value)) } # 통계량 계산 mileage_stats <- calculate_stats(mileage) # 1. 대칭분포 그래프 그리기 hist(mileage, breaks=30, col="grey", border="white", prob=TRUE, main="대칭분포", xlab="값", ylab="밀도") lines(density(mileage), col="red") # 확률 밀도 함수 그래프 abline(v=mileage_stats$mean, col="blue", lwd=2, lty=2) # 평균값 abline(v=mileage_stats$median, col="green", lwd=2, lty=2) # 중앙값 abline(v=mileage_stats$mode, col="purple", lwd=2, lty=2) # 최빈값
'빅데이터 분석(with 아이티윌) > R' 카테고리의 다른 글
[빅데이터분석] R _ 40. 데이터 시각화 6. (박스 그래프) / IQR /이상치 확인 (0) | 2024.07.03 |
---|---|
R 그래프 코드 모음 (0) | 2024.07.03 |
[빅데이터분석] R _ 38. 데이터 시각화 5 (히스토그램 그래프) (0) | 2024.07.02 |
[빅데이터분석] R _ 37. 데이터 시각화4 (라인 그래프) (0) | 2024.07.02 |
[빅데이터분석] R _ 36. 데이터 시각화 3 (산포도) (0) | 2024.07.02 |