User Tools

Site Tools


b:head_first_statistics:visualization

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
b:head_first_statistics:visualization [2020/09/07 12:32] – [Pie Chart] hkimscilb:head_first_statistics:visualization [2025/09/08 08:22] (current) – [Histogram Modality] hkimscil
Line 31: Line 31:
   * 각 게임 장르별 사용자의 만족도 퍼센티지를 모아 놓은 파이차트는 유용하지 않다.   * 각 게임 장르별 사용자의 만족도 퍼센티지를 모아 놓은 파이차트는 유용하지 않다.
 ====== Bar chart ====== ====== Bar chart ======
 +{{good.bar.chart.jpg?600}}  
 +  * region 별 sales
 +  * 대륙 별 sales
 +  * 분기 별 수익률
 +  * 카테고리화한 종류 별 숫자기록 (일반화)
  
 +{{good.bar.chart.2.png?600}}
 +  * 장르 별 만족도 
 +  * (우리 회사) 부서별 성취도
 +
 +====== Histogram ======
 +^ ser  ^ freq  ^
 +| 1  | 100  |
 +| 2  | 88  |
 +| 3  | 159  |
 +| 4  | 201  |
 +| 5  | 250  |
 +| 6  | 250  |
 +| 7  | 254  |
 +| 8  | 288  |
 +| 9  | 356  |
 +| 10  | 380  |
 +| 11  | 430  |
 +| 12  | 450  |
 +| 13  | 433  |
 +| 14  | 543  |
 +| 15  | 540  |
 +| 16  | 570  |
 +| 17  | 450  |
 +| 18  | 433  |
 +| 19  | 543  |
 +| 20  | 690  |
 +| 21  | 640  |
 +| 22  | 720  |
 +| 23  | 777  |
 +| 24  | 720  |
 +| 25  | 880  |
 +| 26  | 900  |
 +
 +Excel에서의 histogram
 +
 +| Bin  | Frequency  |
 +| 199  | 3  |
 +| 399  | 7  |
 +| 599  | 9  |
 +| 799  | 5  |
 +| 999  | 2  |
 +
 +{{:b:head_first_statistics:pasted:20240904-082648.png}}
 +
 +in R . . . . 
 +<code>
 +dat <- c(100, 88, 159, 201, 250, 250, 254, 288, 356, 380, 
 +         430, 450, 433, 543, 540, 570, 450, 433, 543, 690, 
 +         640, 720, 777, 720, 880, 900)
 +dat
 +hist(dat)
 +hist(dat, breaks=5)
 +</code>
 +{{:b:head_first_statistics:pasted:20240904-082258.png}}
 +
 +<code>
 +dat.iq <- rnorm(1000, 100, 15)
 +head(dat.iq)
 +tail(dat.iq)
 +head(dat.iq, n=12)
 +tail(dat.iq, n=12)
 +
 +mean(dat.iq)
 +sd(dat.iq)
 +
 +hist(dat.iq)
 +hist(dat.iq, breaks=30, col='lightblue')
 +
 +set.seed(101)
 +dat.iq <- rnorm(1000, 100, 15)
 +head(dat.iq)
 +tail(dat.iq)
 +head(dat.iq, n=12)
 +tail(dat.iq, n=12)
 +
 +mean(dat.iq)
 +sd(dat.iq)
 +
 +hist(dat.iq)
 +hist(dat.iq, breaks=30, col='lightblue')
 +</code>
 ====== Scatter plot ====== ====== Scatter plot ======
- +<code> 
 +hist(mtcars$hp) 
 + 
 +                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb 
 +Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4 
 +Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4 
 +Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1 
 +Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1 
 +Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2 
 +Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1 
 +Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4 
 +Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2 
 +Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2 
 +Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4 
 +Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4 
 +Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3 
 +Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3 
 +Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3 
 +Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4 
 +Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4 
 +Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4 
 +Fiat 128            32.4    78.7  66 4.08 2.200 19.47  1  1    4    1 
 +Honda Civic         30.4    75.7  52 4.93 1.615 18.52  1  1    4    2 
 +Toyota Corolla      33.9    71.1  65 4.22 1.835 19.90  1  1    4    1 
 +Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1 
 +Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2 
 +AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2 
 +Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4 
 +Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2 
 +Fiat X1-9           27.3    79.0  66 4.08 1.935 18.90  1  1    4    1 
 +Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2 
 +Lotus Europa        30.4    95.1 113 3.77 1.513 16.90  1  1    5    2 
 +Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4 
 +Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6 
 +Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8 
 +Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2 
 +</code> 
 +{{:c:ps1-1:2019:pasted:20190909-103341.png}} 
  
