8월 2019 - KJT's Blog

Storage for Knowledge

Hot

Post Top Ad

Study is the best friend!

2019-08-26

US EPA PMF 모델 기본 사용법 (데이터 요약 정보 확인)

8월 26, 2019 0

  • PMF 프로그램에 오염물질 농도 및 불확도 파일을 삽입하면, PMF 프로그램에서는 그 데이터를 바탕으로 다양한 요약 정보를 기본적으로 표시해준다. 
  • 요약 내용은 "Concentration/Uncertainty", "Concentration Scatter Plot", "Concentration Time Series", "Data Exceptions" 탭에서 확인이 가능하다.
그림 1
  • "Concentration/Uncertainty" 탭에서는 삽입된 오염물질 농도 및 불확도 데이터를 바탕으로 "S/N", "최소값(Min)", "25 백분위 값(25th)", "중앙값(50th)", "75 백분위 값(75th)", "최대값(Max)" 등과 같은 간단한 통계 정보를 보여준다. 
  • 그리고 오른쪽에는 농도와 불확도 데이터를 바탕으로 "Scatter Plot" 형태의 그래프를 보여준다.
  • 전형적인 농도와 불확도의 관계는 "Scatter Plot"에서 하키 스틱 형태를 가진다.
그림 2
  • "S/N"은 농도(Signal), 불확도(Noise)로 계산된 값이다.
    • 불확도를 초과하는 농도 값만 Signal로 계산에 이용한다.
    • 불확도 2배의 값을 가지는 오염물질의 S/N 비는 "1" 이며, 주로 이 값을 넘어가면 "good" signal로 판단한다.
    • 각 오염물질의 "카테고리(Cat)" 설정 시 중요한 매개변수가 된다. 
    • 오염물질 농도(x), 불확도(s) 사이의 계산 방법은 그림 3과 같다. 
그림 3
  • 오염물질별 카테고리 지정은 이 후에 실행될 PMF 모델링 내에서 각 오염물질들의 기여도를 계산할 때 중요한 역할을 하는 부분이다. 
  • 주로 S/N 비, 결측 샘플 수, 검출 한계 미만의 샘플 수, 샘플링 및 분석 시 에러, 예상 배출원,  물질의 반응성 등에 대한 자세한 지식을 바탕으로 카테고리를 결정하는 것이 가장 이상적이다.
  • 만약에 이러한 정보들이 부족하다면 S/N비를 사용하여 결정할 수 있다. 
  • PMF 메뉴얼에서는 S/N비가 0.5보다 작으면 "Bad", 0.5~1 이면 "Weak"으로 결정한다고 되어 있다. 하지만 이는 연구자의 역량으로 변경이 가능할 것이다. 
    • Strong : 샘플 및 불확도 변경 없이 모든 데이터 사용
    • Weak : 모든 샘플 사용하지만, 불확도를 기존 값의 3배로 변경
    • Bad : 모든 샘플 및 불확도 정보를 PMF 모델링에서 제외
  • 화면 하단에 있는 "Total Variable (Defaults to Weak)" 버튼은 오염물질들이 이루는 전체 성분을 표시해준다. 여기에서는 모든 오염물질이 PM2.5의 구성요소이므로 PM2.5를 "Total Varible"로 지정해준다. 
  • 이 후 PM2.5 부분은 굵은 글씨로 바뀌게 되고, 카테고리가 "Weak"으로 자동으로 바뀌게 된다. 
그림 4
  • "Concentration Scatter Plot" 탭에서는 오염물질 사이의 상관 관계 확인 및 배출원 및 배출원 범주에 대한 예상을 할 수 있다. 
  • 각 오염물질 간 one-to-one 그래프선형 회귀 그래프를 확인할 수 있다.
  • 마우스를 데이터 점으로 가져가면 아래쪽에 날씨/시간, X/Y축 오염물질의 농도가 나타나고, 그 옆으로 회귀 그래프의 회귀식이 나타난다. 
