class: center, middle, inverse, title-slide .title[ # STATS101 ] .subtitle[ ## Diagnostics, Statistical Significance, and Confidence Intervals ] .author[ ### Sanghoon Park ] .date[ ### University of South Carolina ] --- ## Introduction 선형회귀모델은 강력한 가정들에 바탕을 둔다. -- 1. 선형성(linearity) -- 2. `\(E(e_i) = 0\)` -- 3. `\(Var(e_i) = \sigma^2\)` (등분산성) -- 4. `\(Cov(e_i, e_j) = 0\:\:(\text{for } i\neq j)\)` -- 5. `\(x_i\)`: 비확률변수이며 `\(y_i\)`와 규칙적으로 공변 -- 위의 가정을 모두 충족했을 때, 가우스-마르코프 정리(Gaus-Markov Theorem)에 따라 우리는 회귀분석의 계수값을 다음과 같이 표현할 수 있다. -- + 모수 `\(\beta\)`의 선형불편추정량 중 OLS로 추정한 `\(\hat \beta\)`가 가장 작은 분산을 가지며 편향되지 않은, 효율적인 추정량이다. -- + `B`est `L`inear `U`nbiased `E`stimator: 최선의 선형 불편추정량(`BLUE`) --- ## Introduction + 최소제곱(least squares)을 구하는 추정량은 데이터에 민감함. + 선형회귀모델을 분석하기 이전에, 우리에게는 두 가지 선택지가 주어진다. 1. 애초에 여러 가정을 요구하는 최소제곱추정법을 포기하거나 2. 데이터에 대한 진단을 병행하여 최소제곱을 통한 추정이 가능한지를 살펴보는 것이다. > [회귀모델을 분석하는 것에는] 많은 문제들이 있을 것이라 예상할 수 있으며, 그 문제들은 회귀모델을 수립하기에 *앞서* 데이터에 대한 주의깊은 분석을 통해서 다루어질 수 있다 (Fox, 2016: 266). --- ## Problems + 이탈치(Outliers) + 정규적으로 분포되어 있지 않은 오차(Non-normally distributed errors) + 일정하지 않은 분산(Non-constant variance) + 비선형성(Non-linearity) + 공선성(Collinearity) --- ## Outliers + 설명변수(explanatory variable)에서 주어진 값이 이례적인(unusual) 관측값 + 단변량(univariate) 이탈치와 이탈치 간의 차이 .panelset[ .panel[.panel-name[Univariate] <img src="D3S8_files/figure-html/unnamed-chunk-1-1.png" style="display: block; margin: auto;" /> ] .panel[.panel-name[Bivariate] <img src="D3S8_files/figure-html/unnamed-chunk-2-1.png" style="display: block; margin: auto;" /> ] ] --- ## Influence + 이례적인 데이터는 선형 적합(line fit)에 영향을 미치기 때문에 최소제곱 접근법을 적용하는 데 문제가 될 수 있다. + `\(\text{Influece} = \text{Leverage}\times\text{Discrepancy}\)` + `\(\text{Leverage} = \text{Far in}\: X \\ \text{Discrepancy} = \text{Far in}\: Y\)` + 즉, 이탈치가 중요한 이유는 그 값 하나가 전체적인 경향성, 선형 관계에 영향을 줄 수 있기 때문이다. + 이때, 이탈치는 `\(X\)`값, `\(Y\)`값 각각에 따라서 선형관계에 영향을 줄 수 있다. --- ## Influence ### Leverag + 흔히 `\(h_i\)`라는 지수를 통하여 `leverage`를 측정한다. + 개별 관측치가 `\(X\)`의 평균으로부터 얼마나 떨어져 있는지를 보여주는 것. + `\(h_{i} = \frac{1}{n} + \frac{(X_i-\bar X)^2}{\sum^{n}_{j=1}(X_j-\bar{X})^2}\)` --- ## Influence ### Discrepancy + 높은 `leverage`를 가진 관측치-즉, `\(X\)`에 평균으로부터 유독 멀리 떨어진 관측치들은 작은 잔차를 갖는 경향이 있다. + `\(V(E_i) = \sigma^2_\epsilon(1-h_i)\)` + 표준화 잔차(Standardized residual): `\(E_i = \frac{\sigma^2_\epsilon(1-h_i)}{S_E\sqrt{1-h_i}}\)` + 스튜던트화 잔차: `\(E_i^{*} = \frac{\sigma^2_\epsilon(1-h_i)}{S_{E(-i)}\sqrt{1-h_i}}\)` + 스튜던트화 잔차 = 표준화 잔차 - `\(i\)`번째 관측치 + 즉, 관측치를 하나씩 빼가면서 계산한 표준화 잔차가 스튜던트화 잔차. + 특정한 한 관측치가 아니라 `\(1, \dots n\)`의 관측치를 하나씩 제외하며 `\(E^{*}_1,\dots E^{*}_n\)`의 값을 비교 --- ## Influence ### Discrepancy + 이탈치의 식별(identification)을 마치 가설검정의 문제와 비슷하게 접근 + 이탈치냐 아니냐를 다른 관측치들이랑 비교했을 때, 평균과의 거리가 유의미하게 차이를 보이는 어떠한 관측치를 이탈치로 "결정" --- ## Influence + 이례적인 데이터는 선형 적합(line fit)에 영향을 미치기 때문에 최소제곱 접근법을 적용하는 데 문제가 될 수 있다. + `\(\text{Influece} = \text{hat-value}\times\text{residuals}\)` + 측정지표: + Cook's Distance + DFBETA & DFBETAS + DFITS --- ## Influence ### Cook's D $$ \frac{E^{'2}_{i}}{k+1}\times\frac{h_i}{1-h_i} $$ --- ## Influence ### Cook's D $$ \text{residual}\times\text{leverage} $$ --- ## Influence ### Cook's D $$ \frac{E^{'2}_{i}}{k+1}\times\frac{h_i}{1-h_i} $$ -- 1. 관측치를 하나씩 제거해본다. -- 2. 남은 ( `\(n-1\)` )개의 관측치들을 가지고 회귀모델을 재적합한다. -- 3. `\(i\)`번째 관측치가 제거되었을 때 적합된 값이 어떻게 바뀌는지 분석한다. -- > Cook's distance는 문제가 될 것이라고 생각되는 관측치가 데이터셋에서 제거되었을 때, 평균적으로 얼마나 예측된 `\(y\)`의 값에 변화가 나타나는지를 보여주는 방법이다. --- ## Outlier identification 이탈치를 식별하는 데에는 여러 가지 방법이 있다. -- 1. 시각화하여 탐색하는 방법 -- 2. Bonferroni correction -- 3. Anscombe's insurance analogy -- 개인적으로는 현재 단계에서는 시각화를 통해 연구자의 가설을 반영하는 핵심적인 예측변수와 종속변수 간의 양변량 관계(bivariate relationship)를 살펴보는 것을 추천. --- ## Non-normally distributed errors > "최소제곱추정법의 *타당성*이 견고하다 할지라도, `\(\cdots\)` 최소제곱법의 효율성(efficiency)는 견고하지 않다 (Fox, 2016: 297). -- 만약 오차가 멀티모달(multimodal)한 분포를 갖는다면? + 어떠한 설명변수가 데이터를 몇 개의 그룹으로 나누는 값을 가질 수 있다는 것을 의미 + 최소제곱추정법을 적용하기 위해서는 이런 변수들을 제외할 필요가 있다. 그러나 정규적으로 분포되어 있지 않은 오차를 탐색하기 위한 여러 검정 방법은 대개 단변량(univariate)한 관계를 가정하고 있다. + 대개 단위의 분위와 정규분포 간 스튜던트화 잔차의 표본 분포를 비교하는 분위비교플롯(quantile-comparison plot) 사용 --- ## Non-constant error variance + 일정한 오차 분산 = 등분산성(homoscedasticity) + 일정하지 않은 오차 분산 = 이분산성(heteroscadasticity) -- 오차의 분산은 다음과 같은 요인들로 인해 효율성, 타당성에 영향을 줌. + 표본 규모 + 변동성의 정도 + `\(X\)` 값의 조형(configuration) + 오차 분산과 `\(X\)` 간의 관계 --- ## Non-constant error variance 잔차플롯(residual plot)을 통해 일정하지 않은 오차 분산을 탐지 + 스튜던트화 잔차와 예측값 간의 관계( `\(\text{studentized residual} \sim \text{fitted values}\)` ) + 절대값을 취한 스튜선드화 잔차와 예측값 간의 관계( `\(\text{absolute studentized residual} \sim \text{fitted values}\)` ) + 가장 큰 오차 분산이 가장 작은 오차 분산에 비해 10배 이상 클 경우에만 심각하다고 간주(보수적으로 볼 경우는 4배) --- ## Non-linearity + 비선형성: `\(Y\)`와 `\(X\)`들 간의 패턴 + 가우스-마르코프 가정에 따라 선형회귀모델은 선형관계에 대한 가정에 바탕을 두고 있다. + 만약 두 변수의 관계가 선형이 아님에도 최소제곱법을 통한 추정을 할 경우, 그 결과가 가장 효율적인 결과라고 보기는 어려울 것이다. --- ## Collinearity + 공선성: + 다른 문제들에 비해서는 상대적으로 심각하게 여겨지지 않음. + 공선성을 해결하기 위해 취하는 조치들이 때로는 공선성보다 더 심각한 문제를 야기할 수 있음. + 공선성의 문제를 해결하기 위한 조치들의 실질적 함의가 명확하지 않음. -- + `\(X\)`들 간의 완벽한 선형 관계가 존재할 경우 + 굳이 여러 개의 `\(X\)`를 쓸 필요가 없다. + 왜냐하면 각 `\(X\)`가 독립적으로 회귀분석에 포함된다고 할 때, 모두 `\(Y\)`에 대해 동일한 설명력을 가질 것이기 때문. --- ## Collinearity + `\(X\)`들 간의 완벽하지는 않지만 높은 수준의 선형관계가 존재할 경우 + 회귀계수 `\(\beta_j\)`의 표집분산은 다음과 같다.: `\(V(\beta_j) = \frac{1}{1-R^2_j}\times\frac{\sigma^2_\epsilon}{(n-1)S^2_j}\)` + Fox (2016: 342)의 Figure 13.1을 보면, " `\(R_j\)`가 0.9에 도달하지 않는 이상, 추정의 정확성은 훼손되지 않는다"라고 언급. --- ## Solutions ### Outliers/non-normally distributed errors + 변수를 변환해주는 것 (e.g., Box-Cox, Box-Tidwell) + 변수에 제곱 혹은 제곱근을 취해주는 것 (e.g., log transformation) ### Non-constant variance + 가중치를 부여한 최소제곱 접근법(Weighted-Least-Squares) + 더 작은 분산을 가진 관측치에 더 큰 가중치를 부여함으로써, 일정하지 않은 분산에 대한 표준오차를 조정, 가중치를 부여한 제곱합을 최소화시키는 방법. + Huber-White robust standard errors + 공분산행렬의 대각행렬에 제곱근을 취하는 방법 --- ## Solutions ### Collinearity + 변수의 정보를 합쳐서 새로운 변수로 만들어 보는 것 + 변수의 수를 줄이기 + `\(X\)` 변수들의 독립성을 제고하기 + 혹은 모델을 다시 구성하는 것, 변수들을 다시 선정해보는 것, 편향된 값을 가정한 추정법(e.g., ridge regression)을 사용해보는 것 등의 방법이 있다. --- ## Hypothesis testing + `BLUE`? + 표집분포란? + 모델에 포함시켜서는 안 될, 부적절한 변수들을 포함시켰을 때 생기는 문제는? + 모델에 포함시켜야할, 적절한 변수를 누락시켰을 때 생기는 문제는? + `\(y = \beta_0 + \beta_1x + \beta_2z + \beta_3xz\)`를 해석해보라. + `\(y = \beta_0 + \beta_1I(x=1) + \beta_2I(x=2), \text{with}\: x\in\{0, 1, 2\}\)`를 해석해보라. --- ## Hypothesis testing ### Variables with similar means and variances ``` ## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`. ## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`. ## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`. ``` <img src="D3S8_files/figure-html/unnamed-chunk-3-1.png" style="display: block; margin: auto;" /> --- ## More structure needed ### Classic Linear Model + 가우스 마르코프의 다섯 가지 가정과 `\(Var(u) \sim N(0, \sigma^2)\)`. + `\(E(\hat \beta_k) = \beta_k\)`. + `\(Var(\hat \beta_k)\)`는 어떤 주어진 값이 될 것 + 이때, 만약 `\(\hat \beta_k \sim N\Big(\beta_k, Var(\hat \beta_k)\Big)\)`라고 하면 과연 무엇이 달라질까? --- ## Let's look more closely $$ \hat \beta_k \sim N\Big(\beta_k, Var(\hat \beta_k)\Big) $$ + 우리가 알 수 있는 것 + `\(x \sim N(\mu, \tau^2): \frac{1}{2\sqrt{\tau^2\pi}}\mathrm{exp}\Big[-\frac{(x-\mu)^2}{2\tau^2} \Big]\)`에 대한 밀도 + `\(\hat \beta_k\)` + `\(Var(\hat \beta_k)\)` + 우리가 알 수 없는 것 + `\(\beta_k\)` + 만약 우리가 `\(\beta_k\)`에 대해서 가정을 세우고 데이터가 그 가정에 위배되는지 아닌지를 확인할 수 있다면? --- ## Null Hypothesis Significance Testing + 어떤 값 `\(\beta_k\)`가 사실이라고 가정하고 이를 `\(w\)`라 하자. + `\(\beta_k = w\)`라는 가정 하에서, 우리는 얼마나 관측가능한 `\(\hat \beta_k\)`의 분포가 그 값, `\(w\)`를 포함할 것인지 살펴볼 수 있다. + `\(\beta_k = w\)`라고 가정했을 때, 더 이상 우리가 모르는 값은 없다. + Student `t` 분포는 `\((n-k-1)\)`의 자유도를 갖는다. 하지만 관측치가 많을수록, 이는 Gaussian으로(정규분포로) 수렴한다.: `\(\frac{\hat \beta_k - \beta_k}{se(\hat\beta_k)}\sim t_{n-k-1}\)` --- ## Null Hypothesis Significance Testing ### Procedure + 여기서 우리의 영가설은 다음과 같다: `\(H_0 : \beta_k = w\)` + 따라서, `t` 값은 `\(\frac{\hat\beta_k - w}{se(\hat{\beta_k}-w)}\sim t_{n-k-1}\)`이 된다. + 여기서 질문: 얼마나 `\(\hat \beta_k\)`가 `\(w\)`로부터 멀리 떨어져 있어야 우리가 `\(\beta_k\)`에 대한 연구가설 혹은 영가설을 기각할 수 있을까? --- ## Null Hypothesis Significance Testing ### Procedure + 만약 연구가설을 다음과 같이 설정했다고 하자: `\(H_1: \beta_k > w\)` + 이때 유의수준을 특정해보자. + "영가설이 실은 사실이라면 모집단에서 추출한 100개의 표본 중 몇 번이나 우리가 영가설의 값을 얻어야 영가설을 기각할 수 있을까?" 이 100개 중 몇 번: `\(\alpha\)`를 유의수준이라고 함. + `\(\alpha\)`가 클수록, `\(\hat \beta_k\)`가 영가설을 기각할 가능성이 더 커짐. + 당연하다: 100번 중 50번으로 널럴하게 검정하는 것 vs. 100번 중 5번으로 엄격하게 검정하는 것에는 당연히 차이가 있을 것. --- ## Null Hypothesis Significance Testing ### Procedure .panelset[ .panel[.panel-name[H1: beta_k > 0, large df] <img src="D3S8_files/figure-html/unnamed-chunk-4-1.png" style="display: block; margin: auto;" /> ] .panel[.panel-name[H1: beta_k < 0, large df] <img src="D3S8_files/figure-html/unnamed-chunk-5-1.png" style="display: block; margin: auto;" /> ] ] --- ## Null Hypothesis Significance Testing ### Procedure + `t` 검정통계량이 결정값(critical value)보다 클 때 영가설을 기각할 수 있다는 것을 떠올려보자. + 그렇다면 결정값은 어떻게 구할 수 있을까? + `\(\alpha\)`나 `\((1-\alpha)\)`를 Student `t`나 정규분포의 누적밀도함수에 집어넣어보면 된다. + In R: `qt()`, `qnorm()` --- ## Practice: t-test ### Exhaust emissions test for vehicles 많은 사업들의 성패는 소비자들 사이에서 얼마나 좋은 이미지를 갖는냐가 좌우한다고 해도 과언이 아니다. 그래서 많은 회사들은 제품의 품질 관리에 심혈을 기울이고 있다. -- + 예를 들어, 00자동차의 경우, 생산된 자동차에 친환경 이미지를 부여하기 위하여 자사의 평균 자동차 배기가스의 이산화탄소 함유량이 20 ppm (parts per milloion) 이하로 나오도록 관리하고 싶어한다. -- + 품질관리 부서에서는 10대의 신형 엔진을 탑재한 자동차를 무작위로 선택하여 배기가스 이산화탄소 함유량을 측정하여 다음과 같은자료를 얻었다. -- ``` ## [1] 15.6 16.2 22.5 20.5 16.4 19.4 16.6 17.9 12.7 13.9 ``` -- 00자동차는 신형 엔진이 자사의 품질관리 기준을 만족한다고 판단할 수 있을까? 유의수준 1% 하에서 통계적검정을 수행하라. --- ## Practice: t-test ### Exhaust emissions test for vehicles -- #### 영가설과 대안가설을 수립하라. -- + 영가설: 00사의 평균 자동차 배기가스의 이산화탄소 함유량은 20 ppm (parts per milloion) 보다 크거나 같을 것이다. -- + 대안가설: 00사의 평균 자동차 배기가스의 이산화탄소 함유량은 20 ppm (parts per milloion) 보다 작을 것이다. --- ## Practice: t-test ### Exhaust emissions test for vehicles #### 유의수준에 따른 기각역을 계산하라. -- + 유의수준 1%, 즉 0.01에 따른 기각역을 계산해보자. -- ```r # 관측치의 개수 n <- length(c(15.6, 16.2, 22.5, 20.5, 16.4, 19.4, 16.6, 17.9, 12.7, 13.9)) # 가설 선택의 기준: 1% alpha <- 0.01 # t분포에서 2.82를 기준으로 기각 여부를 알 수 있다. qt(df = n-1, 1 - alpha) ``` ``` ## [1] 2.821438 ``` ```r # 다시 t분포의 확률로 보면 2.82가 99%를 가르는 기준임을 알 수 있다. pt(qt(df = n-1, 1 - alpha), df = n-1) ``` ``` ## [1] 0.99 ``` --- ## Practice: t-test ### Exhaust emissions test for vehicles #### t-검정 통계량를 계산하라. ```r mean <- mean(c(15.6, 16.2, 22.5, 20.5, 16.4, 19.4, 16.6, 17.9, 12.7, 13.9)) null <- 20 t.value <- (mean - null)/ (sd(c(15.6, 16.2, 22.5, 20.5, 16.4, 19.4, 16.6, 17.9, 12.7, 13.9))/sqrt(n)) t.value ``` ``` ## [1] -3.00165 ``` --- ## Practice: t-test ### Exhaust emissions test for vehicles #### 검정 통계량과 기각역을 사용하여 통계적 검정을 수행하라. + 여기서 00사는 20 ppm 보다 "작은" 수치를 가지는 것을 기대한다. -- + 따라서 `t.value = -3`이라는 결과는 00사의 자동차 배기가스 평균값에서 기대하는 수치인 20 ppm을 빼주었을 때의 차이가 00사의 자동차 배기가스 값들이 우연히 표본에 뽑혔을 불확실성에 비하여 약 3배 이상 더 크며, -값이므로 00사의 자동차 배기가스 값의 평균이 20 ppm보다 더 작다는 것을 의미한다. -- + 앞서 기각 기준이 2.82 였으므로, 음의 방향으로 -2.82보다 더 큰 -3은 00사의 차량 배기가스 배출량이 평균적으로 20 ppm 보다 크거나 같을 것이라는 영가설을 기각하기에 충분하다. -- + 즉, 우리는 00사의 차량 배기가스 배출량이 평균적으로 20 ppm 보다 작을 것이라고 주장할만한 경험적 근거를 가진다. --- ## What is next? + 영가설을 기각했다고 하자. 그렇다면 그 결과가 나의 연구가설에 대해서 무엇을 말해주는가? ### Mister p 사실 영가설을 기각하는 접근법은 어딘가 좀 이상하다. + 왜 우리는 사전에 설정한 `\(\alpha\)` 값을 받아들이고, 이를 통해 통계적 유의성을 칼로 베듯이 결정하는가? + `\(p\)`-값: 주어진 `t` 검정통계량에 대해서 연구자가 선택할 수 있는 가장 작은 `\(\alpha\)`를 가지고 영가설을 기각할 수 있게 해주는 값. ### Two-sided alternatives + `\(H_0: \beta_k = 0,\: H_1: \beta_k \neq 0\)`. + `\(\alpha\)`를 설정한다. 따라서 `\(|t|>c\)`일 때 영가설은 기각된다. --- ## Null need not be 0 ### Other hypothesis + `\(H_0: \beta_k = g,\: H_1: \beta_k > g\)`. + `\(\alpha\)`를 설정한다. `\(t = \frac{\hat \beta_k-g}{se(\hat \beta_k)}\)`, 따라서 `\(|t| >c\)`일 때 영가설은 기각된다. ### General `t` stat $$ t = \frac{\text{estimate - hypothesized value}}{\text{standard error of estimate}} $$ --- ## Think about Interaction ### Interactions + `\(y = \beta_0 + \beta_1 + \beta_2z + \beta_3xz\)`. + 여기서 가설은 무엇일까? 지난 상호작용 파트를 떠올려보자. --- ## More generally ### General `t` stat + 상호작용에서는 `\(\beta_1, \beta_2, \beta_3\)` 그 자체에는 신경쓰지 않는다. + `\(x\)`의 한계효과에 대한 가설을 제시한다. $$ \partial y / \partial x = \beta_1 + \beta_3z $$ + 이때, 영가설은 `\(H_0: \partial y / \partial x = 0\)` + 따라서 `\(t = \frac{(\hat \beta_1 + \hat \beta_3 z) - 0}{se(\hat \beta_1 + \hat \beta_3 z)}\)`. --- ## Interaction and testing + 그렇다면 `\(se (\hat \beta_1 + \hat \beta_3z)\)`는 어떻게 구할까? + Wooldridge (2012: 740) 참고. + 힌트: `\(X\)`와 `\(Y\)`가 확률변수이고 `\(a\)`, `\(b\)`가 상수일때, + `\(Var(aX + bY) = a^2Var(X) + b^2Var(Y) + 2abCov(X, Y)\)`. + 상호작용의 표준오차는 위와 같은 공식을 이용해서 구할 수 있다. --- ## Confidence intervals ### Over repeated samples + `\(\alpha\)`란 무엇인가? + `\(\alpha\)`란 단순한 분포의 꼬리 부분에 해당하는 확률이다. + 신뢰구간은 우리가 일반적으로 모집단의 모수가 그 안에 속할 것이라고 기대되는 구간이다. + "표집을 반복했을 때, 95% 신뢰구간은 100번 중 95번 모수, `\(\beta_k\)`를 포함할 것이다." --- ## Confidence intervals ### Constructing confidence intervals #### From the sampling distribution + 우리는 `\(\frac{\hat \beta_k - \beta_k}{se(\hat \beta_k)} \sim N(0, 1)\)`이라는 것을 안다. + 이때, 밀도의 95%에 해당하는 분위는? -- + 2.5번째와 97.5번째 분위: 평균 `\(\pm 1.96\:SD\)`. -- #### CIs + 95% 신뢰구간은 `\([\hat \beta_k \pm 1.96\times se(\hat \beta_k)]\)`. + 99% 신뢰구간은 `\([\hat \beta_k \pm 2.58\times se(\hat \beta_k)]\)`. --- class: center, middle background-image: url(https://raw.githubusercontent.com/pherephobia/usc_logo/main/UofSC_Primary_RGB_G.png) background-size: 300px background-position: 11% 15% # Thanks! ## Please do not hesitate to ask questions. Contacts for Instructor. | Contact | Sanghoon Park | | :-------------: | :----------------------------: | | <svg viewBox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"></path></svg> | [sp23@email.sc.edu](sp23@email.sc.edu) | | <svg viewBox="0 0 576 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"></path></svg> | [sanghoon-park.com/](https://www.sanghoon-park.com/) | | <svg viewBox="0 0 448 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z"></path></svg> | #305 Gambrell |