<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>incastle의 콩나물</title>
    <link>https://incastle-study.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 2 Jul 2026 02:37:06 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>incastle</managingEditor>
    <image>
      <title>incastle의 콩나물</title>
      <url>https://tistory1.daumcdn.net/tistory/3079297/attach/79e5bf12488f44b9af7f398b4e42372f</url>
      <link>https://incastle-study.tistory.com</link>
    </image>
    <item>
      <title>Bandit으로 application security testing하기</title>
      <link>https://incastle-study.tistory.com/105</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;Bandit이란?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- bandit은 Python 코드에서 일반적인 보안 문제를 찾기 위해 설계된 도구입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이를 위해 Bandit은 각 파일을 처리하고 이 파일에서 AST를 만들고 AST 노드에 대해 적절한 플러그인을 실행합니다. - - Bandit이 모든 파일 스캔을 마치면 보고서를 생성합니다.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;사용법&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1649774399937&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## severity-level : low, medium, high 중 특정 level 이상의 보안 항목만 보고 싶을 때
## o : save file path
## f : save file format (csv, json 등 다양하게 있음)
## b : baseline_report 설정

bandit -r . o [save_report_path] --severity-level [level] -f json 
bandit -r . o [save_report_path] --severity-level [level] -f json -b [baseline path]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) baseline없이 먼저 report를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 추후 배포를 하거나 코드 변경이 있을 때 baseline report를 바라보고 bandit을 돌린다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) baseline에서 발생됐던 report들 이외에 새로운 bug or severity 코드가 발생되면 results부분에 해당 코드들이 report되어 저장된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) 새로운 bug가 없으면 results는 빈 list를 반환한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;참고&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AST : application security testing&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;DAST : dynamic application security testing
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동적 어플리케이션 보안 테스트&lt;/li&gt;
&lt;li&gt;Black-Box Test 방식
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응용 프로그램의 내부 구조나 작동원리를 모르는 상태에서 동작을 검사하는 테스트 방식&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;어플리케이션이 실행 중인 상태에서 보안 취약점을 탐지하는 것&lt;/li&gt;
&lt;li&gt;대부분의 DAST Solution은 웹 어플리케이션의 취약점을 테스트하도록 설계되어 있다.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SAST : static application security testing
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정적 어플리케이션 보안 테스트&lt;/li&gt;
&lt;li&gt;White-Box Test 방식
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응용 프로그램의 내부 구조와 동작을 검사하는 테스트 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;컴파일되지 않은 소스코드를 분석하여 수치 오류, 입력 유효성, 경쟁 조건(Race Condition), 경로 탐색, 포인터 및 참조 등과 같은 결함을 확인할 수 있다.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Data Engineering</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/105</guid>
      <comments>https://incastle-study.tistory.com/105#entry105comment</comments>
      <pubDate>Tue, 12 Apr 2022 23:50:54 +0900</pubDate>
    </item>
    <item>
      <title>Amazon MSK(Managed Streaming for Apache Kafka)</title>
      <link>https://incastle-study.tistory.com/104</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Apache Kafka&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Publish-Subscribe 모델&lt;span style=&quot;color: #555555;&quot;&gt;을 구현한 분산 메시징 시스템이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;(=어플리케이션간에 메세지를 교환하기 위해 사용되는 메세징 시스템)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #555555;&quot;&gt;잠깐 &lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;Publish-Subscribe?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;데이터를 만들어내는 프로듀서(Producer, 생산자), 소비하는 컨슈머(Consumer, 소비자) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;그리고 이 둘 사이에서 중재자 역할을 하는 브로커(Broker)로 구성된 느슨한 결합(Loosely Coupled)의 시스템이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로듀서가 메세지를 보내면 카프카가 이걸 보관하고 있다가&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨슈머가 카프카에 저장된 메세지를 필요할 때 확인하는 것&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜 쓰는가?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존은 생산자와 이에 상응하는 소비자를 명시해야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카프카는 생산자는 메세지를 전송만 하고(누가 받을지 신경 안씀)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수신자는 카프카에게 원하는 토픽을 구독하면 됨&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누가 보냈는지 신경 안쓰고 필요한 메세지만 구독하는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조가 매우 단순해지면서 유지보수, 에러발생, 트래픽 장점&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUy8Ne/btrsHHrsC2l/Yjqcv34DvRfqAjAKl40f50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUy8Ne/btrsHHrsC2l/Yjqcv34DvRfqAjAKl40f50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUy8Ne/btrsHHrsC2l/Yjqcv34DvRfqAjAKl40f50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUy8Ne%2FbtrsHHrsC2l%2FYjqcv34DvRfqAjAKl40f50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;213&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;카프카의-용도&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;kafka의 용도&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메세지 처리&lt;/li&gt;