-<code># Simple Scatterplot+ <code># Simple Scatterplot
 attach(mtcars) attach(mtcars)
 plot(wt, mpg, main="Scatterplot Example", plot(wt, mpg, main="Scatterplot Example",
Line 41: Line 165:
    pch=19)</code>    pch=19)</code>
  
-{{:c:ps1-1:2019:pasted:20190909-075028.png}}+{{:b:head_first_statistics:pasted:20240904-083016.png}}
  
 explanatory (설명) variable at x axis explanatory (설명) variable at x axis
Line 49: Line 173:
  
 Drawing a line among the data. Drawing a line among the data.
 +
 <code># Add fit lines <code># Add fit lines
 abline(lm(mpg~wt), col="red") # regression line (y~x) abline(lm(mpg~wt), col="red") # regression line (y~x)
-lines(lowess(wt,mpg), col="blue") # lowess line (x,y)</code> +</code> 
-{{:c:ps1-1:2019:pasted:20190909-075639.png}}+{{:b:head_first_statistics:pasted:20240904-083157.png}}
  
 +Outlier에 대한 주의
 +[{{:pearson-6.png? |}}]
 +<WRAP clear />
  
-A bit more fancy line  
-<code># Enhanced Scatterplot of MPG vs. Weight 
-# by Number of Car Cylinders 
-library(car) 
-scatterplot(mpg ~ wt | cyl, data=mtcars, 
-   xlab="Weight of Car", ylab="Miles Per Gallon", 
-   main="Enhanced Scatter Plot", 
-   labels=row.names(mtcars))</code> 
-{{:c:ps1-1:2019:pasted:20190909-080032.png}} 
  
-Line can be+====== Presentation ====== 
 +For a very good example, see 
 +https://www.gapminder.org/answers/how-does-income-relate-to-life-expectancy/ 
 +  * Life expectancy data: {{:life.exp.csv}}
  
-**__관계의 방향 (direction)__** +<WRAP clear/> 
-^  관계의 방향  ^^  +====== Histogram skewedness ====== 
-| {{:r.positive.png}}  | {{:r.negative.png}}  |+<WRAP column half> 
 +<code> 
 +#### 
 +# left-skewed distribution 
 +# 1. 
 +set.seed(1) 
 +data <- rbeta(500, shape1 = 10, shape2 = 2) 
 +hist(data, probability = TRUE,  
 +     main = "Histogram with Left-skewed data", 
 +     xlab = "Value", ylab = "Density",  
 +     col = "lightblue", border = "white")
  
 +# 2.
 +# install.packages("fitdistrplus"
 +library(fitdistrplus)
  