그림 5
  • "Concentration Time Series"탭에서는 시간 패턴에 따른 농도 변화 및 비정상적 이벤트 여부를 확인할 수 있다.
  • 최대 10개의 오염물질을 동시에 선택해서 비교해볼 수 있으며, 패턴 분석을 통해 배출원 공유 여부의 예상이 가능하고, 모델링 진행 시 제외해야할 데이터를 확인하고 바로 제외할 수 있다. 
  • 특정 데이터를 제외하고자 할 때에는 데이터를 클릭한 후, "Exclude Samples" 버튼을 클릭하면 실행된다. 이는 데이터의 삭제가 아니라 모델링 진행에서 제외되는 개념이다.
  • 제외된 데이터를 다시 추가하고 싶으면, 제외된 데이터를 선택한 후, "Restore Samples" 버튼을 클릭하면 된다.
  • 마우스 클릭으로 데이터 선택이 어려울때에는 근처에 있는 다른 데이터를 클릭한 후, 키보드의 좌/우 키로 데이터 선택이 가능하다.
그림 6
  • "Data Exceptions" 탭에서는 이전의 모든 탭에서 실행된 "카테고리 설정", "제외된 데이터" 등과 같은 내용이 표시된다. 
  • 연구자는 이러한 정보를 검토하여 PMF 모델링 실시 전 데이터의 최적화를 확인해야한다. 
  • 이 보고서는 화면에서 마우스 오른쪽 클릭을 통해 저장할 수 있다. 
그림 7



참고문헌

  1. EPA Positive Matrix Factorizatoin (PMF) 5.0 Fundamentals and User Guide, https://www.epa.gov/sites/production/files/2015-02/documents/pmf_5.0_user_guide.pdf

Read More

2019-08-25

US EPA PMF 모델 기본 사용법 (데이터 삽입)

8월 25, 2019 0
웁스!




  • 앞선 글에서는 PMF 모델의 간단한 이론과 불확도 계산 방법에 대하여 알아보았다.
  • 이번 글에서는 PMF 모델 프로그램에 오염물질 농도 데이터 및 불확도 데이터를 삽입하는 방법에 대해서 알아보고자 한다.
  • 앞선 글에 있는 링크를 사용하여 PMF 프로그램을 설치하였다는 가정 하에 진행한다.

  1. PMF 모델 프로그램을 설치한 후, 실행하면 그림 1와 같은 화면이 나타난다.
  • 먼저 오염물질의 농도 데이터 파일과 미리 계산된 불확도 파일을 삽입해야 한다.
  • "Concentration Data File" 부분의 오른쪽에 있는 "Browse" 버튼을 클릭하여 농도 파일을 삽입한다. 
  • 농도 파일을 삽입하면 바로 아래에 "Uncertainty Data File"부분이 활성화 되며, 농도 파일과 같은 방식으로 불확도 파일을 삽입하면 된다.
  • "txt, csv, xls 또는 xlsx" 확장자를 가지는 파일만 사용할 수 있다. 
    • 필자는 "CSV" 파일 사용을 추천한다. 
    • "xls 및 xlsx" 형태로 수차례 실험해 본 결과, 원인을 알 수 없는(도대체 왜 안되는겨?) 오류가 계속해서 나타났다.
    • "CSV"는 워크시트를 하나만 포함할 수 있기 때문에, 먼저 엑셀로 작업한 후 raw 데이터는 따로 보관하고, 데이터 및 불확도 워크시트를 따로 "CSV"로 저장하여 사용하면 된다. 
  • 이 글에서는 프로그램 사용법 소개 수준이므로 PMF 프로그램 설치 시 함께 제공되고, PMF 메뉴얼에서 설명을 위해 사용되는 "Dataset-Baltimore_*.txt" 파일을 사용한다.