&lt;li&gt;사용자의 웹 사이트 활동 추적 파이프라인&lt;/li&gt;
&lt;li&gt;애플리케이션의 통계 집계&lt;/li&gt;
&lt;li&gt;시간순으로 발생하는 이벤트를 저장해 필요한 곳으로 보냄&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Amazon MSK&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529;&quot;&gt;Apache Kafka를 사용하여 스트리밍 데이터를 처리하는 애플리케이션을 빌드하고 실행할 수 있는 완전관리형 서비스&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/104</guid>
      <comments>https://incastle-study.tistory.com/104#entry104comment</comments>
      <pubDate>Sun, 6 Feb 2022 19:14:35 +0900</pubDate>
    </item>
    <item>
      <title>CGI, WSGI, ASGI</title>
      <link>https://incastle-study.tistory.com/103</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;django, flask등의 python 기반의 웹 프레임워크는 어떻게 서버와 통신을 하는가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버와 통신을 할 때 사용되는 인터페이스로서 CGI, WSGI, ASGI 등이 사용된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CGI(Common gateway Interface)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹서버와 외부 프로그램을 연결해주는 표준화된 프로토콜&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트의 요청이 있을 때마다 프로세스를 추가 생성 삭제 작업을 반복해서 비효율적이다. (오버헤드 심함 + 메모리)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WSGI(Web Server Gateway Interface)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WSGI는 모든 요청을 한 프로세스에서 처리를 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 요청을 콜백으로 받아 처리를 함, CGI는 매 요청마다 Fork 등의 함수를 통해 커널 리소스를 추가/반납함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ASGI(Asynchronous Server Gateway Interface)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WSGI로도 충분히 클라이언트의 요청을 웹 서버가 받아 내 애플리케이션으로 가져올 수 있도록 만들 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;but 대용량 트래픽 처리를 유연하기 하기 위해서는 여전히 부족함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 &lt;u&gt;웹 소켓&lt;/u&gt; 등을 사용한 실시간 채팅 서비스 등은 WSGI로 부족함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크게&amp;nbsp;다르지&amp;nbsp;않지만&amp;nbsp;ASGI는&amp;nbsp;기본적으로&amp;nbsp;요청을&amp;nbsp;비동기로&amp;nbsp;처리한다는&amp;nbsp;점이&amp;nbsp;차이가&amp;nbsp;크다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;웹 소켓(WebSocket)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 배경에서 웹소켓이 나오기 이전에는 모두 클라이언트의 요청이 없다면, 서버로부터 응답을 받을 수 없는 구조였다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹소켓을 이용하면 하나의 HTTP 접속으로 양방향 메시지를 자유롭게 주고받을 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transport protocol의 일종으로 서버와 클라이언트 간의 효율적인 양방향 통신을 실현하기 위한 구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;결과적으로 웹에서도 채팅, 실시간 주식차트와 같은 실시간이 요구되는 응용프로그램의 개발을 한층 효과적으로 구현할 수 있게 됨&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Data Engineering</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/103</guid>
      <comments>https://incastle-study.tistory.com/103#entry103comment</comments>
      <pubDate>Sat, 5 Feb 2022 22:17:29 +0900</pubDate>
    </item>
    <item>
      <title>StringIO는 언제 사용하는가?</title>
      <link>https://incastle-study.tistory.com/100</link>
      <description>&lt;div&gt;
&lt;div data-post-id=&quot;8496879&quot;&gt;
&lt;div data-s-tooltip-placement=&quot;right&quot;&gt;
&lt;div&gt;&lt;a href=&quot;https://stackoverflow.com/questions/8496711/what-is-stringio-used-for-in-this-script&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;출처 : https://stackoverflow.com/questions/8496711/what-is-stringio-used-for-in-this-script&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #273239;&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;StringIO&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #273239;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;module is an in-memory file-like object.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringIO는&amp;nbsp;파일류&amp;nbsp;객체로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;클래스입니다.&amp;nbsp;데이터가&amp;nbsp;디스크에&amp;nbsp;기록되는&amp;nbsp;대신&amp;nbsp;메모리의&amp;nbsp;버퍼(문자열&amp;nbsp;버퍼)에&amp;nbsp;기록된다는&amp;nbsp;점을&amp;nbsp;제외하고는&amp;nbsp;일반&amp;nbsp;파일과&amp;nbsp;똑같이&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1641294173383&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import io