-**__관계의 모양 (shape)__** +fit <- fitdist(data, "beta"
-^  관계의 모양  ^^  +alpha_est <- fit$estimate["shape1"] 
-| {{:r.positive.png}}  | {{:r.curvepositive.png}}  |+beta_est <- fit$estimate["shape2"]
  
-**__관계의 정도 (힘)__** +3. 
-^  관계의 정도 (힘)  ^^  +curve(dbeta(x, shape1 = alpha_est, shape2 = beta_est), 
-| [{{:r.StrengthA.png|Figure_4-1}}]  | [{{:r.StrengthB.png|Figure 4-2}}] +      add = TRUEcol = "red"lwd = 2) 
-| [{{:r.StrengthC.png|Figure_4-3}}]  | [{{:r.StrengthD.png|Figure 4-4}}]  | +</code> 
-<WRAP clear /> +</WRAP>
-Pearson's r 의 의미 +
-__Relations, not cause-effect__ +
-[{{:r_eg.15.6.png?250 |Figure 6. Correlation And Causation}}] 상관관계 계수는 단순히 두 변인 (x, y간의 관계가 있다는 것을 알려줄 뿐왜 그 관계가 있는지는 설명하지 않는다. 바꿔 말하면충분한 r 값을 구했다고 해서 이 값이 두 변인 간의 '''원인'''과 '''결과'''의 관계를 말한다고 이야기 하면 __안된다__. 예를 들면 아이스크림의 판매량과 성범죄가 서로 상관관계에 있다고 해서전자가 후자의 원인이라고 단정할 수 있는 근거는 없다. 이는 연구자의 논리적인 판단 혹은 이론적인 판단에 따른다.  +
-<WRAP clear />+
  
-__Interpretation with limited range__ +<WRAP column half> 
-[{{:r_eg.15.71.png?250 |Figure_7._Correlation_And_Range}}]  +{{:b:head_first_statistics:pasted:20250903-074821.png}} 
-[{{:r_eg.15.7b1.png?250 |Figure_7._Correlation_And_Range}} +</WRAP> 
-데이터의 [[Range]]에 대한 판단에 신중해야 한다. 왜냐 하면, 데이터의 어느 곳을 자르느냐에 따라서 r 값이 심하게 변하기 때문이다.  +<WRAP clear/> 
-<WRAP clear /> +<WRAP column half> 
-__Outliers__ +<code> 
-[{{:r_eg.15.8a.png?250 |Figure_7._Correlation_And_Extreme_Data}}]  +set.seed(1) 
-[{{:r_eg.15.8b.png?250 |Figure_7._Correlation_And_Extreme_Data}}]  +data <- rbeta(500shape1 = 10, shape2 = 10) 
-위의 설명과 관련하여만약에 아주 심한 Outlier가 존재한다면 두 변인 간의 상관관계에 심한 영향을 준다. +hist(data, probability = TRUE,  
-[{{:pearson-6.png?300 |}}]+     main = "Histogram with Normal Distribution Data", 
 +     xlab = "Value", ylab = "Density",  
 +     col = "lightblue", border = "white")
  
-make it sure that there is __no data entry error__+# 2
-{{:r.crime.scatterplot.for.single.by.state.jpg}}+# install.packages("fitdistrplus")  
 +library(fitdistrplus)
  
 +fit <- fitdist(data, "beta")
 +alpha_est <- fit$estimate["shape1"]
 +beta_est <- fit$estimate["shape2"]
  
-<WRAP clear />+# 3. 
 +curve(dbeta(x, shape1 = alpha_est, shape2 = beta_est), 
 +      add = TRUE, col = "red", lwd = 2) 
 +</code> 
 +</WRAP>
  
-see  +<WRAP column half> 
-https://www.gapminder.org/answers/how-does-income-relate-to-life-expectancy/ +{{:b:head_first_statistics:pasted:20250903-074830.png}} 
-  * Histogram +</WRAP>
-{{:c:ps1-1:2019:pasted:20190909-103341.png}} +
-    * Life expectancy data: {{:life.exp.csv}}+
  
 +<WRAP clear/>
 +<WRAP column half>
 <code> <code>
-le <as.data.frame(read.csv("http://commres.net/wiki/_media/life.exp.csv", header=T)) +## 
-colnames(le)[1] <- "c.code# not really necessary. But, sometimes imported first characters are broken. +# right-skewed distribution 
-lea <- le$X2017 +# 1 
-leb <- lea[complete.cases(lea)+set.seed(1) 
-hist(lebcolor="grey")+data <- rbeta(500, shape1 = 2, shape2 = 10) 
 +hist(data, probability = TRUE,  
 +     main = "Histogram with Right-skewed Distribution", 
 +     xlab "Value", ylab = "Density",  
 +     col = "lightblue", border = "white") 
 + 
 +# install.packages("fitdistrplus")  
 +library(fitdistrplus) 
 + 
 +fit <- fitdist(data, "beta") 
 +alpha_est <- fit$estimate["shape1"] 
 +beta_est <- fit$estimate["shape2"
 + 
 +#  
 +curve(dbeta(xshape1 = alpha_est, shape2 = beta_est), 
 +      add = TRUE, col = "red", lwd = 2)
 </code> </code>
 +</WRAP>
 +<WRAP column half>
 +{{:b:head_first_statistics:pasted:20250903-082513.png}}
 +</WRAP>
 +<WRAP clear/>
  
-[{{:c:ps1-1:2019:pasted:20190909-110252.png|Life expectancy in 2017}}]+====== Histogram Modality====== 
 +<WRAP column half> 
 +Unimodal  
 +<code> 
 +### unimodal data  
 +set.seed(1
 +d.1 <rnorm(500, 10, 2) 
 +hist(d.1, breaks = 30, probability = T, 
 +     main = "Hist with Unimodal distrib", 
 +     xlab = "Value", ylab = "Density",  
 +     col = "lightblue", border = "black"
 +lines(density(d.1),  
 +      col = "darkred", lwd = 2) 
 +</code> 
 +</WRAP>
  
-[{{:c:ps1-1:2019:pasted:20190909-104759.png|Distribution of temperature}}]+<WRAP column half> 
 +{{:b:head_first_statistics:pasted:20250903-083409.png}} 
 +</WRAP>
  
-[{{:c:ps1-1:2019:pasted:20190909-111117.png|skewness}}]+<WRAP clear/> 
 + 
 +Bimodal distribution 
 +<WRAP column half> 
 +<code> 
 +### bimodal data  
 +set.seed(1) 
 +d.1 <- rnorm(500, 10, 2) 
 +d.2 <- rnorm(500, 20, 2) 
 +d.all <- c(d.1, d.2) 
 +hist(d.all, breaks = 30, probability = T, 
 +     main = "Hist with bimodal distrib", 
 +     xlab = "Value", ylab = "Density",  
 +     col = "lightblue", border = "black"
 +lines(density(d.all),  
 +      col = "darkred", lwd = 2) 
 +</code> 
 +</WRAP> 
 + 
 +<WRAP column half> 
 +{{:b:head_first_statistics:pasted:20250903-083524.png}} 
 +</WRAP> 
 +<WRAP clear/> 
 + 
 +<WRAP column half> 
 +<code> 
 +### multi-modal data  
 +# Parameters for the first normal distribution (Mode 1) 
 +m.1 <- 50 
 +sd.1 <- 5 
 + 
 +# Parameters for the second normal distribution (Mode 2) 
 +m.2 <- 100 
 +sd.2 <- 15 
 + 
 +m.3 <- 160 
 +sd.3 <- 6 
 + 
 +# Mixing proportion for Mode 1 
 +prop.1 <- 0.3 
 +# Mixing proportion for Mode 2 
 +prop.2 <- 0.6 # This is 1 - prop1 
 +# Mixing proportion for Mode 2 
 +prop.3 <- 1.0 # This is 1 - prop1 
 + 
 +# Number of samples to generate 
 +n.sam <- 1000 
 + 
 +# Create an empty vector to store the combined samples 
 + 
 +mm.dist <- numeric(n.sam) 
 +set.seed(1) 
 +for (i in 1:n.sam) { 
 +  # Randomly choose which distribution to sample from 
 +  tmp <- runif(1) 
 +  if (tmp < prop.1) { 
 +    mm.dist[i] <- rnorm(1, mean = m.1, sd = sd.1) 
 +  } else if (tmp < prop.2) { 
 +    mm.dist[i] <- rnorm(1, mean = m.2, sd = sd.2) 
 +  } else { 
 +    mm.dist[i] <- rnorm(1, mean = m.3, sd = sd.3) 
 +  } 
 + 
 +
 + 
 +hist(mm.dist, breaks = 30,  
 +     main = "Multimodal Distribution",  
 +     xlab = "Value", ylab = "Density",  
 +     freq = FALSE, probability = T, 
 +     col = "lightblue", border = "black"
 +lines(density(mm.dist),  
 +      col = "darkred", lwd = 2) 
 + 
 +</code> 
 +</WRAP> 
 +<WRAP column half> 
 +{{:b:head_first_statistics:pasted:20250908-082219.png}} 
 +</WRAP> 
 +<WRAP clear/>
  
-[{{:c:ps1-1:2019:pasted:20190909-111001.png|modality}}] 
  
-box plot+====== box plot ====== 
 +<WRAP column half>
 <code> <code>
 # Boxplot of MPG by Car Cylinders # Boxplot of MPG by Car Cylinders
Line 133: Line 388:
     ylab="Miles Per Gallon")     ylab="Miles Per Gallon")
 </code> </code>
-{{:c:ps1-1:2019:pasted:20190909-111438.png}}+</WRAP>
  
 +<WRAP column half>
 +{{:c:ps1-1:2019:pasted:20190909-111438.png}}
 +</WRAP>
 +<WRAP clear/>
 +====== see also ======
 +https://r-graph-gallery.com/
  
b/head_first_statistics/visualization.1599449521.txt.gz · Last modified: 2020/09/07 12:32 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki