1. 중심위치 측정(mean, median, max, min, sample)

 
 

중심위치 측정

 

 

 

 

기술통계 의의

  • 빅데이터 분석을 위해서는 기존 사실에 대한 객관적인 수치를 찾아내려는 기술 통계를 기초로 한다.
  • 이를 통해서 데이터의 특징이 수량화되어 정리 된다.
  • 분석자는 데이터에 대한 이해를 하게 되어 이후 분석과정을 정밀하게 설계 할 수 있게 된다.
 

 

 


 

평균(mean)

 
 
 
 
 
 
weight <- c(72,67,60,78,82)
mean(weight)
 
 
 
71.8
 

 

 


 

난수를 생성하여 평균

  • 난수생성 : sample (범위, 사이즈, 중복 할 것인가 말것인가?(복원추출))
 
 
 
 
 
 
myNum <- sample(x=1:100, size=100, replace = TRUE)
myNum
mean(myNum)
 
 
 
  1. 72
  2. 70
  3. 22
  4. 95
  5. 35
  6. 8
  7. 93
  8. 26
  9. 9
  10. 11
  11. 8
  12. 25
  13. 81
  14. 48
  15. 96
  16. 34
  17. 43
  18. 6
  19. 10
  20. 66
  21. 78
  22. 29
  23. 26
  24. 87
  25. 71
  26. 74
  27. 50
  28. 36
  29. 7
  30. 90
  31. 67
  32. 13
  33. 88
  34. 55
  35. 34
  36. 24
  37. 28
  38. 77
  39. 46
  40. 36
  41. 74
  42. 81
  43. 61
  44. 34
  45. 99
  46. 41
  47. 42
  48. 65
  49. 24
  50. 10
  51. 88
  52. 46
  53. 88
  54. 21
  55. 76
  56. 45
  57. 11
  58. 98
  59. 38
  60. 88
  61. 40
  62. 1
  63. 48
  64. 4
  65. 14
  66. 18
  67. 78
  68. 50
  69. 10
  70. 37
  71. 50
  72. 87
  73. 5
  74. 13
  75. 66
  76. 67
  77. 24
  78. 31
  79. 14
  80. 78
  81. 31
  82. 62
  83. 10
  84. 60
  85. 86
  86. 12
  87. 53
  88. 22
  89. 29
  90. 4
  91. 61
  92. 92
  93. 45
  94. 58
  95. 25
  96. 51
  97. 80
  98. 93
  99. 8
  100. 50
 
46.71
 

 

 


 

결측치가 있는 경우의 평균

  • myNum 100개중 20%의 결측치를 만들어보자
  • NA 는 없는 값이다. 연산시 NA 값이 나온다.
  • NULL은 모르는 값이다. 연산시 NULL값을 제외하고 계산을 한다.
 
 
 
 
 
 
myNum[sample(x=1:100, size = 20, replace = FALSE)]  # na는 없는 값, null은 모르는 값.
myNum
mean(myNum)
 
 
 
  1. 10
  2. 96
  3. 93
  4. 41
  5. 26
  6. 29
  7. 61
  8. 66
  9. 26
  10. 37
  11. 22
  12. 65
  13. 58
  14. 10
  15. 40
  16. 74
  17. 14
  18. 12
  19. 78
  20. 55
 
  1. 72
  2. 70
  3. 22
  4. 95
  5. 35
  6. 8
  7. 93
  8. 26
  9. 9
  10. 11
  11. 8
  12. 25
  13. 81
  14. 48
  15. 96
  16. 34
  17. 43
  18. 6
  19. 10
  20. 66
  21. 78
  22. 29
  23. 26
  24. 87
  25. 71
  26. 74
  27. 50
  28. 36
  29. 7
  30. 90
  31. 67
  32. 13
  33. 88
  34. 55
  35. 34
  36. 24
  37. 28
  38. 77
  39. 46
  40. 36
  41. 74
  42. 81
  43. 61
  44. 34
  45. 99
  46. 41
  47. 42
  48. 65
  49. 24
  50. 10
  51. 88
  52. 46
  53. 88
  54. 21
  55. 76
  56. 45
  57. 11
  58. 98
  59. 38
  60. 88
  61. 40
  62. 1
  63. 48
  64. 4
  65. 14
  66. 18
  67. 78
  68. 50
  69. 10
  70. 37
  71. 50
  72. 87
  73. 5
  74. 13
  75. 66
  76. 67
  77. 24
  78. 31
  79. 14
  80. 78
  81. 31
  82. 62
  83. 10
  84. 60
  85. 86
  86. 12
  87. 53
  88. 22
  89. 29
  90. 4
  91. 61
  92. 92
  93. 45
  94. 58
  95. 25
  96. 51
  97. 80
  98. 93
  99. 8
  100. 50
 