output = io.StringIO()
output.write('First line.\n')
print('Second line.', file=output)

# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()

# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.python.org/ko/3/library/io.html#io.IOBase.close&quot;&gt;&lt;span&gt;close()&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;메서드가 호출될 때 텍스트 버퍼가 폐기된다.&amp;nbsp; 줄 바꿈 변환이 활성화되면, 줄 바꿈은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://docs.python.org/ko/3/library/io.html#io.TextIOBase.write&quot;&gt;&lt;span&gt;write()&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;한 것처럼 인코딩된다.&amp;nbsp; 신기한 건 print문도 file=output으로 설정해두면 stringio에 추가된다.&amp;nbsp;&lt;/p&gt;</description>
      <category>python</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/100</guid>
      <comments>https://incastle-study.tistory.com/100#entry100comment</comments>
      <pubDate>Tue, 4 Jan 2022 20:05:16 +0900</pubDate>
    </item>
    <item>
      <title>Auxiliary Target [Google Brain - Ventilator Pressure Prediction]</title>
      <link>https://incastle-study.tistory.com/99</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Google Brain - Ventilator Pressure Prediction대회가 끝나고 승자의 커널들을 보다 처음보는 개념이 있어서 공유한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Auxiliary Target이라는 건데 직역하면 '보조 타겟' 이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot; width=&quot;300&quot; height=&quot;300&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eqtHL8/btrkgHuWWV0/leyV6wNWhTtRgv5PKHHWw0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eqtHL8/btrkgHuWWV0/leyV6wNWhTtRgv5PKHHWw0/img.jpg&quot; data-alt=&quot;Aux선 할 때 그 Aux&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eqtHL8/btrkgHuWWV0/leyV6wNWhTtRgv5PKHHWw0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeqtHL8%2FbtrkgHuWWV0%2FleyV6wNWhTtRgv5PKHHWw0%2Fimg.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot; width=&quot;300&quot; height=&quot;300&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Aux선 할 때 그 Aux&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 대회의 Target value는 pressure이라는 numeric 변수이고, sequence형태의 데이터를 predict해야한다.&lt;/p&gt;
&lt;figure id=&quot;og_1636442183363&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;TensorFlow Transformer - [0.112]&quot; data-og-description=&quot;Explore and run machine learning code with Kaggle Notebooks | Using data from vent-transformer&quot; data-og-host=&quot;www.kaggle.com&quot; data-og-source-url=&quot;https://www.kaggle.com/cdeotte/tensorflow-transformer-0-112?scriptVersionId=79039122&quot; data-og-url=&quot;https://www.kaggle.com/cdeotte/tensorflow-transformer-0-112?scriptVersionId=79039122&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.kaggle.com/cdeotte/tensorflow-transformer-0-112?scriptVersionId=79039122&quot; data-source-url=&quot;https://www.kaggle.com/cdeotte/tensorflow-transformer-0-112?scriptVersionId=79039122&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('&amp;quot;&amp;quot;');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;TensorFlow Transformer - [0.112]&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Explore and run machine learning code with Kaggle Notebooks | Using data from vent-transformer&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.kaggle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 pressure 값만 target으로 예측하는 것 외에도 'pressure.diff()' 및 'pressure.cumsum()'을 Auxiliary Target으로 사용하여 함께 예측하는데 사용했다. 이 방법으로 성능 스코어를 꽤 상승시켰다고 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 코드는 위 케글 노트북에 정리됐고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Auxiliary Target 부분만 공유를 하자면&amp;nbsp; 다음과 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명했던 Auxiliary Target을 만드는 부분&lt;/p&gt;
&lt;pre id=&quot;code_1636438409182&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;train['pressure_diff'] = train.groupby('breath_id').pressure.diff().fillna(0)
train['pressure_integral'] = train.groupby('breath_id').pressure.cumsum()/200