웁스!
그림 1


  1. 오염물질 농도 파일과 불확도 파일을 차례대로 삽입한 후, 날짜/시간, 결측값 설정, 모델 결과 파일 및 프로그램 설정 파일 저장에 대한 정보를 결정한다.

  • 날짜/시간 내용은 필수는 아니기 때문에 데이터 파일에 넣지 않아도 되지만, 가능하다면 날짜/시간을 활용하는 것이 좋다.
  • 농도 데이터 내에서 다른 샘플과 비교하여 크게 차이가 나는 데이터 값에 대한 배경 조사에 날짜/시간이 활용될 수 있고, 특정 오염물질들의 날짜/시간별 변화도를 바탕으로 오염물질들 사이의 간단한 배출 상관 관계 파악도 가능하기 때문이다.
  • "Date/Time Column"에서 날짜/시간 정보가 있는 열의 이름을 선택해준다. 
  • 각 샘플별로 ID 또는 장소에 대한 정보가 있다면 이 또한 "ID/Site column" 부분에서 선택해준다.

    • 결측값(Missing Value)에 대한 처리 방법은 "Exclude Entire Sample" 및 "Replace Missing Values with Species Median"의 두 가지가 있다.
    • "Missing Value Indicator" 부분에서는 결측값을 나타내는 데이터 값을 넣어준다. 즉, 아래 그림에서 표시한 것과 같이 결측값을 "-999"로 표시하면 PMF 프로그램에서 자동으로 결측값으로 인식하게 된다. 
    • 연구자는 데이터 정리 과정에서 "Missing Value Indicator"를 결정하여 결측값에 표시하여야 한다. 
    • 결측값 처리 과정은 글에 표현된 그대로 "모두 제외" 또는 "중앙값으로 대체"되며, 모든 과정은 PMF 모델에서 자동으로 진행된다.

    • 다음은 모델 결과 파일 및 모델 설정 파일 저장이다. 
    • 먼저 모델 결과 파일의 경우, "Output Files" 부분의 "Output Folder" 부분 오른쪽 "Browse" 버튼을 클릭하여 폴더를 지정해준다. 
    • 그리고 "Output File Prefix"부분에서 파일 이름에 들어갈 단어를 써준다. 결과는 "그림 3"을 참고하기 바란다.
    • "Output File Type"에서 결과 파일 형태를 지정할 수 있다.
    • 모델 설정 파일은 "Save File Locations and Settings in a Configuration File or Load a Previous Configuration File" 부분에서 설정이 가능하다. 
    • 모델 설정 파일 안에는 연구자가 현재까지 PMF 프로그램 내에서 진행된 설정, 데이터 파일, 모델링 결과 등에 대한 내용이 모두 저장된다. 
    • 즉, 오늘 실시한 데이터 및 불확도 파일 삽입(특정 폴더), 날짜/시간, 결측값 설정, 결과값 파일 저장 경로 및 이름 설정을 끝낸 후, 모델 설정 파일을 저장하면 앞선 모든 과정이 저장되고 다음에 다시 프로그램을 사용할 때에는 모델 설정 파일만 불러오면 모든 과정이 자동을 다시 완성된다. 
    • 저장하는 방법은 오른쪽 부분의 "Save as..." 또는 "Browse"를 클릭한 후, 저장 폴더를 선택하고 파일 이름을 타이핑 한 후 저장하면 된다.
    • 나중에 다시 파일을 불러오고 싶으면 "Load Last Saved" 파일로 바로 직전에 저장된 모델 설정 파일을 불러오거나, "Browse" 버튼을 클릭한 후 설정 파일이 저장된 폴더로 이동한 후 설정 파일을 열어주면 된다. 
    웁스!
    그림 2

    웁스!
    그림 3

    참고문헌

    1. EPA Positive Matrix Factorizatoin (PMF) 5.0 Fundamentals and User Guide, https://www.epa.gov/sites/production/files/2015-02/documents/pmf_5.0_user_guide.pdf
    Read More

    2019-08-15

    특정 지역에 대한 대기 역궤적 (Backward Trajectory) 분석 방법

    8월 15, 2019 0



    • 대기 환경과 관련된 연구를 진행하다보면, 오염물질의 장거리 및 단거리 이동에 의한 특정 지역에서의 영향을 확인하고자 할 때가 있다. 
    • 우리나라의 경우, 국내 배출원이 아닌 다른 곳에서 발생하여 이동해 오는 황사의 영향이 대표적이라고 할 수 있다.
    • 이 때, 연구자들은 특정 날짜, 특정 지역, 특정 고도 등에 대한 대기의 이동 경로를 역추적하여 오염물질의 이동을 확인하고 배출원을 특정할 수 있다. 
    • 대기 역궤적 분석 시, 우리는 미국 상무부(US Department of Commerce)의 해양대기청(National Oceanic and Atmospheric Administration)에서 제공하는 HYSPLIT 모델 기반의 대기 이동 모델링을 활용 할 수 있다.
    • 이번 글에서는 대기 역궤적 분석의 기본적인 사용법을 알아보고자 한다.

    1. 먼저 HYSPLT 모델 실행을 위한 사이트에 접속한다. 
    • 위의 링크를 타고가면 아래와 같은 화면이 나타나는데, 여기서 "Run HYSPLIT Trajectory Model"을 클릭한다. 

    1. 그리고 "Compute archive trajectories"를 클릭한다.

    1. 다음 화면은 역궤적을 확인할 장소의 수 및 궤적 타입을 설정하는 부분인데, 연구 목적에 따라 적절히 지정하면된다. 자세한 설명은 "Note" 및 "Detail" 부분을 잘 읽어보자.
    • 이 글에서는 "1" 및 "Normal"로 설정했다.

    1. 다음에는 "기상 데이터" 및 "역추적 장소"를 특정하는 창이 나타난다. 
    • "Meteorology"의 드롭박스를 클릭하면 다양한 기상 데이터 포맷이 나오는데, 연구 목적에 맞게 적절히 설정해주면 된다. 
    • 여기에서는 Global Data Assimilation System (GDAS, 1 degree)  데이터베이스를 설정했다. 
    • 기상 데이터를 설정한 후, 아래 쪽에서 "역추적 장소"의 위도/경도 또는 그 지역을 특정 할 수 있는 정보를 입력해주면 된다. 
    • 위도/경도는 여러 지도 사이트(구글 지도, 네이버 지도 등)에서 확인이 가능하며, 여기에서는 "울산시청"을 선정하였다. 




    1. 다음 화면에서는 역궤적 분석을 위한 자세한 설정을 변경 할 수 있는 창이 나타난다. 
    • 먼저 "Trajectory direction" 부분에서 "Backward"를 선택해 준다.
    • 그리고 "Start time"을 지정해준다. 여기서는 "8월 12일 00시"에 시작하는 것으로 설정했다.
    • "Total run time (hours)"에서 총 역궤적 시간을 설정해 준다. 여기서는 "24"시간으로 설정했다.
    • 제일 아래쪽에서는 "고도"를 설정 할 수 있으며, 지상고도(Above Ground Level, AGL) 및 해발고도(Metres Above Sea Level, MASL) 설정도 가능하다. 여기에서는 500, 250, 100m의 지상고도를 설정하였다.
    • 총 설정 내용은 "8월 12일 00시"부터 "24시간"동안 "울산 시청"으로 500m, 250m, 100m 지상고도에서 이동한 대기의 흐름을 "역궤적분석(Backward)"하는 것이다.

    • 아래로 스크롤 해보면, "Display Options"가 나온다.
    • "Googld Earth" 포맷으로도 output이 가능하다. 
    • 제일 아래쪽에서는 기상데이터의 포함 여부 또한 설정이 가능하다.
    • 연구 목적에 맞게 적절히 설정하자.

    1. 궤적분석 요청 버튼을 "한번만" 클릭하면 처음에는 바로 아래와 같은 화면이 나타나는데, 잠시만 기다리면 그 다음 화면으로 자동으로 새로고침된다. 
    • 기본적으로 "GIF Plots"및 "PDF Plots"가 나타나지만, 여기에서는 "Google Earth" 포맷을 설정하였기 때문에 이 또한 함께 나타났다. 
    • 표 아래 ".gif", ".pdf", ".kmz" 등을 클릭하면 해당되는 포맷으로 결과를 다운로드 할 수 있다. 



    1. 결과를 다운로드 한 결과이다. (GIF 및 Google Earth)
    • "Google Earth"의 경우에는 대기의 이동 경로를 영상으로도 확인이 가능하다.
    • 해보진 않았지만 파워포인트 등과 같은 발표 자료 만들 때 좀 더 이쁘게 꾸밀 수 있을 것 같다. 




    • 이상으로 대기 역궤적(Backward Trajectory) 분석 방법을 간단하게 알아보았다.
    • HYSPLIT 모델은 이 글과 같이 간단한 분석과 함께 "화산재 확산" 등과 같이, 대규모 오염물질의 대기 이동에 의한 영향을 파악하는데 유용하기 때문에, 필요하다면 더욱 공부하여 활용 범위를 높이는 것도 좋을 것 같다. 

    참고문헌
    Read More

    2019-08-09

    구글 블로그에 "highlight.js" 코드 줄 번호 넣는 방법

    8월 09, 2019 0



    • 앞선 글에서는 구글 블로그에 "highlight.js"를 이용해서 코드를 이쁘게 넣는 방법에 대해서 알아봤다. @"구글블로그에 "highlight.js"로 코드 이쁘게 넣는 방법" 
    • "highlight.js"에서는 코드별 줄 번호를 표현해주지 않지만, 구글링을 통해 알아낸 줄 번호를 표현하는 방법을 공유하고자 한다.

    1. https://github.com/wcoder/highlightjs-line-numbers.js/ <-- 링크를 타고 들어가면 아래와 같은 화면이 나온다.

    1. 아래로 스크롤을 하면 아래와 같은 부분이 나타난다.
    • 빨간색으로 표시된 부분은 "구글블로그에 "highlight.js"로 코드 이쁘게 넣는 방법" 에서 했던 방법 그대로 </head> 코드를 검색한 후에 그 위에 복사 후 붙여넣기를 한다. 
    • 파란색 부분은 CSS 코드인데 넣는 방법을 알면 CSS 부분에 추가하면 된다. 모른다면 3번으로...


    1. 위의 파란색 부분은 CSS 코드 부분에 넣어야하는데 매우 간단한 방법이 있다. 
    • 먼저 블로그에 "테마" 메뉴로 간 후, "맞춤설정" 버튼을 클릭한다.

      • 그리고 왼쪽 아래에 있는 "고급" 탭으로 이동한 후, 위의 파란색 CSS 코드들을 복사 후 왼쪽 "맞춤 CSS 추가"에 붙여 넣어주면 된다. 
      • 붙여 넣은 후, 바로 나가면 안되고 가장 우측 상단에 보면 "블로그에 적용" 버튼을 반드시! 눌러야 한다. 


      1. 위의 내용을 진행하였다면 기존의 "highlights.js" 사용법에 따라 사용하면 코드에 줄 번호가 생성된다.
      • 하지만 디자인이 마음에 들지 않을 수 있는데, 이 때에는 아래에 있는 "CSS selectors"를 참고해서 CSS 부분을 수정하면 된다.

      • 이 블로그를 위해 수정한 내용을 "highlights.js"으로 첨부한다.
      .hljs-ln-numbers {
      
          -webkit-touch-callout: none;
          -webkit-user-select: none; 
          -khtml-user-select: none;
          -moz-user-select: none;
          -ms-user-select: none;
           user-select: none;
      
           text-align: center;
           color: #fff;
           border-right: 1px solid #CCC;
           vertical-align: middle;
           padding-left: 15px;
           padding-right: 5px;
           font-size: 15px;
           font-weight: bold;
         }
      
      .hljs-ln-code {
      
           padding-left: 10px;
         }
      
      Read More

      구글 블로그에 "highlight.js"로 코드 이쁘게 넣는 방법

      8월 09, 2019 1



      • R과 Python을 공부하면서 구글 블로그에 글을 쓰려고 계획하는 중, 포스트 안에 코드를 알아보기 쉬우면서 이쁘게 넣는 방법에 대해서 열심히 구글링을 했다.
      • 대부분 티스토리에 대한 내용들이 보였고, 여러 가지 방법 중 R 코드에 적용이 가능한 "highlight.js"를 통한 방법을 연구하기 시작했다. 
      • 자바스크립드, html, css를 수박 겉핥기 수준으로 배운 나로써는 참 힘든 여정이었지만, 결과적으로는 어떻게든 적용하게 되었다.

      1. 먼저 "highlight.js" 홈페이지를 방문한다.
      • 그리고 오른쪽에 "Get version" 버튼을 클릭한다.

        1. 아래와 같은 화면에서 위쪽 코드를 복사해준다.

        1. 자신의 블로그로 돌아와서 "테마" 메뉴 내 "html 편집"으로 들어간다.

        1. html 편집기에서 Ctrl+F 누른 후, </head> 태그를 검색한다.
        • 그 태그 바로 위에 아래 그림과 같이 앞서 복사한 코드를 붙여 넣어준다. 
        • 그리고 파란색 줄로 강조된 코드를 적어준다.
        • 스타일 변경은 "dracula.min.css" 코드에 "dracula"를 다른 스타일의 이름으로 변경해 주면 적용이 된다. 
        • 이것 저것 변경해 보면서 자신의 블로그 테마에 어울리는 스타일로 결정하면 된다. 

        1. 포스트에 적용할 때에는 아래와 같은 방식으로 넣어주면 된다.
        • "사용할 언어" 부분에는 따옴표를 쓰고 그 안에 html, python, r 등과 같은 언어 이름을 쓰면 된다. 
        • pre 및 code 태그 다음부터 바로 인식을 하기 때문에 만약 엔터를 친 후 코드를 작성하면 실제 화면에서는 첫 줄을 빈 줄로 표시한다. 그럼 이쁘지 않다.
          <pre><code="사용할 언어">
          코드들
          </code></pre>
          

          Read More

          2019-08-01

          무료 통계학 책(eBook)

          8월 01, 2019 0

          • 통계학 입문, 응용, 머신러닝, 데이터마이닝, R 등 통계 분야 책들을 무료로 다운받을 수 있는 링크를 소개한다.
          • 2013년도에 어떤 분이 정리한 내용이며, 그 분의 블로그에 가면 각 책들에 대한 간단한 설명도 확인할 수 있다.

            1. Illowsky, B., and Dean, S. Collaborative Statistics
            2. Diez, D., Barr, C., and Çetinkaya-Rundel, M. OpenIntro Statistics (2nd Edition)
            3. Downey, A. B. Think Stats: Probability and Statistics for Programmers
            4. Yakir, B. Introduction to Statistical Thinking
            5. Shafer, D., and Zhang, Z. Introductory Statistics
            6. Lavine, M. (2013). Introduction to Statistical Thought
            7. Faraway, J. J. Practical Regression and Anova using R
            8. Hyndman, R. J. and Athanasopoulos, G. Forecasting: Principles and Practice
            9. Grinstead, C., and Snell, J. L. Introduction to Probability. American Mathematical Society
            10. Downey, A. B. Think Bayes: Bayesian Statistics Made Simple. Needham, MA: Green Tea Press
            11. Coghlan, A. A Little Book of R For Time Series
            12. Hastie, T., Tibshirani, R., and Friedman, J. Elements of Statistical Learning: Data Mining, Inference, and Prediction (2nd Edition) New York: Springer
            13. Barber, D. Bayesian Reasoning and Machine Learning. Cambridge: Cambridge University Press
            14. Zoran Obradovic, PhD, Big Data
            15. CRAN (R), https://cran.r-project.org
            16. Burns, P. The R Inferno
            17. 전희원 R 기반의 데이터 시각화

            참고문헌

            1. https://wsyang.com/2013/08/free-ebooks-for-statistics/
            Read More

            Post Top Ad

            Play with Study!