46.71
 
  • 따라서 na.rm = TRUE 옵션 설정이 가능하다.
 
 
 
 
 
 
mean(myNum, na.rm = TRUE)
 
 
 
46.71
 

 

 


 

가중 평균

  • 데이터에 대하여 가중치를 부여하여 얻은 평균이다.
  • weighted.mean()함수로 구현한다.
  • 보통 학점 평균을 낼때, 가중평균을 사용한다.
 
 
 
 
 
 
sales <- c(95,72,87,65)
weights <- c(0.5, 0.25, 0.125, 0.125)
mean(sales)
weighted.mean(sales, weights)
 
 
 
79.75
 
84.5
 

 

 


 

가중평균 예 (학점구하기)

  • 3학점짜리와 2학점짜리 과목이 있다.
  • A와 B 학생, 앞에꺼는 3학점 뒤에것은 2학점 짜리이다. 가중평균을 사용하자.
 
 
 
 
 
 
A.score <- c(4.0, 3.0)
B.score <- c(3.0, 4.0)
count <- c(3,2)
weight <- count / sum(count)
weighted.mean(A.score, weight)
weighted.mean(B.score, weight)
 
 
 
3.6
 
3.4
 

 

 


 

가중평균 예(학급 평균 점수)

  • 성적 별 학생수가 주어진다. 평균 점수를 구하자.
 
 
 
 
 
 
score <- c(90,80,70,60)
count <- c(3,12,15,5)
weight <- count/sum(count)
weighted.mean(score,weight)
 
 
 
73.7142857142857
 

 

 


 

중앙값(median)

  • 중앙값은 데이터들을 오름차순으로 정렬했을때, 중앙에 위치하는 값이다.
 
 
 
 
 
 
# 중앙값 데이터가 홀수개 인 경우
time <- c(7,2,3,7,6,9,10,8,9,9,10)
mean(time)
median(time)
 
 
 
7.27272727272727
 
8
 
 
 
 
 
 
# 중앙값 데이터가 짝수개 인 경우
time <- c(7,2,3,7,6,9,10,8,9,10)
median(time)
summary(time)  # 평균과 중앙값을 함께 볼 수 있다. 
 
 
 
7.5
 
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   2.00    6.25    7.50    7.10    9.00   10.00 
 

 

 


 

최빈값

  • 최빈값은 데이터 중 빈도수가 가장 높은 값을 말한다.
  • which.max를 사용하자
 
 
 
 
 
 
num.v <- c(1,2,2,3,4,3,5,5,7,9,2,2,0)
char.v <- c("o","it","the","it","it","가","가","가","가","가")
freq <- table(num.v) # 테이블을 만들어 빈도수를 보여준다.
freq
which.max(freq)     # 가장큰 빈도를 갖는 것은 2 이고, 2는 3번째 원소 이다. 
names(freq)[3]
 
 
 
num.v
0 1 2 3 4 5 7 9 
1 1 4 2 1 2 1 1 
 
2: 3
 
'2'
 
 
 
 
 
 
freq <- table(char.v)
freq
which.max(freq)
names(freq)[4]
 
 
 
char.v
 it   o the  가 
  3   1   1   5 
 
가: 4
 
'가'
 

 

 


 

빈도표

  • table(x)
  • 벡터의 내용을 빈도 조사하여 표로 만든다.
 
 
 
 
 
 
x <- c("a","b","c","c","c","d","d")
table(x)
 
 
 
x
a b c d 
1 1 3 2 
 

 

 


 

최대값, 최소값 찾기

  • which.max(x), which.min(x)
  • 가장 큰, 작은 수를 색인한다.
 
 
 
 
 
 
x <- c(1,2,3,NA,4)
which.max(x)
which.min(x)
 
 
 
5
 
1
 

 

 


 

최대값, 최소값

  • max(x), min(x)
  • 가장 큰/ 작은 수를 구한다.
 
 
 
 
 
 
x <- c(1,2,3,NA,4)
max(x,na.rm=TRUE)
min(x,na.rm=TRUE)
 
 
 
4
 
1
 

 

 


 

연습 1 . 주사위 던지기.

  • 주사위를 하나 던져 나올 수 있는 눈의 평균과 표준편차를 다음과 같은 순서로 구하라.
 
 
 
 
 
 
# 1. 이론적으로 예상할 수 있는 평균과 표준편차는 얼마인가 ?
x <- c(1,2,3,4,5,6)
mean(x)
var(x)
 
 
 
3.5
 
3.5
 
 
 
 
 
 
# 2. 주사위를 10번 던졌을 때 평균과 표준편차를 구하시오
two <-sample(x=1:6, size= 10, replace = TRUE)
two
mean(two)
var(two)
 
 
 
  1. 4
  2. 1
  3. 1
  4. 4
  5. 5
  6. 4
  7. 4
  8. 4
  9. 5
  10. 3
 
3.5
 
2.05555555555556
 
 
 
 
 
 
# 3. 주사위를 100번 던졌을 때 평균과 표준편차를 구하시오
three <- sample(x=1:6, size = 100, replace = TRUE)
three
mean(three)
var(three)
# 4. 1,2,3에서 각각 구한 값을 비교하여, 값의 차이가 나는 이유를 설명하시오.
 
 
 
  1. 5
  2. 5
  3. 3
  4. 6
  5. 5
  6. 4
  7. 3
  8. 5
  9. 2
  10. 6
  11. 1
  12. 6
  13. 4
  14. 6
  15. 4
  16. 1
  17. 4
  18. 2
  19. 6
  20. 6
  21. 4
  22. 3
  23. 6
  24. 6
  25. 1
  26. 1
  27. 3
  28. 5
  29. 6
  30. 3
  31. 3
  32. 3
  33. 2
  34. 4
  35. 6
  36. 3
  37. 4
  38. 5
  39. 5
  40. 5
  41. 6
  42. 5
  43. 1
  44. 1
  45. 4
  46. 5
  47. 4
  48. 5
  49. 3
  50. 3
  51. 4
  52. 4
  53. 2
  54. 4
  55. 1
  56. 2
  57. 5
  58. 3
  59. 5
  60. 1
  61. 1
  62. 3
  63. 1
  64. 5
  65. 6
  66. 5
  67. 6
  68. 3
  69. 5
  70. 5
  71. 5
  72. 2
  73. 6
  74. 6
  75. 4
  76. 1
  77. 6
  78. 1
  79. 6
  80. 3
  81. 1
  82. 4
  83. 6
  84. 5
  85. 3
  86. 4
  87. 3
  88. 2
  89. 4
  90. 3
  91. 1
  92. 3
  93. 6
  94. 1
  95. 2
  96. 2
  97. 1
  98. 1
  99. 1
  100. 6
 
3.69
 
3.08474747474747
 

 

 


 

연습 2.

  • train데이터를 통해 연습해 봅시다.
 
 
 
 
 
 
setwd("C:/Users/KIIXXI/Documents/khu")
Data <- read.csv("train.csv")
head(Data)
 
 
 
A data.frame: 6 × 12
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
<int> <int> <int> <fct> <fct> <dbl> <int> <int> <fct> <dbl> <fct> <fct>
1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.2500   S
2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1 0 PC 17599 71.2833 C85 C
3 1 3 Heikkinen, Miss. Laina female 26 0 0 STON/O2. 3101282 7.9250   S
4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0 113803 53.1000 C123 S
5 0 3 Allen, Mr. William Henry male 35 0 0 373450 8.0500   S
6 0 3 Moran, Mr. James male NA 0 0 330877 8.4583   Q
 
 
 
 
 
 
# 1. survived의 평균 값은 얼마인가 ?
mean(Data$Survived)
 
 
 
0.383838383838384
 
 
 
 
 
 
# 2. 탑승객의 나이에 대한 평균, 분산, 표준 편차를 구하시오.
mean(Data$Age, na.rm =TRUE)
var(Data$Age, na.rm =TRUE)
sd(Data$Age, na.rm =TRUE)
 
 
 
29.6991176470588
 
211.019124746308
 
14.526497332334
 
 
 
 
 

댓글

Designed by JB FACTORY