## transformer을 사용하기 위해서 데이터 형태를 (샘플수, sequence길이, target feature길이)로 변환
targets = train[['pressure', 'pressure_diff', 'pressure_integral']].to_numpy().reshape(-1,80,3)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델을 학습할 때도 최종 output은 3차원으로 만들고&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1636441987757&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;outputs = layers.Dense(3, activation=&quot;linear&quot;)(x)
model = keras.Model(inputs=inputs, outputs=outputs)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 예측 값에 대한 걸 받아올 때는 진짜 target인 'pressure'만 가져오고, 이를 다시 펴주는(?) 약간의 작업을 해준다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1636442025460&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;oof_preds.append( model.predict(X_valid, verbose=VERBOSE)[:,:,0].squeeze().reshape(-1, 1) )&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>python/kaggle</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/99</guid>
      <comments>https://incastle-study.tistory.com/99#entry99comment</comments>
      <pubDate>Tue, 9 Nov 2021 16:17:08 +0900</pubDate>
    </item>
    <item>
      <title>pyspark Array&amp;lt;string&amp;gt; column fill na with empty list</title>
      <link>https://incastle-study.tistory.com/98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 F.array().cast('array&amp;lt;string&amp;gt;')을 사용하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;list column의 na를 채워줄 때 어떻게 해도 계속 에러가 나서 2시간은 삽질한 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1626080999957&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pyspark.sql.functions as F

fill_array = F.array().cast(&quot;array&amp;lt;string&amp;gt;&quot;)
fill_rule = F.when(F.col('txt_set').isNull().fill_array).otherwise(F.col('txt_set')
cntn_tb = cntn_tb.withColumn('txt_set', fill_rule)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Data Engineering/spark pyspark</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/98</guid>
      <comments>https://incastle-study.tistory.com/98#entry98comment</comments>
      <pubDate>Mon, 12 Jul 2021 18:10:34 +0900</pubDate>
    </item>
    <item>
      <title>list vs numpy appending</title>
      <link>https://incastle-study.tistory.com/97</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;BUT&lt;/b&gt;, if you're appending in a large number of loops. It's faster to append list first and convert to array than appending NumPy arrays.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;큰 숫자를 loop를 돌리면, list에 append한 다음에 마지막에 numpy로 바꿔주는 게 더 빠르다&lt;/p&gt;
&lt;pre id=&quot;code_1623218086584&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;In [8]: %%timeit
   ...: list_a = []
   ...: for _ in xrange(10000):
   ...:     list_a.append([1, 2, 3])
   ...: list_a = np.asarray(list_a)
   ...:
100 loops, best of 3: 5.95 ms per loop

In [9]: %%timeit
   ....: arr_a = np.empty((0, 3), int)
   ....: for _ in xrange(10000):
   ....:     arr_a = np.append(arr_a, np.array([[1,2,3]]), 0)
   ....:
10 loops, best of 3: 110 ms per loop&lt;/code&gt;&lt;/pre&gt;</description>
      <category>python/알고리즘</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/97</guid>
      <comments>https://incastle-study.tistory.com/97#entry97comment</comments>
      <pubDate>Wed, 9 Jun 2021 14:55:26 +0900</pubDate>
    </item>
    <item>
      <title>Pyspark에 대해 알아보자 (1)</title>
      <link>https://incastle-study.tistory.com/96</link>
      <description>&lt;p&gt;&lt;a href=&quot;http://spark.apache.org/docs/latest/api/python/getting_started/quickstart.html&quot;&gt;spark.apache.org/docs/latest/api/python/getting_started/quickstart.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1616918240937&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Quickstart &amp;mdash; PySpark 3.1.1 documentation&quot; data-og-description=&quot;This is a short introduction and quickstart for the PySpark DataFrame API. PySpark DataFrames are lazily evaluated. They are implemented on top of RDDs. When Spark transforms data, it does not immediately compute the transformation but plans how to compute&quot; data-og-host=&quot;spark.apache.org&quot; data-og-source-url=&quot;http://spark.apache.org/docs/latest/api/python/getting_started/quickstart.html&quot; data-og-url=&quot;http://spark.apache.org/docs/latest/api/python/getting_started/quickstart.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jiolm/hyJGGvFsPk/Zpcj4UnYtUsGxMOnC6YLW0/img.png?width=1294&amp;amp;height=673&amp;amp;face=0_0_1294_673&quot;&gt;&lt;a href=&quot;http://spark.apache.org/docs/latest/api/python/getting_started/quickstart.html&quot; data-source-url=&quot;http://spark.apache.org/docs/latest/api/python/getting_started/quickstart.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jiolm/hyJGGvFsPk/Zpcj4UnYtUsGxMOnC6YLW0/img.png?width=1294&amp;amp;height=673&amp;amp;face=0_0_1294_673');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Quickstart &amp;mdash; PySpark 3.1.1 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;This is a short introduction and quickstart for the PySpark DataFrame API. PySpark DataFrames are lazily evaluated. They are implemented on top of RDDs. When Spark transforms data, it does not immediately compute the transformation but plans how to compute&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;spark.apache.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;해당 문서를 번역하면서 궁금한 내용들을 의식의 흐름대로 정리했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;QuickStart&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. PySpark DataFrames are lazily evaluated.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- RDD의 데이터 로딩 방식 때문에 lazily evaluated하다는 표현을 쓴 것 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. They are implemented on top of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://spark.apache.org/docs/latest/rdd-programming-guide.html#overview&quot;&gt;RDD&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;s.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;- RDD의 최상단에서 pyspark는 실행된다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- RDD란? :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;쉽게 말해서 스파크 내에 저장된 데이터를 RDD라고 하고, 변경이 불가능하다. 변경을 하려면 새로운 데이터 셋을 생성해야 한다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;출처:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://bcho.tistory.com/1027&quot;&gt;https://bcho.tistory.com/1027&lt;/a&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;[조대협의 블로그]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;- 조대협님 블로그에 굉장히 정리가 잘됐다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;3.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;When Spark&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://spark.apache.org/docs/latest/rdd-programming-guide.html#transformations&quot;&gt;transforms&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;data, it does not immediately compute the transformation but plans how to compute later.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;RDD의 데이터 로딩 방식은 Lazy 로딩 컨셉을 사용하는데, 이를 설명한다. 예를 들어 sc.textFile(&amp;ldquo;파일&amp;rdquo;)로 파일을 로딩하더라도 실제로 로딩이 되지 않는다. 파일이 로딩돼서 메모리에 올라가는 시점은 action을 이용해서 개선할 당시만 올라간다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;DataFrame Creation&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;4. 데이터를&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt; 다양한 방법으로 만들 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- list로 받기(좀 귀찮다)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616919929356&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from pyspark.sql import SparkSession
from datetime import datetime, date
import pandas as pd
from pyspark.sql import Row
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([
    Row(a=1, b=2., c='string1', d=date(2000, 1, 1), e=datetime(2000, 1, 1, 12, 0)),
    Row(a=2, b=3., c='string2', d=date(2000, 2, 1), e=datetime(2000, 1, 2, 12, 0)),
    Row(a=4, b=5., c='string3', d=date(2000, 3, 1), e=datetime(2000, 1, 3, 12, 0))
])
df&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;- schema를 정해주기 : 왠만하면 정해주는 게 좋은 거 같다. 데이터 타입 때문에 짜증 나는 일들이 많이 발생함)&lt;/p&gt;
&lt;p&gt;- 나중에 데이터 타입들에 대해서도 한 번 정리해야겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1616920000360&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df = spark.createDataFrame([
    (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
    (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
], schema='a long, b double, c string, d date, e timestamp')
df&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;- pandas로 받기 : 괜찮은 거 같네&lt;/p&gt;
&lt;pre id=&quot;code_1616920099697&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pandas_df = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [2., 3., 4.],
    'c': ['string1', 'string2', 'string3'],
    'd': [date(2000, 1, 1), date(2000, 2, 1), date(2000, 3, 1)],
    'e': [datetime(2000, 1, 1, 12, 0), datetime(2000, 1, 2, 12, 0), datetime(2000, 1, 3, 12, 0)]
})
## pandasa dataframe만들 때 dict으로 묶어서 만듬

df = spark.createDataFrame(pandas_df)
df&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Data Engineering/spark pyspark</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/96</guid>
      <comments>https://incastle-study.tistory.com/96#entry96comment</comments>
      <pubDate>Sun, 28 Mar 2021 17:30:17 +0900</pubDate>
    </item>
    <item>
      <title>[금융데이터분석] Factor Models :: Part.2</title>
      <link>https://incastle-study.tistory.com/95</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;Arbitrage Pricing Theory(APT)&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;기존의 CAPM에서는 시장 리스크만을 고려했지만 APT에서는 다양한 요인들이 리스크의 원천이 될 수 있다. 예를 들어 CAPM은 적정수익률 = &amp;beta;*(시장수익률-무위험이자율)+무위험이자율 식으로 계산이 되지만 APT에서는 적정수익률 = b&lt;/span&gt;1&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;*(석유수익률)+b&lt;/span&gt;2&lt;span&gt;*(철강수익률)+b&lt;/span&gt;3&lt;span&gt;*(시장수익률-무위험이자율)+무위험이자율 식으로 나타날 수 있다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;span&gt;CAPM의 베타는 '시장 전체'의 수익률을 고려해야 하는데, 현실적으로 그 시장수익률을 고려하는 것이 어렵다. 당장&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://namu.wiki/w/GDP&quot;&gt;GDP&lt;/a&gt;&lt;span&gt;계산만 봐도 가사노동의 가치는 무시되고 있고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://namu.wiki/w/%EC%BD%94%EC%8A%A4%ED%94%BC&quot;&gt;코스피&lt;/a&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;지수같은 것도 비상장기업에 관한 정보는 누락되어 있다. 이런 예를 보면 알겠지만, 전체 시장을 완전히 파악한다는 것은 현실적으로 불가능한 일이다. 반면 APT는 위험 요인만을 찾으면 되므로, 예를 들어&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://namu.wiki/w/%EC%A3%BC%EC%8B%9D&quot;&gt;주식&lt;/a&gt;&lt;span&gt;의 경우 위험요인으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://namu.wiki/w/%EA%B8%88%EB%A6%AC&quot;&gt;금리&lt;/a&gt;&lt;span&gt;나 알트만 Z-점수 등을 사용해서 주식의 가격을 결정할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(출처 :&amp;nbsp; 나무위키)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CVMR9/btqKy6hpEZg/PimFHdmBCEWv6t9DUswd91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CVMR9/btqKy6hpEZg/PimFHdmBCEWv6t9DUswd91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CVMR9/btqKy6hpEZg/PimFHdmBCEWv6t9DUswd91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCVMR9%2FbtqKy6hpEZg%2FPimFHdmBCEWv6t9DUswd91%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;APT의 포인트는 a_i와 b_i 사이에 어떠한 관계가 있고, arbitrage의 기회는 없다고 가정하는 것이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Multifactor Model&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xJ37c/btqKxPUyBWC/HTdwJ1LHq6Uh5WKOV0k7S1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xJ37c/btqKxPUyBWC/HTdwJ1LHq6Uh5WKOV0k7S1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xJ37c/btqKxPUyBWC/HTdwJ1LHq6Uh5WKOV0k7S1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxJ37c%2FbtqKxPUyBWC%2FHTdwJ1LHq6Uh5WKOV0k7S1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;multifactore model은 행렬식으로 나타내는 게 더 효율적임&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4xrfV/btqKwrUnDlX/wyg7urEqXqVE3Cj0zQ1gjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4xrfV/btqKwrUnDlX/wyg7urEqXqVE3Cj0zQ1gjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4xrfV/btqKwrUnDlX/wyg7urEqXqVE3Cj0zQ1gjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4xrfV%2FbtqKwrUnDlX%2Fwyg7urEqXqVE3Cj0zQ1gjk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Multiple Linear Regression&amp;nbsp;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 개의 factor를 찾기 위해서 regression 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BANRJ/btqKxlF8iaj/nlzgQoVW1lnnOi2mP3s5n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BANRJ/btqKxlF8iaj/nlzgQoVW1lnnOi2mP3s5n1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 57.2839%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BANRJ/btqKxlF8iaj/nlzgQoVW1lnnOi2mP3s5n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBANRJ%2FbtqKxlF8iaj%2FnlzgQoVW1lnnOi2mP3s5n1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nb6J2/btqKwquoIQe/YP39m9BSmPnc8hkJ6FBPkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nb6J2/btqKwquoIQe/YP39m9BSmPnc8hkJ6FBPkK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 41.5533%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nb6J2/btqKwquoIQe/YP39m9BSmPnc8hkJ6FBPkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnb6J2%2FbtqKwquoIQe%2FYP39m9BSmPnc8hkJ6FBPkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oF7BU/btqKwslrWXA/z23mmcVZksDasLijueRk7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oF7BU/btqKwslrWXA/z23mmcVZksDasLijueRk7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oF7BU/btqKwslrWXA/z23mmcVZksDasLijueRk7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoF7BU%2FbtqKwslrWXA%2Fz23mmcVZksDasLijueRk7K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Fama-French Three-Factor Model&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;market factor : excess return on the market&lt;/li&gt;
&lt;li&gt;size factor(smb, small-minus-big) :&amp;nbsp; average return on the &lt;u&gt;&lt;i&gt;small portfolios minus&lt;/i&gt; &lt;/u&gt;the average return on the &lt;i&gt;&lt;u&gt;big portfolios&lt;/u&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;book-to-market equity ratio factor : average return on the &lt;i&gt;&lt;u&gt;value portfolios minus&lt;/u&gt;&lt;/i&gt; the average return on the&lt;i&gt;&lt;u&gt; growth portfolio&lt;/u&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>20-2 대학수업/금융데이터분석</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/95</guid>
      <comments>https://incastle-study.tistory.com/95#entry95comment</comments>
      <pubDate>Sat, 10 Oct 2020 14:19:21 +0900</pubDate>
    </item>
    <item>
      <title>[응용통계학] Chapter 9-1. Comparing Two Population Means</title>
      <link>https://incastle-study.tistory.com/94</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;Two Population Distribution&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJE8hi/btqKwRSx1PI/IMN4KFTTcr5P78pdBS9Ih0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJE8hi/btqKwRSx1PI/IMN4KFTTcr5P78pdBS9Ih0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJE8hi/btqKwRSx1PI/IMN4KFTTcr5P78pdBS9Ih0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJE8hi%2FbtqKwRSx1PI%2FIMN4KFTTcr5P78pdBS9Ih0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;sample size A, B는 서로 사이즈가 달라도 괜찮음&lt;/li&gt;
&lt;li&gt;각각은 x_i, y_i는 각 집단에서 independent하게 뽑혔음&lt;/li&gt;
&lt;li&gt;&lt;span&gt;In general, interested in assessing evidence that there is a difference between the two probability distributions&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;Two Population Means&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if we find the A의 평균 != B의 평균 =&amp;gt; this indicates that the two probability distributions are different&lt;/li&gt;
&lt;li&gt;만약에 A의 평균 = B의 평균임을 밝힌다면&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;two probability distribution이 같다고 결론 내릴 수 있게 됨&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;or we may further compare the variances of the two data sets&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;How do we compare &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; _A&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;and &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; _B&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baAu92/btqKv7O2dEo/xtianQKqRix0pMcKH58aRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baAu92/btqKv7O2dEo/xtianQKqRix0pMcKH58aRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baAu92/btqKv7O2dEo/xtianQKqRix0pMcKH58aRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaAu92%2FbtqKv7O2dEo%2FxtianQKqRix0pMcKH58aRK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;we want to see if the two are the same, we construct a confidence interval for &lt;span style=&quot;letter-spacing: 0px;&quot;&gt; _A&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;minus;  _B&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;We are interested whether this confidence interval contains zero&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span&gt;another approach =&amp;gt; hypothesis test&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tahWN/btqKwrsZbDX/mYd1YOkSeCMTNa2UdiFxw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tahWN/btqKwrsZbDX/mYd1YOkSeCMTNa2UdiFxw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tahWN/btqKwrsZbDX/mYd1YOkSeCMTNa2UdiFxw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtahWN%2FbtqKwrsZbDX%2FmYd1YOkSeCMTNa2UdiFxw1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;small p-value =&amp;gt; reject H0&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Paired vs Independent sample&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 집단을 비교할 때는 paired할 수도 있고 independent 할 수도 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Paired samples may alleviate variability from outside factors&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Paired&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;sample size =&amp;gt; must be equal&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Comparison between the two is then based upon the pairwise differences&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;그런 다음 둘 간의 비교는 쌍별 차이를 기반으로합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Analysis of Paired Samples&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyW7fO/btqKxREH17y/AhVXeUHvSiIWbIXzoiBznK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyW7fO/btqKxREH17y/AhVXeUHvSiIWbIXzoiBznK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyW7fO/btqKxREH17y/AhVXeUHvSiIWbIXzoiBznK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyW7fO%2FbtqKxREH17y%2FAhVXeUHvSiIWbIXzoiBznK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 z_i도 평균이&amp;nbsp; &amp;mu;인 독립적인 하나의 분포로 해석할 수 있다. 그렇게 되면 one-sample technique을 적용할 수 있게 됨&lt;/li&gt;
&lt;li&gt;p-value로 검증을 하기 위해서 각 집단의 평균값을 사용함&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pRq5j/btqKxmrqOqx/TRslgHxuh6zhxJkRZ0Ann1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pRq5j/btqKxmrqOqx/TRslgHxuh6zhxJkRZ0Ann1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pRq5j/btqKxmrqOqx/TRslgHxuh6zhxJkRZ0Ann1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpRq5j%2FbtqKxmrqOqx%2FTRslgHxuh6zhxJkRZ0Ann1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;each observation obtained from population A is thought of as below&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/slMdA/btqKy7m0aho/VvD3izTdwOUgH0duHpf7mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/slMdA/btqKy7m0aho/VvD3izTdwOUgH0duHpf7mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/slMdA/btqKy7m0aho/VvD3izTdwOUgH0duHpf7mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FslMdA%2FbtqKy7m0aho%2FVvD3izTdwOUgH0duHpf7mk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이걸 A집단, B집단으로 나눠서 생각하고 그 둘의 차이를 구하면&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blXXjq/btqKABnPPYm/RGTm8E6Yr2Jm8ZRo40JeO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blXXjq/btqKABnPPYm/RGTm8E6Yr2Jm8ZRo40JeO1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 49.6749%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blXXjq/btqKABnPPYm/RGTm8E6Yr2Jm8ZRo40JeO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblXXjq%2FbtqKABnPPYm%2FRGTm8E6Yr2Jm8ZRo40JeO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLkYzM/btqKvQAda9J/80tsZzjvLtj7djB0DEXLXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLkYzM/btqKvQAda9J/80tsZzjvLtj7djB0DEXLXK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 49.1624%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLkYzM/btqKvQAda9J/80tsZzjvLtj7djB0DEXLXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLkYzM%2FbtqKvQAda9J%2F80tsZzjvLtj7djB0DEXLXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;paired sample이기 때문에 r_i 두 개는 같아서 없어졌음&lt;/li&gt;
&lt;li&gt;에러텀은 평균이 0인 분포를 가정했기 때문에 사라짐&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Analysis of Independent(unpaired) Samples&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Independent samples&lt;/li&gt;
&lt;li&gt;x-y의 confidence level 을 측정할면 x-y의 standard error를 계산해야 함&lt;/li&gt;
&lt;li&gt;sample distribution의 standard error를 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ2fDA/btqKAAoU3k2/XljwuNQJ7H8hD2tPHcDx3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ2fDA/btqKAAoU3k2/XljwuNQJ7H8hD2tPHcDx3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ2fDA/btqKAAoU3k2/XljwuNQJ7H8hD2tPHcDx3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ2fDA%2FbtqKAAoU3k2%2FXljwuNQJ7H8hD2tPHcDx3k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP1gaw/btqKwrfHM8b/6hnpItLt8dTUc1H0AZRTyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP1gaw/btqKwrfHM8b/6hnpItLt8dTUc1H0AZRTyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP1gaw/btqKwrfHM8b/6hnpItLt8dTUc1H0AZRTyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP1gaw%2FbtqKwrfHM8b%2F6hnpItLt8dTUc1H0AZRTyK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;critical point, s.e를 알아야함.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX65DA/btqKy6PayBk/JKo6htRsguz3AAo3UHSn31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX65DA/btqKy6PayBk/JKo6htRsguz3AAo3UHSn31/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 71.8734%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX65DA/btqKy6PayBk/JKo6htRsguz3AAo3UHSn31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX65DA%2FbtqKy6PayBk%2FJKo6htRsguz3AAo3UHSn31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btclUA/btqKv7IvMuQ/NkriGTKnIbCakW2W1VOCW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btclUA/btqKv7IvMuQ/NkriGTKnIbCakW2W1VOCW1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 26.9638%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btclUA/btqKv7IvMuQ/NkriGTKnIbCakW2W1VOCW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtclUA%2FbtqKv7IvMuQ%2FNkriGTKnIbCakW2W1VOCW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>20-2 대학수업/응용통계학</category>
      <author>incastle</author>
      <guid isPermaLink="true">https://incastle-study.tistory.com/94</guid>
      <comments>https://incastle-study.tistory.com/94#entry94comment</comments>
      <pubDate>Sat, 10 Oct 2020 10:28:19 +0900</pubDate>
    </item>
  </channel>
</rss>