<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>sooyeon_.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Mon, 28 Oct 2024 12:32:20 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>sooyeon_.log</title>
            <url>https://velog.velcdn.com/images/sooyeon_/profile/70d44ad5-981b-4702-9edd-38b7103aae35/image.JPG</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. sooyeon_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/sooyeon_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[빅데이터를 지탱하는 기술]을 읽고-4.빅데이터의 축적]]></title>
            <link>https://velog.io/@sooyeon_/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A7%80%ED%83%B1%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-4.%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%B6%95%EC%A0%81-msbr9vr9</link>
            <guid>https://velog.io/@sooyeon_/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A7%80%ED%83%B1%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-4.%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%B6%95%EC%A0%81-msbr9vr9</guid>
            <pubDate>Mon, 28 Oct 2024 12:32:20 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h4 id="빅데이터를-지탱하는-기술을-읽고-4빅데이터의-축적">[빅데이터를 지탱하는 기술]을 읽고-4.빅데이터의 축적</h4>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/7b785ead-8956-4ae9-b178-74ca385e186d/image.png" alt=""></h1>
<hr>
<blockquote>
<h3 id="4빅데이터의-축적">4.빅데이터의 축적</h3>
</blockquote>
<h4 id="4-1벌크-형과-스트미링-형의-데이터-수집">4-1.벌크 형과 스트미링 형의 데이터 수집</h4>
<blockquote>
</blockquote>
<h5 id="-객체-스토리지와-데이터-수집">| 객체 스토리지와 데이터 수집</h5>
<blockquote>
<ul>
<li>데이터 수집 
수집한 데이터를 가공하여 집계 효율이 좋은 분산 스토리지를 만드는 일련의 프로세스 </li>
</ul>
</blockquote>
<h5 id="-벌크-형의-데이터-전송">| 벌크 형의 데이터 전송</h5>
<ul>
<li>벌크 형 방식 
데이터베이스나 파일 서버 또는 웹 서비스등에서 
각각의 방식으로 정리해 데이터를 추출한다. 
(데이터가 분산스토리지에 저장되어 있는 것이 아니면 
데이터 전송을 위한 ETL서버를 설치 한다.)<blockquote>
</blockquote>
</li>
<li>데이터 전송의 워크플로 
데이터 전송의 신뢰성이 중요한 경우에는 벌크형 도구 사용해야 한다. 
=&gt;스트리밍 형의 데이터 전송은 재실행하기 쉽지 않다. 
=&gt;데이터 전송을 재실행할 수 있다는 점이 벌크 형의 장점 <blockquote>
</blockquote>
<h5 id="-스트리밍-형의-데이터-전송">| 스트리밍 형의 데이터 전송</h5>
</li>
<li>스트리밍 형 데이터 전송이 필요한 경우
웹 브라우저,모바일 앱,센서 기기 등의 각종 &#39;디바이스&#39;에서 데이터를 수집하는 경우 
=&gt;다수의 클라이언트에서 계속해서 작은 데이터가 전송되는 방식이며, 이를 &#39;메세지 배송&#39;이라고 한다. 
```
보내온 메세지를 저장하는 방법 </li>
</ul>
<p>1.작은 데이터 쓰기에 적합한 NoSQL 데이터베이스 이용
2.&#39;메세지 큐&#39;와 &#39;메세지 브로커&#39;등의 중계 시스템에 전송
(분산 스토리지에 직접 쓰는것이 아님) 
=&gt;기록된 데이터는 일정한 간격으로 꺼내고 모아서 함께 
분산 스토리지에 저장한다. </p>
<pre><code>&gt;
- 웹 브라우저에서의 메시지 배송 
웹 서버 안에서 메세지를 만들어 배송한다. 
또한,자바스크립트를 사용하여 웹 브라우저에 직접 보냄
=&gt; 웹 이벤트 추적
&gt;
&gt;
- 모바일 앱으로부터의 메세지 배송
MBaaS라는 백 엔드의 서비스를 이용하여,저장한 데이터를
벌크형 도구를 이용해서 꺼낸다.
&gt;
&gt;
- 디바이스로부터의 메세지 배송 
&gt;&gt; - MQTT
TCP/IP를 사용하여 데이터를 전송하는 프로토콜
=&gt;Pub/Sub형 메시지 배송 구조를 가짐 
(채팅 시스템이나 푸시 알림등의 시스템에서 이용) 
&gt;
&gt;
- 메시지 배송의 공통화
&gt;&gt; - 클라이언트
메시지가 처음 생성되는 기기
&gt;&gt; - 프런트 엔드 
메시지를 먼저 받는 서버 
=&gt;클라이언트와의 통신 프로토콜을 제대로 구현하는 역할을 한다. 
***
#### 4-2.메시지 배송의 트레이드 오프  
&gt;
##### | 메시지 브로커
- 메시지 브로커
빅데이터의 메시지 배송 시스템에서는 데이터를 일시적으로
축적하는 중산층 
&gt;
&gt;
- 푸쉬 형과 풀형
&gt;&gt; - 푸쉬형
송신 측의 제어로부터 데이터를 보내는 방식
&gt;&gt;- 풀형
수신 측의 주도로 데이터를 가져오는 것
&gt;&gt;
&gt;&gt;=&gt;메시지 브로커는 푸쉬 형에서 풀 형으로 메시지 배송의 타이밍을 변환한다. 
&gt;&gt;
&gt;&gt;
&gt;&gt;- 생산자
메시지 브로커에 데이터를 넣는 것
&gt;&gt;- 소비자
데이터를 꺼내오는 것 
&gt;
&gt;
- 메시지 라우팅
메시지가 데이터를 여러 경로로 분기시키는 것 
&gt;
&gt;
##### | 메시지 배송을 확실하게 실시하는 것은 어렵다.</code></pre><ul>
<li>at most once : 메세지는 한 번만 전송된다. 
그러나,도중에 전송에 실패해서 사라질 가능성 있다. 
=&gt;이 결손을 피하고자 &#39;재전송&#39;이 이루어진다.<blockquote>
</blockquote>
</li>
<li>exactly once : 메세지는 손실되거나 중복 없이 한번만 전달<blockquote>
</blockquote>
</li>
<li>at least once : 메세지는 확실하게 전달된다.
단, 같은 것이 여러 번 전달될 가능성이 있다.
=&gt; 중복 제거는 이용자에게 맡기고 있다.<pre><code>##### | 중복 제거는 높은 비용의 오퍼레이션</code></pre></li>
<li>오프셋을 이용한 중복 제거 
=&gt;각 메세지에 시작위치(오프셋)을 붙인다.
=&gt;중복되어도 덮어쓰일 뿐으로,문제가 되지 않는다. 
=&gt;벌크 형의 데이터 전송과 같이 데이터양이 고정된 경우 잘 작동<blockquote>
</blockquote>
</li>
<li>고유 ID에 의한 중복 제거 
=&gt;현실적으로 최근에 받은 ID만 기억해두고,늦게 온 
메시지의 중복은 허용한다. <blockquote>
</blockquote>
</li>
<li>종단간 (END TO END)의 신뢰성
=&gt;클라이언트가 생성한 메시지를 분산 스토리지에 기록하는 
단계에서 중복 없는 상태로 해야 한다. <blockquote>
</blockquote>
</li>
<li>고유 ID를 사용한 중복 제거의 방법</li>
</ul>
<p>1.NoSQL 데이터 베이스를 사용하는 것 
=&gt;고유 ID를 지정하게 되어 있어 동일한 ID는 덮어쓴다. 
2.SQL로 중복을 제거하는 것 </p>
<pre><code>##### | 데이터 수집의 파이프 라인 </code></pre><p>클라이언트 =&gt;프런트 엔드 =&gt; 메시지 브로커 =&gt;소비자
=&gt;분산 스토리지=&gt;중복 제거 =&gt;데이터 구조화 </p>
<pre><code>&gt;
#### 4-3.시계열 데이터의 최적화
- 프로세스 시간
서버가 처리하는 시간
- 이벤트 시간
클라이언트 상에서 메시지가 생성된 시간
&gt;
##### | 시계열 인덱스
시계열 인덱스를 사용하면, 
특정 시간에 맞춘 데이터 집계를 빠르게 실행 할 수 있다. &gt;
##### | 조건절 푸쉬다운
이벤트 시간으로 데이터를 정렬한 후에,열 지향 스토리지로 변환하도록 한다.
=&gt; 이 통계를 이용하여 최소한 데이터만을 읽도록 하는
최적화를 &#39;조건절 푸시 다운&#39;이라고 한다. 
&gt;
##### | 데이터 마트를 이벤트 시간으로 정렬하기 </code></pre><p>데이터 수집 단계에서는 이벤트 시간을 따지지 않고
프로세스 시간만을 사용하여 데이터를 저장</p>
<blockquote>
</blockquote>
<p>데이터 마트를 만드는 단계에서 이벤트 시간에 의한 정렬을
함께 하도록 한다. </p>
<pre><code>


</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[빅데이터를 지탱하는 기술]3.빅데이터의 분산 처리  ]]></title>
            <link>https://velog.io/@sooyeon_/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A7%80%ED%83%B1%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A03.%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EB%B6%84%EC%82%B0-%EC%B2%98%EB%A6%AC</link>
            <guid>https://velog.io/@sooyeon_/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A7%80%ED%83%B1%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A03.%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EB%B6%84%EC%82%B0-%EC%B2%98%EB%A6%AC</guid>
            <pubDate>Tue, 01 Oct 2024 10:55:25 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h4 id="빅데이터를-지탱하는-기술을-읽고-3빅데이터의-분산-처리">[빅데이터를 지탱하는 기술]을 읽고-3.빅데이터의 분산 처리</h4>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/7b785ead-8956-4ae9-b178-74ca385e186d/image.png" alt=""></h1>
<hr>
<blockquote>
<h3 id="3빅데이터의-분산-처리">3.빅데이터의 분산 처리</h3>
</blockquote>
<h4 id="3-1대규모-분산-처리의-프레임워크">3-1.대규모 분산 처리의 프레임워크</h4>
<blockquote>
</blockquote>
<h5 id="-구조화-데이터와-비구조화-데이터">| 구조화 데이터와 비구조화 데이터</h5>
<ul>
<li>구조화된 데이터 : 스키마가 명확히 정의된 데이터
ex)기존의 데이터웨어하우스의 데이터 </li>
<li>비구조화된 데이터 : 스키마가 없는 데이터
ex) 텍스트 데이터,이미지 및 동영상등의 미디어 데이터 <pre><code>데이터레이크 
비구조화 데이터를 분산 스토리지등에 저장하고
그것을 분산 시스템에서 처리하는것이 데이터레이크의 개념이다.</code></pre></li>
<li>스키마리스 데이터 : 기본 서식은 있지만,스키마가 정의 안됨 <blockquote>
</blockquote>
<pre><code>CSV,JSON,XML등의 데이터는 서식은 정해져 있지만, 
칼럼 수나 데이터형은 명확하지 않아 
&#39;스키마리스 데이터&#39;라고 불림</code></pre><blockquote>
</blockquote>
</li>
<li>데이터 구조화의 파이프라인 : 테이블형식으로 열 지향 
```
스토리지에 장기 보존 </li>
</ul>
<p>1.분산 스토리지의 데이터의 스키마를 명확하게 한 
테이블 형식의 &#39;구조화 데이터&#39;로 변환한다. 
(분산 스토리지에 수집된 데이터는 명확한 스키마를 
갖지 않은 것도 많으므로,그대로 SQL로 집계할 수 없다.) </p>
<blockquote>
</blockquote>
<p>2.구조화 데이터는 열 지향 스토리지로 저장한다.
(데이터의 압출율을 높이기 위해)
ex)MPP데이터베이스로 전송하거나 
Hadoop상에 열 지향 스토리지에 보관 </p>
<blockquote>
</blockquote>
<p>팩트테이블: 구조화된 데이터 중 시간에 따라 증가하는 데이터
그에 따른  부속 데이터를 디멘젼 테이블로 취급</p>
<pre><code>&gt;
- 열 지향 스토리지 작성 :분산 스토리지 상에 작성해 효율적으로 데이터를 집계 
***
##### | Hadoop-분산 데이터 처리의 공통 플랫폼
- Hadoop은 단일 소프트웨어가 아니라 분산 시스템을 구성하는 다수의 소프트웨어로 이루어진 집합체다. 
&gt;
##### 분산 시스템의 구성 요소 HDFS,YARN,MapReduce
- Hadoop의 기본 구성 요소
1.HDFS (분산 파일 시스템)
2.YARN (리소스 관리자)
3.MapReduce (분산 데이터 처리의 기반) 
&gt;
##### 분산 파일 시스템과 리소스 관리자 HDFS,YARN</code></pre><p>HDFS:
Hadoop에서 처리되는 데이터 대부분은 HDFS에 저장된다. 
=&gt;네트워크에 연결된 파일 서버와 같은 존재지만, 
다수의 컴퓨터에 파일을 복사하여 중복성을 높인다는 특징이 있다. </p>
<blockquote>
</blockquote>
<p>YARN:
CPU나 메모리 등의 계산 리소스는 YARN에 의해 관리된다. 
=&gt;애플리케이션이 사용하는 CPU코어와 메모리를 
&#39;컨테이너&#39; 단위로 관리한다. 
=&gt;클러스터 전체의 부하를 보고 
비어 있는 호스트부터 컨테이너를 할당한다. 
=&gt;실행의 우선순위를 결정할 수 있다. </p>
<pre><code>&gt;
##### 분산 데이터 처리 및 쿼리 엔진 MapReduce,Hive
- MapReduce
분산 시스템에서 데이터 처리를 실행하는 데 사용된다. 
(임의의 자바 프로그램을 실행시킬 수 있기 때문에, 비구조화 데이터를 가공하는데 적합) 
&gt;
- Hive 
쿼리 엔진 중 하나이며,쿼리를 자동으로 MapReduce 프로그램으로 변환하는 소프트웨어 
&gt;
##### =&gt; MapReduce와 Hive 모두 대량의 데이터 처리 및 시간이 걸리는 배치 처리에는 적합하나,애드 혹 쿼리에는 부적합하다. 
&gt;
&gt;
- Hive on Tez
Hive를 가속화하기 위한 노력의 하나로 개발된것이
`Apach Tez`다. 
&gt;</code></pre><p>기존에 MapReduce 프로그램에서는 1회의 스테이지가 
끝날 때까지 다음의 처리를 진행 할 수 없었다. 
=&gt; Tez에서는 종료를 기다리지 않고 
처리가 끝난 데이터를 차례대로 전달함으로써 
쿼리 전체 실행 </p>
<pre><code>&gt;
##### 요약 </code></pre><p>HDFS:분산 시스템의 스토리지를 관리하여 데이터가 
항상 여러 컴퓨터에 복사되도록 한다. </p>
<blockquote>
</blockquote>
<p>YARN:CPU와 메모리를 관리하고 리소스에 여유가 있는 
컴퓨터에서 프로그램을 실행한다.</p>
<blockquote>
</blockquote>
<p>MapReduce:데이터 처리의 스테이지가 바뀔 때 
대기시간이 있어서 복잡한 쿼리에서는 대기 시간만 증가함</p>
<blockquote>
</blockquote>
<p>Tez:불필요한 단계가 감소하여 처리가 짧아짐과 동시에,
스테이지 사이의 대기 시간이 없어 처리 전체가 동시에 실행되며
실행 시간이 단축됨</p>
<blockquote>
</blockquote>
<p>Spark:중간 데이터를 디스크에 쓰지 않고 메모리에 보존한다.
따라서 프로그램 실행 중 많은 메모리가 필요하지만, 
실행 시간은 단축된다. 
장애 등으로 중간 데이터를 잃어버려도, 입력 데이터로
다시 실행한다. </p>
<pre><code>&gt;
##### 대화형 쿼리 엔진 Impala와 Presto
&gt;</code></pre><p>Presto와 Impala와는 YARN과 같은 리소스 관리자를
사용하지 않고,SQL의 실행만 특화한 독자적인 
분산 처리를 구현하고 있다. 
=&gt;가능한 한 많은 데이터의 처리를 병력화함으로써 
고속화를 실현한다. </p>
<pre><code>&gt;
&gt;
#### | Spark 인 메모리 형의 고속 데이터 처리 
- Spark의 특징 
1.대량의 메모리를 활용하여,고속화 실현 
2.&#39;가능한 많은 데이터를 메모리상에 올린 상태로 두어,
디스크에는 아무것도 기록하지 않는다&#39;는 것이 현실화됨
&gt;
&gt;
- MapReduce 대체하기  
1.Spark는 Hadoop을 대체하는 것이 아니라 MapReduce를 대체하는 존재다. 
2.Spark의 실행은 자바 런타임이 필요하지만, 
데이터 처리는 스크립트 언어를 사용할 수도 있다. 
3.대규모 배치 처리뿐만 마니라, SQL에 의한 대화형 쿼리 실행과 실시간 스트림 처리에 모두 사용됨 
&gt;
#### 3-2.쿼리 엔진 
&gt;
##### | 데이터 마트 구축의 파이프라인 
&gt;</code></pre><p>1.분산 스토리지에 저장된 데이터 구조화,
열 지향 스토리지 형식으로 저장 
(다수의 텍스트 파일을 읽어 가공하는 부하가 큰 처리가 되므로, 
Hive 이용) </p>
<blockquote>
</blockquote>
<p>2.완성한 구조화 데이터를 결합,집계하고 
비정규화 테이블로 데이터 마트에 써서 보냄
(열 지향 스토리지를 이용한 쿼리의 실행에는 Pesto를
사용함으로서,실행 시간 단축) </p>
<blockquote>
</blockquote>
<p>3.Hive에서 만든 각 테이블의 정보는 &#39;Hive 메타 스토어&#39;라고 
불리는 특별한 데이터베이스에 저장된다. 
(다른 쿼리엔진에서도 공통의 테이블 정보로 참고된다) </p>
<blockquote>
</blockquote>
<pre><code>&gt;
##### | Hive에 의한 구조화 데이터 작성
&gt;</code></pre><p>Hive의 쿼리를 개선하는 방법 </p>
<blockquote>
</blockquote>
<p>1.서브 쿼리 안에서 레코드 수 줄이기
=&gt; 서브 쿼리 안에서 팩트 테이블을 작게 하는 것이 더 효율적! 
2.데이터의 편차를 최대한 없애고,
모든 데이터가 균등하게 분산되도록 하기 </p>
<blockquote>
</blockquote>
<pre><code>&gt;
##### | 대화형 쿼리 엔진 Presto의 구조 
&gt;</code></pre><p>Presto의 특징 
1.플러그인 가능한 스토리지 설계
2.다수의 컴퓨터에서 실행되는 분산 시스템 
3.하나의 코디네이터와 여러 워커로 구성된다. 
(코디네이터 : 쿼리를 분석하고,실행 계획을 수립
워커:처리를 분해) 
4.Hive에 등록된 테이블을 가져올 수 있다. 
=&gt;Hive에서 만든 구조화 데이터를 좀 더 집계하는 등의 목적에 적합 
5.ORC 형식 로드에 최적화됨</p>
<blockquote>
</blockquote>
<pre><code>&gt;
##### CPU 처리의 최적화 - 읽기와 코드 실행 병렬 처리 
Presto는 쿼리를 분석하여 최적의 실행 계획을 생성 
=&gt; 자바의 바이트 코드로 변환 
=&gt;바이트 코드는 Pesto의 워커 노드에 배포됨 
=&gt; 런타임 시스템에 의해 기계 코드로 컴파일된다.
&gt;
##### 인 메모리 처리에 의한 고속화
(쿼리 실행에는 가급적 대화형 쿼리 엔진 사용) 
Presto는 쿼리의 실행 과정에서 디스크에 쓰기를 하지 않는다. 
=&gt;모든 데이터 처리를 메모리상에서 실시하고 
메모리가 부족하면 기다리거나 오류로 실패한다. 
&gt;
##### 분산 결합과 브로드캐스트 결합 
Presto는 기본적으로 `분산 결합`을 실시한다. </code></pre><p>분산 결합에서는 노드 간의 데이터 전송을 위한 
네트워크 통신이 발생하기 때문에 종종 쿼리의 지연을 초래 </p>
<blockquote>
</blockquote>
<p>한쪽 테이블이 충분히 작은 경우에는 &#39;브로드캐스트 결합&#39;사용
=&gt;처리 속도를 크게 고속화 할 수 있다. 
(결합하는 테이블의 모든 데이터가 각 노드에 복사된다. </p>
<blockquote>
</blockquote>
<p>Presto에서 브로드캐스트 결합을 유효로 하려면 
분산 결합을 명시적으로 무효화해야 한다. 
또한 쿼리 안의 SELECT문으로 먼저 팩트 테이블을 지정하여, 
그것에 디멘전 테이블을 결합해야 한다. </p>
<pre><code>&gt;
##### | 데이터 분석의 프레임워크 선택하기 </code></pre><p>MPP데이터베이스
(완성한 비정규화 테이블의 고속 집계에 적합하다.)</p>
<blockquote>
</blockquote>
<p>Hive 
(데이터양에 좌우되지 않는 쿼리 엔진) 
=&gt;텍스트 데이터를 가공하거나 열 지향 스토리지를 만드는 등
무거운 처리는 Hive에서 실행하는것이 적합하다. </p>
<blockquote>
</blockquote>
<p>Presto 
(속도 중시 &amp; 대화식으로 특화된 쿼리 엔진 ) 
=&gt;대화식 쿼리의 실행에 특화되어,텍스트 처리가 중심이고 ETL프로세스 및 데이터 구조화에는 적합하지 않다.</p>
<blockquote>
</blockquote>
<p>Spark
(분산 시스템을 사용한 프로그래밍 환경) 
Spark의 장점은 ETL프로세스에서 SQL까지 일련의 흐름을 하나의 
데이터 파이프라인으로 기술할 수 있다는 점이다.</p>
<blockquote>
</blockquote>
<pre><code>#### 3-3.데이터 마트의 구축 
&gt;
##### | 팩트 테이블 -시계열 데이터 축적하기 
- 팩트 테이블 작성 방법 
1.추가
새로 도착한 데이터만을 증분으로 추가
2.치환
과거의 데이터를 포함하여 테이블 전체를 치환한다. 
&gt;
##### 테이블 파티셔닝 - 물리적인 파티션으로 분할
&gt;
- 테이블 파티셔닝 
하나의 테이블을 여러 물리적인 파티션으로 나눔으로써 파티션 단위로 정리하여 데이터를 쓰거나 삭제할 수 있도록 쓰는 것이다. 
&gt;
- 데이터 마트의 치환 
&gt;
##### | 집계 테이블 - 레코드 수 줄이기 
&gt;
&gt;- 카디널리티 
각 칼럼이 취하는 값의 범위 
&gt;
##### | 스냅샷 테이블 -마스터의 상태를 기록하기 
- 마스터 데이터처럼 업데이트될 가능성이 있는 테이블
1.스냅샷 테이블 
정기적으로 테이블을 통째로 저장하는 방법 
2.이력 테이블 
변경 내용만을 저장하는 방법 

</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[빅데이터를 지탱하는 기술]2.빅데이터의 탐색 ]]></title>
            <link>https://velog.io/@sooyeon_/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A7%80%ED%83%B1%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A02.%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%ED%83%90%EC%83%89</link>
            <guid>https://velog.io/@sooyeon_/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A7%80%ED%83%B1%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A02.%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%ED%83%90%EC%83%89</guid>
            <pubDate>Sat, 21 Sep 2024 10:01:06 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h4 id="빅데이터를-지탱하는-기술을-읽고--2빅데이터의-탐색">[빅데이터를 지탱하는 기술]을 읽고- 2.빅데이터의 탐색</h4>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/7b785ead-8956-4ae9-b178-74ca385e186d/image.png" alt=""></h1>
<hr>
<blockquote>
<h3 id="2빅데이터의-탐색">2.빅데이터의 탐색</h3>
</blockquote>
<h4 id="2-1크로스-집계의-기본">2-1.크로스 집계의 기본</h4>
<ul>
<li>크로스 테이블 
행과 열이 교차하는 부분에 숫자 데이터가 들어간다.</li>
<li>트랜잭션 테이블 
행 방향으로만 증가하고,열 방향으로는 데이터를 증가시키지 않도록 해야 한다. 
=&gt; 트랜잭션 테이블에서 크로스 테이블로 변환하는 과정을 
<code>크로스 집계</code>라고 한다. </li>
</ul>
<hr>
<h4 id="2-2-열지향-스토리지에-의한-고속화">2-2. 열지향 스토리지에 의한 고속화</h4>
<blockquote>
</blockquote>
<h4 id="-데이터베이스의-지연을-줄이기">| 데이터베이스의 지연을 줄이기</h4>
<h5 id="3계층의-데이터-집계-시스템">3계층의 데이터 집계 시스템</h5>
<p><img src="https://velog.velcdn.com/images/sooyeon_/post/4f71dd43-f629-4080-af24-e736ff9acd4a/image.png" alt=""></p>
<pre><code>원 데이터는 용량적인 제약이 적어서 대량의 데이터를
처리할 수 있는 &#39;데이터 레이크&#39;와 &#39;데이터 웨어하우스&#39;에 저장
=&gt; 원하는 데이터를 추출하여 데이터 마트를 구축하고 
여기에서는 항상 초단위의 응답을 얻을 수 있도록 한다. </code></pre><blockquote>
</blockquote>
<h4 id="데이터-처리의-지연">데이터 처리의 지연</h4>
<h5 id="지연이-적은-데이터-마트-작성을-위한-기초-지식">지연이 적은 데이터 마트 작성을 위한 기초 지식</h5>
<blockquote>
</blockquote>
<pre><code>- 데이터 마트를 만들 때는 가급적 지연이 적은 
데이터베이스가 있어야 한다. 
&gt;
- 가장 간단한 방법은 모든 데이터를 메모리에 올리는 것 
ex)MySQL이나 PostgreSQL등의 일반적인 RDB가 적합
&gt;
- RDB는 원래 지연이 적고,많은 클라이언트가 동시 접속해도 
성능이 나빠지지 않으므로,데이터 마트로 특히 우수하다.
반면,메모리가 부족하면 급격히 성능이 저하된다.</code></pre><blockquote>
</blockquote>
<h4 id="압축과-분산에-의한-지연-줄이기---mpp-기술">&#39;압축&#39;과 &#39;분산&#39;에 의한 지연 줄이기 - MPP 기술</h4>
<blockquote>
</blockquote>
<ul>
<li>데이터를 가능한 한 작게 압축하고 그것을 여러 디스크에 분산함으로써,데이터의 로드에 따른 지연을 줄인다. <blockquote>
</blockquote>
</li>
<li>분산된 데이터를 읽어 들이려면 멀티 코어를 활용하면서 
디스크 I/O를 병렬 처리하는 것이 효과적이다. 
=&gt; 이러한 아키텍쳐는 <code>MPP(대규모 병렬 처리)</code>
=&gt; 대량 데이터 분석을 위해 데이터베이스에서 널리 사용
ex) Amazone Redshift 및 Google Bigquery등<blockquote>
</blockquote>
</li>
<li>MPP의 특징 </li>
</ul>
<p>1.데이터의 집계에 최적화 되어 있다. 
2.데이터 웨어하우스와 데이터 분석용의 데이터베이스에서 특히 많이 사용</p>
<hr>
<h4 id="-열-지향-데이터베이스-접근">| 열 지향 데이터베이스 접근</h4>
<ul>
<li><p>데이터 압축을 고려한 후  <code>열 지향</code> 개념을 알아야 한다.</p>
<blockquote>
</blockquote>
</li>
<li><p>일반 데이터베이스는 레코드 단위의 읽고 쓰기에 최적화됨
=&gt; 이를 <code>행 지향 데이터베이스</code>라고 부른다. 
ex)Oracle Database MySQL과 같은 일반적인 RDB</p>
<blockquote>
</blockquote>
</li>
<li><p>데이터 분석에 사용되는 데이터베이스는 
칼럼 단위의 집계에 최적화되어 있으며, 
이를 <code>열 지향 데이터베이스</code>또는 
<code>칼럼 지향 데이터베이스</code>라고 한다. 
ex) Teradata와 Amazone Redshift등</p>
<blockquote>
</blockquote>
<h4 id="행-지향-데이터-베이스">행 지향 데이터 베이스</h4>
</li>
<li><p>테이블의 각 행을 하나의 덩어리로 디스크에 저장한다. </p>
</li>
<li><p>새 레코드를 추가 할때 빠르게 추가 할 수 있다. </p>
</li>
<li><p>매일 발생하는 대량의 트랜잭션을 지연 없이 처리하기 위해 데이터 추가를 효율적으로 할 수 있도록 하는 것이 특징 </p>
</li>
<li><p>행 지향 데이터베이스에서는 데이터 검색을 고속화하기 위해 <code>인덱스</code>를 만든다.</p>
<blockquote>
</blockquote>
</li>
</ul>
<h4 id="열-지향-데이터-베이스">열 지향 데이터 베이스</h4>
<ul>
<li>데이터 분석에서는 종종 일부 칼럼만이 집계 대상이 된다. <pre><code>행 지향 데이터베이스에서는 레코드 단위로 
데이터가 저장되어 있으므로,
필요 없는 열까지 디스크로부터 로드된다.</code></pre>=&gt; 필요한 컬럼만을 로드하여 디스크 I/O를 줄인다. <blockquote>
</blockquote>
</li>
<li>데이터의 압축 효율도 우수하다. 
특히,같은 문자열의 반복은 매우 작게 압축할 수 있다. <blockquote>
</blockquote>
<h4 id="mpp-데이터베이스의-접근-방식">MPP 데이터베이스의 접근 방식</h4>
aㅋㅁㅇㄹㄴㅇㄹaaa- 쿼리 지연을 줄일 방법은 <code>MPP아키텍쳐</code>에 의한 
데이터 처리의 병렬화다. 
```</li>
</ul>
<p>1.행 지향 데이터베이스
보통 하나의 쿼리는 하나의 스레드에서 실행
=&gt;많은 쿼리를 동시에 실행함으로써 
여러개의 cpu코어를 활용할 수 있지만,
개별 쿼리가 분산 처리되는 것은 아니다. </p>
<blockquote>
</blockquote>
<p>2.열 지향 데이터베이스
대량의 데이터를 읽기 때문에 1번의 쿼리 실행 시간이 길어진다. 
=&gt;압축된 데이터의 전개 등으로 CPU리소스를 필요로 하므로, 
멀티 코어를 활용하여 고속화하는 것이 좋다. </p>
<blockquote>
</blockquote>
<p>3.MPP에서는 하나의 쿼리를 다수의 작은 테스크로 분해하고, 
이를 가능한 한 병렬로 실행한다. </p>
<pre><code>&gt;
#### MPP 데이터베이스와 대화형 쿼리 엔진 
- MPP를 사용한 데이터의 집계는 CPU코어 수에 비례하여 고속화된다. 
단, 디스크로부터의 로드가 병목 현상이 발생하지 않도록 
데이터가 고르게 분산되어 있어야 한다. 
&gt;
&gt;
- MPP는 고속화를 위해 CPU와 디스크 모두를 균형 있게 늘려야 한다. 
=&gt; 일부 제품은 하드웨어와 소프트웨어가 통합된 제품으로 제공된다. 
&gt;
=&gt; 따라서, 하드웨어 수준에서 데이터 집계에 최적화된 데이터베이스를 `MPP 데이터베이스` 라고 한다.
&gt;
#### 2-4.데이터 마트의 기본 구조 
&gt;
#### | 시각화에 적합한 데이터 마트 만들기-OLAP
&gt;
#### 다차원 모델과 OLAP 큐브 
- OLAP
1.데이터 집계를 효율화하는 접근 방법 중의 하나. 
2.`다차원 모델`의 데이터 구조를 `MDX`등의 쿼리 언어로 집계
=&gt; 데이터 분석을 위해 만들어진 다차원 데이터를 
`OLAP 큐브`라고 부르며,
그것을 크로스 집계하는 구조가 `OLAP`이다. 
&gt;
#### | 테이블을 비정규화하기 
데이터베이스의 설계에서는 종종 테이블을 
`마스터`와 `트랜잭션`으로 구분한다. 
- 트랜잭션 
시간과 함께 생성되는 데이터를 기록한 것
- 마스터
트랜잭션에서 참고되는 각종 정보 
&gt;
=&gt; 트랜잭션은 한번 기록하면 변화하지 않지만,
마스터는 상황에 따라 다시 쓰인다. 
&gt;
#### 팩트 테이블과 디멘전 테이블 
- 팩트 테이블 
데이터 웨어하우스의 세계에서는 
트랜잭션처럼 사실이 기록된 것 
&gt;
- 디멘전 테이블 
팩트 테이블에서 참고되는 마스터 데이터등 
&gt;
=&gt; 숫자 데이터등은 `팩트 테이블`에 기록 
`디멘젼 테이블`은 데이터를 분류하기 위한 속성값으로 사용 
&gt;
&gt;
#### 스타 스키마와 비정규화 
##### 팩트 테이블을 중심으로 여러 디멘전 테이블을 결합 
![](https://velog.velcdn.com/images/sooyeon_/post/4be9d6db-6587-4ef1-be3e-8d3781766f60/image.png)
=</code></pre><p>데이터 마트를 만들때는 팩트 테이블을 중심으로
여러 디멘전 테이블을 결합하는 것이 좋다. 
=&gt; 이를 &#39;스타 스키마&#39;라고 부른다. </p>
<blockquote>
</blockquote>
<p>디멘전 테이블을 작성하려면 정규화에 의해 분해된 테이블을
최대한 결합하여 하나의 테이블로 정리한다. 
=&gt; 그 결과로 데이터가 중복되어도 괜찮다. 
=&gt; 이를 &#39;비정규화&#39;라고 한다. </p>
<blockquote>
</blockquote>
<pre><code>- 데이터 마트에서 `스타 스키마`가 사용되는 이유 
1.단순하므로 이해가 쉽고,데이터 분석을 쉽게 할 수 있다. 
2.성능상의 이유이다. </code></pre><p>팩트 테이블을 될 수 있는 한 작게 하는 것이 
고속화에 있어 중요하며,
팩트 테이블에는 ID와 같은 키만을 남겨두고 
나머지는 디멘전 테이블로 옮긴다. </p>
<pre><code>&gt;
&gt;
#### 비정규화 테이블 -데이터 마트에는 정규화는 필요 없다. 
&gt;
- 스타 스키마에서 좀 더 비정규화를 진행해 모든 테이블을 결합한 팩트 테이블을 `비정규화 테이블`이라고 부른다. 
=&gt; 데이터 마트는 비정규화 테이블로 하는 것이 가장 단순하고,효율적인 방법이다. 
&gt;
&gt;
#### | 다차원 모델 시각화에 대비하여 테이블을 추상화하기 
비정규화 테이블을 준비했다면 그것을 `다차원 모델`에 의해 추상화한다. 
- 다차원 모델 
1.&#39;디멘전&#39;과 &#39;측정값&#39;으로 분류한다. 
2.숫자 데이터와 그 집계 방법을 정의하는 것 =&gt; `측정값`
3.크로스 집계에 있어서 행과 열을 이용하는 것 =&gt; `디멘전` 
***</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[빅데이터를 지탱하는 기술] 
1.빅데이터의 기초 지식 ]]></title>
            <link>https://velog.io/@sooyeon_/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A7%80%ED%83%B1%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A0-1.%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%A7%80%EC%8B%9D</link>
            <guid>https://velog.io/@sooyeon_/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A7%80%ED%83%B1%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A0-1.%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%A7%80%EC%8B%9D</guid>
            <pubDate>Sat, 21 Sep 2024 08:40:42 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h4 id="빅데이터를-지탱하는-기술을-읽고--1빅데이터의-기초-지식">[빅데이터를 지탱하는 기술]을 읽고- 1.빅데이터의 기초 지식</h4>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/7b785ead-8956-4ae9-b178-74ca385e186d/image.png" alt=""></h1>
<hr>
<blockquote>
<h3 id="1빅데이터의-기초-지식">1.빅데이터의 기초 지식</h3>
</blockquote>
<h4 id="1-1배경-빅데이터의-정착">1-1.[배경] 빅데이터의 정착</h4>
<blockquote>
</blockquote>
<h4 id="-분산-시스템에-의한-데이터-처리의-고속화">| 분산 시스템에 의한 데이터 처리의 고속화</h4>
<h5 id="-빅데이터의-취급하기-어려운-점을-극복한-두가지-대표-기술">-빅데이터의 취급하기 어려운 점을 극복한 두가지 대표 기술</h5>
<blockquote>
</blockquote>
<h4 id="빅데이터-기술의-요구----hadoop과-nosql의-대두">빅데이터 기술의 요구 -  Hadoop과 NoSQL의 대두</h4>
<blockquote>
</blockquote>
<ul>
<li>Hadoop</li>
</ul>
<p>1.다수의 컴퓨터에서 대량의 데이터 처리
2.모여진 데이터를 나중에 집계하는 것이 목적 </p>
<ul>
<li>NoSQL 데이터베이스
1.빈번한 읽기/쓰기 및 분산 처리가 강점 </li>
</ul>
<p>2.전통적인 RDB의 제약을 제거하는 것을 목표로 한 
데이터베이스의 총칭
3.RDB보다 고속의 읽기,쓰기가 가능,분산 처리에 뛰어남
4.어플리케이션에서 온라인으로 접속하는 데이터베이스</p>
<pre><code>NoSQL 데이터베이스에는 다양한 종류가 있음 
1.다수의 키와 값을 관련지어 저장하는 &#39;키 밸류 스토어&#39;
2.JSON과 같은 복잡한 데이터 구조를 저장하는 &#39;도큐멘트 스토어&#39;
3.여러 키를 사용하여 높은 확장성을 제어하는 &#39;와이어드 칼럼 스토어&#39;등이 있다. </code></pre><blockquote>
</blockquote>
<h4 id="hadoop과-nosql-데이터베이스의-조합">Hadoop과 NoSQL 데이터베이스의 조합</h4>
<p>=&gt; NoSQL 데이터베이스에 기록하고 
Hadoop으로 분산 처리하기&#39;라는 흐름이 정착</p>
<blockquote>
<hr>
</blockquote>
<h4 id="1-2빅데이터-시대의-데이터-분석-기반">1-2.빅데이터 시대의 데이터 분석 기반</h4>
<blockquote>
</blockquote>
<h4 id="데이터-파이프라인---데이터-수집에서-워크플로-관리까지">데이터 파이프라인 - 데이터 수집에서 워크플로 관리까지</h4>
<ul>
<li>일반적으로 차례대로 전달해나가는 데이터로 구성된 시스템 
=&gt; 데이터 파이프라인은 어디에서 데이터를 수집하여 무엇을 실현하고 싶은지에 따라 변화한다. <blockquote>
</blockquote>
<h4 id="데이터-수집---벌크형과-스트리밍-형의-데이터-전송">데이터 수집 - 벌크형과 스트리밍 형의 데이터 전송</h4>
<h5 id="데이터-파이프라인은-데이터를-모으는-부분부터-시작한다">데이터 파이프라인은 데이터를 모으는 부분부터 시작한다.</h5>
```
데이터 전송의 방법은 크게 다음의 두가지가 있다. </li>
<li>벌크형
이미 어딘가에 존재하는 데이터를 정리해 추출하는 방법
정기적으로 데이터를 수집하는 데에 사용한다.</li>
<li>스트리밍형 
차례차례로 생성되는 데이터를 끊임없이 계속해서 보내는 방법 
모바일어플리케이션과 임베디드 장비 등에서 널리 데이터를 수집하는데 사용된다. 
```<blockquote>
</blockquote>
<h4 id="스트림-처리와-배치-처리">스트림 처리와 배치 처리</h4>
</li>
<li>스트림 처리 
데이터를 실시간으로 처리하는 방법 
단, 장기적인 데이터 분석에는 적합하지 않다. </li>
<li>배치 처리
대량의 데이터를 처리하는데 적합한 방법<blockquote>
</blockquote>
<h4 id="분산-스토리지---객체-스토리지nosql-데이터-베이스">분산 스토리지 - 객체 스토리지,NoSQL 데이터 베이스</h4>
데이터를 저장하는 방법의 대표적인 것이 &#39;객체 스토리지&#39;
=&gt; 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장한다. <blockquote>
</blockquote>
<h4 id="분산-데이터-처리---쿼리-엔진etl-프로세스">분산 데이터 처리 - 쿼리 엔진,ETL 프로세스</h4>
</li>
<li>분산 스토리지에 저장된 데이터를 처리하는 데는
<code>분산 데이터 처리</code>의 프레임워크가 필요하다.</li>
<li>분산 데이터 처리의 역할
분석하기 쉽도록 데이터를 가공해서 
그 결과를 외부 데이터베이스에 저장하는 것이다. 
```
빅데이터를 SQL로 집계할 때는 두가지 방법이 있다. </li>
</ul>
<p>1.분산 스토리지 상의 데이터를 SQL로 집계하기 위해
&#39;쿼리 엔진&#39;을 도입하는 것 
ex) HIVE ,대화형 쿼리 엔진 
2.외부의 데이터 웨어하우스 제품을 이용하는 것 
=&gt;분산스토리지에서 추출한 데이터를 데이터 웨어하우스에 적합한
형식으로 변환한다.이 절차를 ETL프로세스라고 한다. 
즉, 데이터를 추출,가공,로드하는 의미 </p>
<pre><code>&gt;
#### 워크플로 관리 
전체 데이터 파이프라인의 동작을 관리하기 위해서 
`워크플로 관리` 기술을 사용한다. 
=&gt;매일 정해진 시간에 배치 처리를 스케줄대로 실행하고, 
오류가 발생한 경우에는 관리자에게 통지하는 목적으로 사용</code></pre><p>ETL프로세스
1.데이터베이스 바깥에서 데이터를 가공하는 경우(ETL)
2.데이터를 읽어들인 후에 가공하는 경우(ELT)</p>
<pre><code>&gt;
#### | 데이터 웨어하우스와 데이터 마트 - 데이터 파이프라인 기본형 
&gt;
![](https://velog.velcdn.com/images/sooyeon_/post/e8d7c0ff-ef1e-435c-af95-c0404c5d804f/image.png)
&gt;</code></pre><p>데이터 웨어하우스 
일반적인 RDB와는 달리 &#39;대량의 데이터를 장기 보존하는것&#39;에 
최적화되어 있다. 
=&gt; 정리된 데이터를 한 번에 전송하는 것은 뛰어나지만, 
소량의 데이터를 자주 쓰고 읽는 데는 적합 하지 않다. </p>
<blockquote>
</blockquote>
<p>ETL 프로세스 
데이터 소스에 보존된 로우 데이터를 추출하고 필요에 따라 
가공한 후, 데이터 웨어하우스에 저장하기 까지의 흐름</p>
<blockquote>
</blockquote>
<p>데이터 마트 
데이터 웨어하우스에서 필요한 데이터만을 추출하여 구축한다. 
BI도구와 조합시키는 형태로 데이터를 시각화하는데에도 사용된다.</p>
<pre><code>&gt;
&gt; #### | 데이터 레이크 - 데이터를 그대로 축적 
- 데이터의 축적 장소를 `데이터 레이크`라고 한다. 
=&gt; 임의의 데이터를 저장할 수 있는 분산 스토리지가 데이터 레이크로 이용된다. 
- 대부분 `csv`나 `json`등의 범용적인 텍스트 형식
- `데이터 웨어하우스`를 `데이터 레이크`로 치환하면,
`데이터 파이프라인`을 구축할 수 있다. 
(미가공의 원시 데이터를 그대로 저장소에 저장한다)
=&gt;데이터 레이크에서는 모든 데이터를 그대로 저장하고, 나중에 필요한 것만을 꺼내서 사용한다. 
&gt;
&gt;
#### 데이터 레이크와 데이터 마트 
##### - 필요한 데이터는 데이터 마트에 정리 
- 데이터 레이크는 단순한 스토리지이며, 
그것만으로는 데이터를 가공할 수 없다. 
=&gt; 그래서 사용되는 것이 
`MapReduce등의 분산 데이터 처리 기술`이다. 
&gt;
&gt;
#### | 확증적 데이터 분석과 탐색적 데이터 분석 
- 확증적 데이터 분석 
가설을 세우고 그것을 검증하는 것 
=&gt; `통계학적 모델링에 의한 데이터 분석 `
- 탐색적 데이터 분석
데이터를 보면서 그 의미를 읽어내려고 하는 것 
=&gt;`데이터를 시각화하여 사람의 힘으로 그 의미를 읽는다.` 
***</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고- 불연속 회귀 설계 ]]></title>
            <link>https://velog.io/@sooyeon_/%EB%B6%88%EC%97%B0%EC%86%8D-%ED%9A%8C%EA%B7%80-%EC%84%A4%EA%BC%90</link>
            <guid>https://velog.io/@sooyeon_/%EB%B6%88%EC%97%B0%EC%86%8D-%ED%9A%8C%EA%B7%80-%EC%84%A4%EA%BC%90</guid>
            <pubDate>Tue, 02 Apr 2024 14:25:50 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>[데이터 분석과 비판적 사고]을 읽고 -불연속 회귀 설계</strong></p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> *<em>불연속 회귀 설계 *</em></p>
</blockquote>
<ul>
<li>실험 실행이 불가능한 경우에도 인과적 효과를 편향되지 않게 추정할 수 있는 특별한 상황이 있다. 
=&gt; 주목하는 조치가 알려진 문턱값에서 불연속적으로 변하는 경우</li>
<li>불연속 회귀 설계는 조치가 변하는 문턱값 근처에 있는 실험 대상의 국지적 평균 조치 효과를 추정한다. </li>
</ul>
<hr>
<blockquote>
</blockquote>
<ul>
<li>조치 할당: 온전히 어떤 제 3의 변수로 결정하며, 이를 <code>배정 변수</code>라고 부른다. <pre><code>ex)어떤 대상의 배정 변수가 어떤 문턱값보다 높으면 그 대상은 조치를 받고, 
배정 변수가 문턱값보다 낮으면 조치를 받지 않는다. </code></pre><blockquote>
</blockquote>
</li>
<li>문턱값에 이르러 조치가 있는 경우와 없는 경우의 결과 기댓값을 추정하게 된다. 
적어도 배정 변수가 정확히 문턱값에 오는 대상에게 있어서는 이 두 값의 차이가
<code>조치 효과의 적정 추정치</code>다. <pre><code>=&gt; 배정 변수의 값이 문턱값 양쪽에서 문턱값에 매우 가까운 대상들을 비교해서, 
이 추정치를 얻는다. 
ex) 949점과 950점을 비교해서 장학급 수혜 효과를 파악하는 방법의 근간이 되는 발상 </code></pre>=&gt; 그러나 이보다 좀 더 나은 방법도 있다. 
```</li>
<li>결과를 배정 변수에 두 번 회귀를 수행하는데,한 번은 문턱값 아래에 있는 미조치 대상으로,
또 한 번은 문턱값 위에 있는 조치 대상으로 수행한다. <blockquote>
</blockquote>
=&gt; 그런 다음 이 두 회귀결과로 문턱값에서 조치가 있을 때와 없을 때의 결과를 예측한다. <blockquote>
</blockquote>
=&gt; 이 예측으로 배정 변수가 문턱값을 넘는 순간에 <code>결과의 도약</code> 또는 <code>불연속성</code>을 추정할 수 있다. <blockquote>
</blockquote>
=&gt; 이 불연속성이 바로 문턱값에 있는 대상에 있어서 <code>조치의 인과적 효과 추정</code>이 된다.<br>=&gt; 이러한 전략을 <code>불연속 회귀 설계</code>라고 부른다. 
```<blockquote>
</blockquote>
</li>
<li>불연속 회귀의 추정 대상은 배정 변수가 정확히 문턱값에 오는 대상의 평균 조치 효과다. 
=&gt; 이 추정 대상을 <code>국지적 평균 조치 효과</code>로 본다. <pre><code>=&gt; 국지적 평균 조치 효과는 모집단의 전체 평균 조치 효과와 다를 여지가 있다. 
=&gt; 그러므로, 불연속 회귀 설계를 활용할 때는 추정한 수치가 정말로 원하는 대상인지 잘 생각해야 한다.</code></pre><blockquote>
</blockquote>
</li>
</ul>
<hr>
<blockquote>
<p>** 불연속 회귀 설계의 구현 방법 **
분석가가 불연속 회귀 설계를 구현하는 여러 방법이 있으며,각각 장단점이 있다. </p>
</blockquote>
<pre><code>1.단순 접근법 
문턱값 양쪽에 오는 배정 변수의 작은 구간에서 단순히 평균 결과를 비교하는 방법 
ex) 950점에서 954점 사이에 오는 지원자와 945점에서 949점 사이에 오는 지원자의 평균 소득을 비교하는 것
&gt;
장점: 단순하다
단점: 단순한만큼 편향된 추정치를 내놓는다고 봐도 좋다. 
=&gt; 배정 변수는 대체로 잠재적 결과와 상관관계가 있기때문에 문턱값 바로 위와 바로 아래 집단 사이에는 
항상 차이 기준치가 있을 것이다. 
=&gt;비교하는 빈의 크기가 줄어들면 편향도 줄어들지만,결코 사라지지는 않는다. 
&gt;
&gt;
2.국지적 선형 접근법 
단순 접근법에 비해 편향이 적을 가능성이 있는 방법이다. 
이 방법도 너비를 정하고,그 안에 들어오는 관찰값을 사용해서 문턱값 양쪽에서 개별적으로 결과와
배정 변수의 선형 회귀를 수행한다. 
=&gt; 이 추정치로 문턱값 지점에서 조치가 있을 때와 없을 때의 결과를 예측하며, 
예측한 두 결과의 차이로 문턱값에 오는 대상의 조치 효과를 예측한다. 
&gt;
장점: 배정 변수와 결과 사이에 어떤 관계가 있어도 괜찮고, 이 관계가 문턱값 양쪽에서 
서로 달라도 괜찮으며, 선형관계에 가깝다고 가정한다. 
&gt;
&gt;
회귀를 두 번 수행하는 대신 한 번만 수행해서 국지적 선형 접근법을 구현하는 방법이 있다. 
첫째, 배정 변수를 조정해서 문턱값이 0에 오도록 반든다.(배정 변수에서 문턱값을 뺀다.)
둘째, 관찰값이 문턱값보다 큰지 작은지를 가리키는 조치 변수를 만든다. 
셋째, 조치 변수에 조정한 배정 변수를 곱해서 `교호 변수`를 하나 만든다. 
마지막으로, 선택한 너비 안에 있는 관찰값을 사용해서 결과를 조치와 조정한 배정 변수와 
그 둘의 교호작용으로 회귀시킨다. 
회귀에서 추정한 조치 계수가 불연속성의 추정치를 알려 준다. 
&gt;
&gt;
3.다항 회귀
결과를 조치와 배정 변수와 고차원 다항식에 회귀시킨다. 
=&gt; 이는 배정 변수와 결과 사이에 비선형관계가 있을 가능성을 고려한 방법
단점: 문턱값에서 멀리 떨어진 데이터가 불연속성 추정에 큰 영향을 미칠 위험이 있다. </code></pre><blockquote>
</blockquote>
<ul>
<li>어떤 결정은 관련 지식과 우리가 생각하는 배정 변수와 결과 사이의 관계는 물론이고, 
정밀도를 높이고자 얼마만큼 편향을 허용할지 또는 반대로 편향을 줄이고자 얼마만큼 정밀도를 
희생할지 등에 좌우된다. <pre><code>=&gt; 최선의 방법은 이론,관련 지식,데이터 분석을 결합해서 선택을 합리화하고, 
서로 다른 실험 명세에서 얻은 결과를 보여 주는 방법이다. 
=&gt; 추정치가 서로 다른 너비와 실험 명세에 걸쳐서 안정적으로 나타난다면, 결과에 신뢰성을 더한다.
=&gt; 반면 특정 명세서에서만 결과가 유효하다면 회의적으로 바라볼 수 밖에 없다. </code></pre><blockquote>
</blockquote>
</li>
</ul>
<hr>
<p>** 문턱값 지점의 연속성 **</p>
<ul>
<li>불연속 회귀 방식이 인과관계를 편향 없이 추정하려면, 조치 상태는 문턱값 지점에서 급격히 변화되 결과에 영향을 미치는 다른 요소는 변하지 않아야 한다. <pre><code>근본 특성조차 문턱값에서 불연속적으로 변하면 문턱값 근처에 나타나는 평균 결과의 차이는 조치의 변화가 아니라, 
이런 근본 특성의 변화로 인해 생길지도 모른다.
&gt;
=&gt; 즉 조치 대상과 미조치 대상은 조치 상태 이외의 차별점이 존재하므로,정확히 문턱값에서조차 
이들의 비교는 더이상 제대로 된 비교가 아니게 된다. 
&gt;
그러나,배정 변수가 문턱값을 지나면서 대상의 평균적인 근본 특성이 연속적으로 바뀐다면 
배정 변수의 값이 딱 문턱값에 오는 대상의 조치 효과를 편향 없이 추정 할 수 있다. 
&gt;
(문턱값 양쪽이 대상을 평균적으로 구분 짓는 유일한 요소가 바로 조치 상태이기 때문이다.)
&gt;</code></pre>=&gt; 근본 특성이 문턱값에서 돌변하지 않는다는 요건을 <code>문턱값 지점의 연속성</code>이라고 부른다.<blockquote>
</blockquote>
</li>
<li>연속성이 중요한 이유 
연속성이 지켜지면 문턱값 지점에서 미조치 대상과 조치 대상의 차이가
<code>국지적 평균 조치 효과</code>가 된다.<blockquote>
</blockquote>
</li>
<li>연속성 요건 
1.반드시 조치를 무작위 할당할 필요는 없다. 
2.결과가 배정 변수와 상관관계가 있어도 무방하다. 
3.관찰 대상이 자신의 배정 변수를 제어할 필요나,대상이 문턱값에 관해 몰라야 할 필요도 없다. 
```
뭐가 잘못돼서 연속성이 깨질까?</li>
<li>관찰 대상이 자신의 배정 변수를 지극히 정교하게 제어해서,어떤 유형의 대상이 
문턱값 바로 위나 아래에 몰린다고 가정하다. <blockquote>
</blockquote>
=&gt; 문턱값 위에 있는 사람과 아래에 있는 사람을 비교하기 어렵다. 
=&gt; 결과에 영향을 주는 다른 근본 특성을 기준으로 문턱값 주변에서 정리가 됐을 것이다. 
=&gt; 불연속 회귀는 인과적 효과의 편향되지 않은 추정치를 주지 못한다. 
```<blockquote>
</blockquote>
</li>
<li>불연속 회귀 결과를 인과관계의 편향 없는 추정으로 해석하기 전에 <code>연속성 가정</code>이 
타당한지부터 판단해야 한다. 
```
[연속성이 깨질 가능성을 파악하는 최선의 방법]<blockquote>
</blockquote>
</li>
</ul>
<p>1.주어진 상황의 세부 사항을 잘 파악해서 문턱값 주변의 정리,조작,그 밖의 변화 가능성을 예의 주시
2.측정 가능한 조치 전 특성을 살펴보고,이들이 문턱값에서 불연속적으로 변하는지 판단 
(많은 측정 가능한 특성이 문턱값에서 연속적으로 변한다면,
측정 불가능한 다른 근본 특성 역시 연속적이라고 자신 해도 좋다.)
3.배정 변수 자체의 분포를 살펴본다.
(만일 문턱값 바로 위에 오는 대상이 바로 아래 오는 대상보다 많거나 그 반대라면 
어떤 조작이 개입해서 연속성을 깨뜨렸을 가능성을 우려할 만하다.)</p>
<pre><code>&gt;
&gt;
- 연속성 위반이 정확히 얼마나 악영향이 있는지는 문제의 세부 사항에 달렸다. </code></pre><ul>
<li>정리된 정도가 약하거나,근본 특성의 불연속적인 변화가 작다면 
=&gt; 불연속 회귀의 결과는 편향되겠지만 그 정도는 사소하다. <blockquote>
</blockquote>
</li>
<li>데이터가 풍부해서 연구자가 문턱값에 아주 가까운 대상에만 집중해도 된다면 
=&gt; 아주 정확히 정리돼야만 결과에 영향을 미친다. <pre><code></code></pre></li>
</ul>
<hr>
<p>** 불응과 흐릿한 불연속 회귀 **</p>
<ul>
<li>조치 여부가 순전히 <strong>배정 변수</strong>와 <strong>문턱값</strong> 만으로 결정되는 상황의 불연속 회귀 설계 
=&gt; 이는 <code>선명한 불연속 회귀 설계</code>라고 한다. <blockquote>
</blockquote>
</li>
<li>그러나 조치가 배정 변수가 문턱값의 어느 쪽에 오느냐에 따라 불연속적으로 영향을 받더라도
순응자,미사용자도 있고 항상 사용자도 있다. 
=&gt; 이러한 불응자가 있으면 <code>도구 변수 접근법</code>을 <code>불연속 회귀</code>에 결합해야 한다. 
```
=&gt; 이 방법은 배정 변수가 문턱값 어느 쪽에 오느냐를 조치 할당의 도구 변수로 사용한다. <blockquote>
</blockquote>
[도구 변수의 조건]</li>
</ul>
<p>1.외생성
도구 변수는 무작위 할당이 되거나, 적어도 <code>그렇게 보여</code>서 첫 단계 효과와 축약형 효과를 
편향 없이 추정하도록 만들어야 한다. 
2.배제 제약 
축약형 효과는 모두 조치를 통해 일어나야 한다.
=&gt; 도구 변수가 조치에 주는 효과 이외에는 달리 결과에 영향을 주는 통로가 없어야 한다. 
3.순응자
도구 변수의 결과로 서로 다른 조치 상태에 놓이는 대상이 있어야 한다. 
4.거부자 없음 
첫 단계 효과의 부호가 무엇이든 간에 도구 변수가 반대 방향으로 조치에 영향을 미치는 
대상이 없어야 한다. </p>
<blockquote>
</blockquote>
<p>외생성 =&gt; 불연속 회귀 전반을 가로지르는 요소이다. 
(만일 잠재적 결과가 문턱값에서 연속적으로 변한다면, 불연속 회귀로 첫 단계 효과와 축약형 효과,
두가지를 편향 없이 추정하게 된다. 
배제 제약 요건 =&gt; 결과에 미치는 영향 이외에 다른 방식으로 영향을 미치지 않아야 한다. </p>
<blockquote>
</blockquote>
<pre><code>=&gt; 이 방법을 `흐릿한 불연속 회귀 설계`라고 부른다. 


</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고- 무작위 실험 ]]></title>
            <link>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EB%AC%B4%EC%9E%91%EC%9C%84-%EC%8B%A4%ED%97%98</link>
            <guid>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EB%AC%B4%EC%9E%91%EC%9C%84-%EC%8B%A4%ED%97%98</guid>
            <pubDate>Thu, 29 Feb 2024 05:16:46 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>**[데이터 분석과 비판적 사고]을 읽고- 무작위 실험 **</p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> ** 무작위 실험 **</p>
</blockquote>
<ul>
<li>조치를 무작위로 적용하면 인과관계를 편향 없이 추정할 수 있다.</li>
<li>통계적 추론과 가설 검정에 쓰는 모든 도구는 실험 환경에서 진짜 효과와 잡음을 구별하도록 작동한다. </li>
<li>무작위 실험을 하더라도 수많은 복잡함이 발생하므로 계획을 잘 세워야 한다. </li>
<li>실험 대상이 실험 설계에 따른 할당(배치)에 따르지 않을 때는 무작위 할당(무선 할당,무선 배치)에 기반해서 
비교해야 한다.</li>
<li>연구자가 이상적인 실험을 구축하지 못하더라도 ,
연구 목적으로 의도하지 않았던 무작위 조치가 일어난 사례를 발견하기도 한다. 
=&gt; 이런 &#39;자연 발생적 실험&#39;은 종종 중요한 인과관계 물음에 답할 유익하고 운 좋은 기회를 준다. <blockquote>
</blockquote>
</li>
</ul>
<hr>
<p>교란 변수 통제만으로는 인과관계를 편향 없이 추정하기가 기본적으로 불가능하다.
=&gt; 이를 보완하기 위해 &#39;연구 설계&#39;방법이 있다. </p>
<blockquote>
</blockquote>
<p>연구 설계로 인과관계를 파악하기에는 기발함과 창의성이 요구된다. </p>
<blockquote>
</blockquote>
<p>무작위 실험이 대단한 이유는 조치를 무작위로 적용하면
교란 변수가 사라지기 때문이다.
=&gt; 그래서 추정 편향을 없앨 수 있다. </p>
<blockquote>
</blockquote>
<p>** 이탈 **</p>
<ul>
<li>실험 참가자가 조치 할당 후 실험에서 빠지기도 한다.
=&gt; 이러한 <code>이탈</code>은 불응과는 다른 고려 사항이다. <pre><code>불응은 조치를 받으리라 예상했지만 받지 않은 사람과 관련 있다.
(적어도 이런 비순응자는 관찰한 결과를 얻는다)
&gt;
이탈 (실험에서 빠진 사람)의 결과는 관찰조차 못한다. </code></pre><blockquote>
</blockquote>
<pre><code>이탈이 불가피하다면 분석가는 어떻게 해야 할까?
&gt;
실험의 조치가 이탈 비율에 영향을 미쳤는지 검사한다. 
=&gt;실제로 영향을 미쳤다면 더이상 제대로 된 비교가 아니라고 
봐야 한다. 
=&gt;표본에 남은 조치 대상과 미조치 대상이 결과와 관련된
다른 공변인에 이써엇 체계적으로 차이가 나는지도 알게된다.&gt;
&gt;
조치가 참가자의 이탈에 관여한다고 볼 충분한 이유가 있다면?
&gt;
=&gt; 실험 결과를 포기해야 할까? 
=&gt; 분석가가 이탈에 관한 어떤 가정을 할 필요도 없는 최후의 
보루가 있다. 
=&gt;이탈로 발생하는 편향의 정도를 제한 할 수 있다. </code></pre><blockquote>
</blockquote>
</li>
<li><ul>
<li>간섭 **</li>
</ul>
</li>
<li>간섭은 한 대상의 조치 대상의 결과에 영향을 미칠 때 발생한다.<pre><code>신중한 분석가는 간섭을 어떻게 처리할까?
&gt;
연구자들은 파급 효과를 추정하려는 목적으로 연구를 설계하기도 
한다. 
&gt;신중한 분석가는 간섭을 예상하고 그 가능성을 낮출 방법을 써서
연구를 설계해야 한다. 
=&gt; 바로 이때문에 &#39;사전 연구&#39; 등을 수행한다. 
&gt;</code></pre></li>
<li><ul>
<li>자연 실험 **</li>
</ul>
</li>
<li>실험을 수행해서 개입하지 않더라도 주변 세상이 
무작위 실험과 비슷한 상황을 만들어 주는 경우도 있다.
=&gt; <code>자연 실험</code><blockquote>
</blockquote>
</li>
<li>자연 실험은 거의 모두 얼마간 불응이 일어난다. 
=&gt; 이런 상황에서는 대체로 <code>조치 의도 효과</code>를 추정하거나
<code>도구 변수 접근법</code>을 취해서 순응자 평균 조치 효과를 추정한다. <blockquote>
</blockquote>
```
도구 변수 접근법을 취할 때 고려해야 할 사항 <blockquote>
</blockquote>
</li>
<li>자연적인 무작위 할당이 있으면 외생성 측면에서 확신 가져도 좋다. <blockquote>
</blockquote>
</li>
<li>배제 제약 문제에도 세심하게 주의를 기울여야 한다. <pre><code></code></pre></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고- 교란 변수 통제 ]]></title>
            <link>https://velog.io/@sooyeon_/%E3%85%8D%E3%85%8D%E3%85%8D%E3%85%8D%E3%85%8D</link>
            <guid>https://velog.io/@sooyeon_/%E3%85%8D%E3%85%8D%E3%85%8D%E3%85%8D%E3%85%8D</guid>
            <pubDate>Wed, 28 Feb 2024 08:52:48 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>**[데이터 분석과 비판적 사고]을 읽고- 교란 변수 통제  **</p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> ** 교란 변수 통제 **</p>
</blockquote>
<ul>
<li>교란 변수를 관찰하면 이를 통제해서 편향을 줄일 수 있다. </li>
<li>교란 변수를 통제하는 여러 방법이 있지만,회귀에 포함시키는 방법이 가장 널리 쓰인다. </li>
<li>통제는 마법이 아니다.관찰하지 않은 교란 변수나 역인과관계로부터 발생하는 편향을 
완전히 없애지는 못한다. </li>
<li>교란 변수는 통제해야 하지만 기작은 통제하지 않는다. </li>
</ul>
<hr>
<p><strong>통제란?</strong>
통계적 기법을 사용해서,두 변수 사이의 상관관계를 찾는 과정에서 다른 변수들의 값을 고정하는 방법이다. </p>
<blockquote>
</blockquote>
<ul>
<li>교란 변수 목록이 늘어나면 가능한 모든 경우를 쪼개서 표를 만들기란 어렵고,다루기 불편하다. 
잠재적 교란 변수를 측정하기만 한다면 회귀 분석에서 통제할 수 있다. 
=&gt; 가중 평균을 반영해서 각 영역의 오차 제곱의 합을 최소화하는 추정치를 얻을 것이다. <blockquote>
</blockquote>
</li>
<li>통제를 할때는 이질성을 명확히 이해해야 한다. 
교란 변수를 통제하기 시작하면 더이상 모든 대상에 걸친 평균 조치 효과를 추정하지 않기 때문이다. 
ex)앞선 사례에서 이념을 통제하면서,정당과 투표의 관계를 추정하려면 
중도 성향을 지닌 의원들에게 가중치를 더줘야 한다. 
왜냐면 극단적인 이념을 지닌 의원에게는 변이가 적기 때문이다. <blockquote>
</blockquote>
</li>
<li>어떤 경우는 추정 대상으로서 평균 조치 효과를 추정하는 대신 
<code>국지적 평균 조치 효과</code>만 추정한다고 설명할텐데, 
여기서 <code>국지적</code>이라는 표현은 분석 대상에서 <code>믿을 만한 추정치를 구할 수 있는 하위 집합을 뜻한다</code><blockquote>
</blockquote>
</li>
<li>조치 효과가 전체 대상에서 이질적으로 일어나면 
평균 조치 효과(ATE)와 국지적 평균 조치 효과 (LATE)가 같을 필요는 없다. 
=&gt;그러므로 정말로 알고 싶은 추정 대상이 ATE라면  LATE 의 추정치가 ATE를 얼마나 잘 나타내는지 명확히 알아야 한다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>회귀 파헤치기 **
인과 추론에 있어서,어떤 회귀든 다음 핵심 요소가 있다.
``` </li>
</ul>
</li>
<li>종속 변수</li>
<li>조치 변수</li>
<li>일련의 통제 변수 
```</li>
<li>종속 변수: 파악하려는 결과 </li>
<li>조치  변수: 추정하려는 종속 변수에 영향을 주는 특성 </li>
<li>통제 변수:편향을 줄이고자 회귀에 포함시키는 잠재적 교란 변수 <blockquote>
<blockquote>
<p>Y=$a$+$\beta$ * $T$ + $y$  * $X$+ e
Y=종속 변수 
T=조치 변수 
X=통제 변수
$\alpha$=회귀 매개 변수 (추정하려는 수치)는 절편
$\beta$=조치 효과 
$y$=통제 변수의 효과 
e=오차항 
=&gt; 여기서 중요한것은, $\beta$가 관심 대상의 효과이며, 
우리는 이를 편향없이 추정하려고 한다는 점이다. </p>
</blockquote>
</blockquote>
</li>
<li>데이터 생성 과정이 어찌됐건 최소제곱법 회귀는 항상
<code>조건부 기대 함수에 대한 최선의 선형 근사</code>를 제시한다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>회귀에서 어떻게 통제하나?**</li>
</ul>
</li>
<li>X가 T와 상관관계가 있고, 이와 별개로 Y와도 연관이 있으면 
X를 통제할 때, T와 Y의 관계 추정치가 바뀐다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>통제와 인과관계**</li>
</ul>
</li>
<li>통제를 하면 특정 교란 변수를 측정하고 회귀에 포함시켜서 이로부터 발생하는 편향을 줄이거나
아예 없앨 수 있지만,여전히 대부분의 경우에서 통제만으로 인과관계의 편향 없는 추정치를 얻으리라고 기대하지 않는다. <blockquote>
</blockquote>
</li>
<li>어떤 상관관계가 인과적 효과의 편향 없는 추정이라고 해석하려면, 
조치 대상과 미조치 대상 사이에서 차이 기준치가 없음을 확신해야 한다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>회귀 표 읽기 **</li>
</ul>
</li>
<li>회귀 수행의 목표는 종속의 변이를 예측하거나 모델링 하는 것이 아니다 
=&gt;<code>핵심 조치 변수가 결과에 영향이 있는지 여부를 파악하는 것이다.</code>
=&gt; 이 목표를 위해서 관심을 가질 대상은 <code>조치 변수의 계수 추정</code>이다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>교란 변수 통제 대 기작 **</li>
</ul>
</li>
<li>관찰 불가능한 교란 변수를 관찰 가능하게 만들 재주는 없다. 
=&gt; 이 말의 뜻을 알아보고자 <code>매칭</code>이라고 부르는 통계적 기법을 살펴보자 .
```
[매칭]
상황 : 통제하려는 어떤 연속적인 변수 X가 있다고 가정하자. <blockquote>
</blockquote>
조치 집단의 각 대상을 미조치 집단에서 X의 값이 가장 가까운
대상으로 매칭한다. 
그런 다음,이 매칭된 데이터로부터 평균 차이를 계산해서 
T가 Y에 미치는 효과를 추정한다. 
=&gt; 이를 <code>최근접 이웃 매칭</code>이라고 부른다. <blockquote>
</blockquote>
장점
통제 변수가 좀 더 다양한 방식으로 결과에 영향을 
미치더라도 대응할 수 있다. <blockquote>
</blockquote>
단점</li>
</ul>
<p>1.회귀보다 적은 양의 정보를 사용하기 때문에 종종 정밀도가 
낮은 경우가 생긴다. 
2.조치된 관찰값에 대한 최적 매칭의 X는 
만약 X가 T와 양의 상관관계가 있다면 그 값이 더 높으리라
기대하기 때문에 매칭에 의한 추정은 편향될 여지가 있다.</p>
<blockquote>
</blockquote>
<p>[회귀와 차이점]
관찰한 변수를 통제하는가 (회귀)
매칭된 변수를 통제하는가 (매칭)</p>
<pre><code></code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고- 어째서 상관관계는 인과관계를 내포하지 않는가 
]]></title>
            <link>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EC%96%B4%EC%A7%B8%EC%84%9C-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84%EB%8A%94-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84%EB%A5%BC-%EB%82%B4%ED%8F%AC%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94%EA%B0%80</link>
            <guid>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EC%96%B4%EC%A7%B8%EC%84%9C-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84%EB%8A%94-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84%EB%A5%BC-%EB%82%B4%ED%8F%AC%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94%EA%B0%80</guid>
            <pubDate>Sun, 25 Feb 2024 14:27:39 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>**[데이터 분석과 비판적 사고]을 읽고- 어째서 상관관계는 인과관계를 내포하지 않는가 **</p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> ** 어째서 상관관계는 인과관계를 내포하지 않는가 **</p>
</blockquote>
<ul>
<li>상관관계가 반드시 인과관계를 내포하지는 않는다. </li>
<li>관찰한 상관관계가 인과관계의 편향된 추정치가 될 두 가지 이유가 있다. 
(교란 변수와 역인과관계다)</li>
<li>교란 변수와 기작 사이에는 중요한 차이가 있다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>잠재적 결과를 명확하게 이해하기 **<pre><code>[평균 조치 효과 / ATE]
조치 집단의 평균 조치 효과와 미조치 집단의 평균 조치 효과의 가중 평균
(ATT와 ATU는 근본적으로 관찰 불가)
&gt;
표본 평균의 차이 (추정치) =ATT + 편향 + 잡음 
&gt;
반사실적 세계에서도 두 집단의 평균이 다르다고 하면, 이 비교에는 편향이 존재한다. 
=&gt; 이 경우, 두 집단 사이에는 &#39;차이 기준치&#39;가 있다고 말한다. </code></pre></li>
</ul>
</li>
<li><ul>
<li>편향의 근원 **</li>
</ul>
</li>
<li>상관관계 해석에 적절히 주의를 기울이려면, 체계적 차이 기준치가 언제 발생하는지 
명확히 이해해야 한다, 바로 이 차이 기준치가 편향을 만들기 때문이다. 
=&gt; 주요한 두가지 근원은 <code>교란 변수</code>와 <code>역인과관계</code>다. <blockquote>
</blockquote>
</li>
<li>어떤 상관관계가 인과관계의 증거인지 여부를 판단하려면, 먼저 교란 변수는 없는지 살펴야 한다. <blockquote>
</blockquote>
```
[교란 변수]
두가지 조건을 충족하는 특성이 있다. </li>
</ul>
<p>1.조치 상태에 어떤 영향(효과)를 준다. 
2.조치 상태에 준 영향을 통해 나타난 효과 외에도 결과에 어떤 다른 영향을 준다.</p>
<blockquote>
</blockquote>
<p>교란 변수는 차이 기준치를 만들어 내고, 따라서 &#39;편향&#39;도 만들어 낸다. </p>
<blockquote>
</blockquote>
<p>[역인과관계]
결과가 조치 상태에 영향을 미치면 역인과관계가 성립한다. 
역인과관계는 차이 기준치를 유발하는데, 그 이유는 어떤 결과가 대상의 조치 여부에 영향을 미치면 조치 집단과
미조치 집단 사이에서 조치 효과에서 기인하지 않은 결과 차이가 일관되게 생길 것이기 때문이다. </p>
<blockquote>
</blockquote>
<pre><code>** 교란 변수와 역인과관계는 어떻게 다른가?**
- 교란 변수와 역인과관계를 생각할 때는 이들이 서로 어떻게 연관이 있는지 생각해 보면 좋다. 
- 역인과관계로 바라볼지 교란 변수로 바라볼지는 그다지 중요하지 않다. 
=&gt; 정말 중요한 것은, 상관관계에서 교란 변수나 역인관관계로 나타나는 차이 기준치를 따지고, 
실제로 차이 기준치가 있다면 상관관계가 인과관계를 내포한다는 해석을 내리기 전에 주의를 기울이는 것이다. 
&gt;
** 편향의 방향(부호) 정하기 **
- 교란 변수나 역인과관계가 존재하면 조치와 결과의 상관관계는 실제 인과관계의 편향 없는 추정치라고 볼 수 없다. 
다만,상관관계가 인과적 효과의 과대 또는 과소추정인지 판단함으로써 인과관계에 관해  
파악하는 경우도 있다. </code></pre><p>관찰한 상관관계 (추정치) = 실제 인과적 효과 (추정 대상) +편향+잡음</p>
<pre><code>- 편향이 양의 값을 가진다고 믿을 만한 이유가 있다면, 관찰한 상관관계는 수행한 조치의 
실제 인과적 효과의 `과대추정`이다. 
=&gt; 양의 상관관계를 관찰했다고 해서,수행한 조치가 어떤 영향을 미친다고 확신하기 어렵다는 뜻이다.
- 편향이 음의 값이라고 믿을 만한 이유가 있다면,관찰한 상관관계는 수행한 조치의 실제 인과적 
효과의 `과소추정`이다. 
&gt;</code></pre><p>[교란변수 사례]
어떤 교란 변수가 조치와 결과에 (음이든 양이든) 같은 방향의 효과를 준다면, 
이 교란 변수를 고려하지 않고 추정하면 양의 값인 편향이 발생한다.
=&gt;과대추정 
어떤 교란 변수가 초지와 결과에 다른 방향으로 영향을 미친다면, 
이 교란 변수는 음의 값을 갖는 편향을 일으킨다. 
=&gt; 과소추정 </p>
<blockquote>
</blockquote>
<p>[역인과관계 사례]
결과가 조치에 긍정적인 효과를 준다면 편향은 양의 값이 된다.
=&gt;관찰한 상관관계가 실제 인과적 효과의 과대추정이라는 뜻이다.</p>
<blockquote>
</blockquote>
<p>결과가 조치에 부정적인 효과를 준다면 편향은 음의 값이 된다. 
=ㅋ&gt; 이는 관찰한 상관관계는 과소추정이 된다. </p>
<blockquote>
</blockquote>
<pre><code>- 잠재적으로 편향된 상관관계로부터 인과적 효과를 파악하는 방법은 `거꾸로 살펴보기`이다. 
=&gt;편향의 크기를 추측해서 효과가 얼마나 큰지 추론하는 대신, 
실제 효과가 전혀 없다고 가정한 상태에서 어떤 상관관계를 관찰하려면 편향이 얼마나 커야하는지 묻는 방식이다. =&gt; 이런 분석 방식을 흔히 `민감도 분석`이라고 부른다. 
&gt;
&gt;
- 어떤 조치가 긍정적인 효과가 있더라도 교란 변수나 역인과관계가 부정적인 편향을 만들기도 한다. 
=&gt;이로 인해 조치 효과는 양의 값이더라도 관찰한 상관관계는 크기가 작너아 아예 없거나 심지어 음의 값이 될 수 있다. 
=&gt;그러므로, 인과관계 역시 상관관계를 내포하지는 않는다. 
&gt;
** 기작 대 교란 변수 **
- 조치가 결과에 영향을 미치는 기작을 교란 변수와 혼동하는 경우가 있다. 
&gt;
&gt;
- 기작(매개자)
조치로부터 영향받는 어떤 특성이자,동시에 그 자신이 결과에 영향을 미친다. 
=&gt; 기작은 교란 변수가 아니라 조치가 결과에 영향을 미치는 하나의 수단이다. </code></pre><p>교란 변수 =&gt; &#39;조치 전 공변량&#39; 
(조치가 행해지기 이전에ㅐ 조치와 결과에 연관된 변수로 기술)
기작=&gt; &#39;조치 후 공변량&#39;
(조치가 행해진 다음에 조치와 결과에 연관된 변수로 기술 ) </p>
<pre><code>** 편향과 잡음에 관해 명확하게 사고하기 **
- 상관관계를 보여 주고 이를 인과관계의 추정치로 해석하는 경우 던져야 하는 질문 </code></pre><p>첫째, 실제로 상관관계를 관찰하는가?
단지 관찰하려는 결과가 일어난 경우나,항상 조치된 사례만 살펴보지 않았는지 확인해야 한다. </p>
<blockquote>
</blockquote>
<p>둘째,추정한 상관관계가 실제 관계를 반영하는가?
ex) 100명의 표본에서 땅콩버터 소비와 맹장염의 관련성을 보였다고 하자.
이 표본에서 땅콩버터를 많이 먹은 사람일수록 맹장염에 걸릴 가능성이 높다. 
=&gt; 상관관계가 없음을 뜻하는 귀무가설과 통계적으로 구분할 만한가?
왜 데이터가 100명만 있는가?
이 특정한 상관관계를 측정하려는 목적으로 데이터를 모았는가?
아무런 상관관계를 발견하지 못했어도 이야기했을까?
(p-해킹이나 p-검열이 걱정된다면 더 큰 모집단에서 땅콩버터와 맹장염 사이에 진짜로 상관관계가 
있을지에 관해 회의적일 것이고, 독자적으로 데이터를 모아서 새로운 표본에도 같은 상관관계가 나타나는지
확인하고 싶을것이다.)
=&gt; 만약 나타나지 않는다면 실제 추정 대상은 0이며,100명 표본에서 발견한 양의 상관관계는 잡음으로
발생한 결과라고 봐야 한다. </p>
<blockquote>
</blockquote>
<p>셋째,이 상관관계가 인과관계의 확실한 증거인가? 
즉 교란 변수나 역인과관계 때문에 추정한 상관관계가 실제 인과관계로부터 편향되지는 않는지 물어봐야 한다. </p>
<blockquote>
</blockquote>
<pre><code>***
어떤 상관관계가 교란 변수나 역인과관계로 인해 인과관계를 편향되게 추정하는 경우가 종종 있다
=&gt; 이것이 바로 `상관관계가 인과관계를 내포하지 않는다는 말의 의미`



</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고- 평균으로의 회귀]]></title>
            <link>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%ED%8F%89%EA%B7%A0%EC%9C%BC%EB%A1%9C%EC%9D%98-%ED%9A%8C%EA%B7%80</link>
            <guid>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%ED%8F%89%EA%B7%A0%EC%9C%BC%EB%A1%9C%EC%9D%98-%ED%9A%8C%EA%B7%80</guid>
            <pubDate>Sat, 24 Feb 2024 07:07:02 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>**[데이터 분석과 비판적 사고]을 읽고- 평균으로의 회귀 **</p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> ** 평균으로의 회귀**</p>
</blockquote>
<ul>
<li>많은 현상이 평균으로 회귀하는 경향이 있으며, 이는 극적인 관찰값 뒤에는 
종종 덜 극적인 관찰값이 따라옴을 뜻한다.</li>
<li>이 현상은 신호와 잡음으로 이뤄지는 사실상 모든 산출물에서 일어난다. </li>
<li>평균으로의 회귀를 명확히 이해하지 못하면 주어진 증거를 잘못 해석하기 쉽다.<blockquote>
<hr>
</blockquote>
</li>
<li><ul>
<li>평균으로의 회귀는 중력이 아니다 **</li>
</ul>
</li>
<li>평균으로의 회귀는 시간이 흐르면서 평균으로 끌어당기는 중력 같은 힘이 아니다.</li>
<li>평균으로의 회귀에 있어서 어떤 사건이 시간상 먼저 오는지는 중요하지 않다. 
(평균 회귀는 시간과 아무 관련이 없다.)<blockquote>
</blockquote>
</li>
<li><ul>
<li>도움 구하기 **</li>
</ul>
</li>
<li>도움을 구하는 상황에서 평균 회귀는 명확한 사고에 방해가 될 위험이 있다. <pre><code>뭔가 예상치 못하게 잘못됐다는 말은 아마도 오랜 경험을 통해서 일이 어떻게 풀릴지 기대한 바가
있다는 뜻이고, 그 기대가 나쁜 방향으로 빗나갔다는 뜻이다. 
&gt;
우리가 기대한 바 =&gt; 신호를 반영한다고 생각할 수도 있다. 
기대가 어긋난 일 =&gt; 잡음을 반영할지도 모른다. </code></pre>=&gt; 평균 회귀가 시사하는 바는, 도수 치료나 시험 준비 전략이 실제로 도움이 안 된다고 하더라도, 이런 도움을 받은 사람들이 개선 효과를 보게 된다는 점이다. 
=&gt; 결과만으로 어떤 행동 변화가 원인이라고 해석하면 안 된다는 의미다. 
(어떤 개입 없이도 평균 회귀로 인해 상황은 호전될 수 있다.)</li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고-과도한 비교,부실한 보고]]></title>
            <link>https://velog.io/@sooyeon_/%E3%85%93</link>
            <guid>https://velog.io/@sooyeon_/%E3%85%93</guid>
            <pubDate>Sat, 24 Feb 2024 05:29:02 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>**[데이터 분석과 비판적 사고]을 읽고-과도한 비교,부실한 보고 **</p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> *<em>과도한 비교,부실한 보고 *</em></p>
</blockquote>
<ul>
<li>분석가가 비교를 많이 하고, 그 중 통계적으로 유의한 결과만 보고하면 위양성 결과와 과대추정이 많이 발생한다. </li>
<li>위양성 결과는 비도덕적 행동으로 인해 생기곤 한다. 
하지만 정직한 연구자들 집단에서 생기기도 한다.<blockquote>
</blockquote>
</li>
</ul>
<hr>
<p>** 출판 편향 **</p>
<ul>
<li>수많은 비교를 수행하는 <code>과도한 비교</code>와
통계적으로 유의한 결과만 골라서 보고하는 <code>부실한 보고</code>는 함께하면 위험한 조합임에도 불구하고 널리 퍼져있다.
=&gt;<code>과도한 비교</code>와 <code>부실한 보고</code>의 결과로, 
p-value 값이 틀리는데 그치지 않고, 연구 발표로부터 모은 추정치들이 실제 추정 대상의 크기를 과대추정한다. 
=&gt; 모든 추정치를 평균할 때 추정치 수가 아주 많다고 해도 실제 추정 대상에 접근하지 못한다
=&gt; 이것이 바로 <code>출판 편향</code>이다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>과도한 비교와 부실한 보고는 다양한 방식으로 일어난다**<blockquote>
</blockquote>
</li>
</ul>
</li>
<li><code>p-해킹</code>
실험을 수행하거나 비교를 하거나 통계적 모델을 설정하는 다양한 방법을 탐색해서, 
통계적으로 유의한 결과를 내는 방법을 찾아내고,그런 결과만 보고하는 행동 
```</li>
</ul>
<p>1.통계적으로 유의한 결과가 나올 때까지 비슷한 실험을 계속 시도
2.실험 방식을 과도하게 탐색하는 일 
3.여러 가지 다른 산출물을 시도하는 방식 </p>
<blockquote>
</blockquote>
<p>=&gt; &#39;과도한 비교&#39;를 일으키는 방식 </p>
<pre><code>=&gt; p-해킹은 여러 가지 형태를 띨 수 있으며, 분석가라면 이를 피하려고 노력해야 한다. 
&gt;
- `p-검열`
연구자 공동체가 표준 연구 발표 절차를 통해서, 문턱값을 넘는 p-값을 얻은 연구는 
배제함으로써,&#39;출판 편향&#39;이 일어나도록 만드는 과정 
&gt;</code></pre><p>[출판 편향]
통계적으로 유의한 결과만 발표하는 경향으로 인해 
발표된 결과가 일관되게 과대추정하는 현상 </p>
<pre><code>&gt; 
&gt;</code></pre><p>[p-해킹]
부정직한 연구자가 효과가 없는 실험 결과를 숨기기 때문에 
우리는 이를 접하지 못한다. 
[p-검열]
정직한 연구자들이 그런 결과를 발표하지 않기 때문에 
우리는 이를 접하지 못한다.</p>
<blockquote>
</blockquote>
<p>=&gt; 결과적으로 둘다 통계적으로 유의한 결과만 보고되므로, 
우리가 접하는 연구 결과는 &#39;출판 편향&#39;문제를 겪는다. </p>
<pre><code>&gt;
** 대부분의 과학적 &#39;사실&#39;이 거짓일까?**
&gt;
- ** p-해킹을 탐지하는 요령 **</code></pre><p>발생 가능한 4가지 경우에서 발표된 문헌의 
p-값 분포가 어떤 식일지 생각해본다.</p>
<blockquote>
</blockquote>
<p>1.실제로는 아무 관계가 없고 p-해킹도 일어나지 않았다.
2.실제로 어떤 관계가 있고 p-해킹도 일어나지 않았다.
3.실제로는 아무 관계가 없는데 p-해킹이 일어났다. 
4.실제로 어떤 관계가 있는데 p-해킹이 일어났다. </p>
<blockquote>
</blockquote>
<p>1번:p-해킹이 일어나지 않았다면 p값은 거의 고르게 
분포해야 한다. 
2번: 실제 관계를 탐지한다는 사실을 반영해
낮은 p-값이 더 많아야 한다. 
3번:p-해킹의 유혹에 빠진다면 p값이 0.5미만이 될때까지 
실험 방법,하위 집단등을 바꿔 가면서 시도하고 보고
=&gt; 높은 p-값이 낮음 p-값보다 더 많이 보인다. </p>
<pre><code>&gt;
** 가능성 있는 해법 **
- `사전 등록`
연구 수행 이전에,시험하려는 대상과 시험 절차를 정확히 작성해서 발표함으로써, 자신들의 연구 내용을 사전 등록
=&gt;이 방법은 과도한 비교 및 부실한 보고를 방지한다. 
&gt;
- `재현`
추정 효과가 실제로 유효한지 판별하는 방법 한 가지는 독립적으로 생성한 새 데이터에서
`재현`하는 것이다.
&gt;&gt; - 재현이 어떤 때는 유효하고 어떤 때는 그렇지 않다. 








</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고-표본,불확실성,통계적 추론]]></title>
            <link>https://velog.io/@sooyeon_/ih0tam9q</link>
            <guid>https://velog.io/@sooyeon_/ih0tam9q</guid>
            <pubDate>Thu, 22 Feb 2024 12:45:25 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>[데이터 분석과 비판적 사고]을 읽고-표본,불확실성,통계적 추론</strong></p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> *<em>표본,불확실성,통계적 추론 *</em></p>
</blockquote>
<ul>
<li>모든 정량적 추정은 실제 수치,편향,잡음의 합이다. </li>
<li>분석가는 통계적 가설 검정을 통해서 추정치가 잡음으로 인해 발생할 가능성을 판단한다. </li>
<li>통계적 유의성과 실질적 유의성은 다른 개념이며 구분해야 한다. <blockquote>
</blockquote>
</li>
</ul>
<hr>
<p><strong>추정</strong> </p>
<pre><code>추정치=추정 대상 + 편향 + 잡음 </code></pre><pre><code>추정치: 분석 결과로 얻는 수치 
추정 대상 : 파악하려는 모집단에 존재하는 분석 대상의
실제 수치
편향: 체계적인 이유로 발생하는 오차
잡음: 우연히 발생하는 특이한 오차 </code></pre><p>=&gt; 우리는 추정치가 추정 대상에 가깝기를 바란다. 
=&gt;추정치는 편향과 잡음이라는 이유로,
추정 대상과 차이가 날 수 있다.</p>
<blockquote>
</blockquote>
<p><strong>왜 추정치는 추정 대상과 다를까?</strong></p>
<ul>
<li>추정치가 평균적으로는 추정 대상과 같을지 몰라도, 
잡음 때문에 개별 추정치 각각은 추정 대상과 불일치한다. 
<code>(잡음은 임의로 발생한다)</code></li>
<li>편향이 있으면 개별 추정치는 물론이고 추정치의 평균도 추정 대상과 달라진다. 
<code>(일관된 오차는 편향)</code><blockquote>
</blockquote>
</li>
<li><ul>
<li>편향 **</li>
</ul>
</li>
<li>추정량은 <code>편향</code>이 있기 때문에 추정 대상과 차이나는 추정치를 주기도 한다. 
=&gt; 어떤 추정량을 매번 독립적인 새로운 표본에 무한히 반복해서 얻은 추정치의 평균값이 추정 대상과 같으면, 
이 추정량은 <code>편향되지 않았다</code>라고 한다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>잡음 **</li>
</ul>
</li>
<li>모집단에서 표본을 추출하면 필연적으로 추정치에 <code>잡음</code>이 끼어든다. 
=&gt; 개별 추정치는 표본을 추출하기 때문에 나타나는 자연스러운 변동성 때문에 추정 대상과 다소 차이가 난다. 
=&gt;이 자연스러운 변동성을 <code>표본 변동</code>이라고 부르며, 
잡음을 유발하는 흔한 원인이다. </li>
<li>다양한 추정치가 서로 가까울수록 추정량이정밀하다. 
=&gt; 잡음이 적을수록 정밀한 추정량이다. 
(잡음이 거의 없으면 추정량으로 얻은 추정치는 매번 비슷하다.) <blockquote>
</blockquote>
</li>
<li><ul>
<li>어떤 추정량이 좋은가?**
<code>결과적으로는 편향되지 않고 정밀한 추정량을 찾아야 한다.</code>
=&gt;하지만 두가지 목표는 서로 상충되는 경우가 있어서, 
얼마 이상 정밀도를 확보하려면 편향도 어느 정도 감수해야 한다. <blockquote>
</blockquote>
</li>
</ul>
</li>
<li>추정량이 편향되지 않지만, 정밀하지 않다면 
=&gt; 추정치는 잡음이 많이 껴서, 추정 대상과 달라진다. </li>
<li>추정량이 편향되지만 정밀하면,매우 정밀하게 잘못된 수치를 추정하므로 추정치가 추정 대상과 달라진다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>정밀도 정량화하기 **</li>
</ul>
</li>
<li>편향이나 잡음의 가능성을 얼마나 염려해야 하는지 알도록 추정량의 정밀도를 정량화할 필요가 있다. 
=&gt;<code>표준 오차</code>를 사용하여,신뢰 구간을 도출할 수 있다.<blockquote>
</blockquote>
</li>
<li><ul>
<li>표준 오차 **<pre><code>[표본 분포]
추정량을 수없이 반복 적용해서 얻는 추정치의 분포
=&gt;이 표본 분포의 표준 편차는 &#39;표준 오차&#39;
&gt;
[표준 오차]
추정치가 얼마나 다양하게 변하는지를 측정하므로, 
개별 추정치가 평균 추정치로부터 얼마나 빗나가는지 
감을 잡게 해준다. </code></pre></li>
</ul>
</li>
<li>표준 오차가 크면 추정치가 넓게 퍼지므로, 
그 추정량은 상대적으로 정밀하지 않다. </li>
<li>표준 오차가 작으면 여러 추정치들이 가깝게 나타나며, 
그 추정량은 상대적으로 정밀하다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>작은 표본과 극단적인 관찰값 **
<code>추정치 정밀도가 낮다 (잡음이 크다)</code>
=&gt; 이는 추정치가 어느 쪽으로든 극단적인 값을 가질 가능성이 높다는 것이다. <blockquote>
</blockquote>
</li>
</ul>
</li>
<li><ul>
<li>신뢰 구간 **
<code>정밀도를 계량하는 또 다른 방식</code><blockquote>
</blockquote>
<pre><code>[큰 수의 법칙]
표본 크기가 아주 커지면 잡음은 실질적으로 사라진다. 
&gt;
[중심 극한 정리]
실시하는 조사가 편향되지 않고, 반복해서 실시하면 
추정치 중 대략 95퍼센트는 추정 대상으로부터 
표준 오차의 대략 2배 구간 안에 들어온다</code></pre><blockquote>
</blockquote>
<pre><code>[95 퍼센트 신뢰 구간]
추정치에서 표준 오차의 두 배를 뺀 값부터 
추정치에서 표준 오차의 두 배를 더한 값까지
&gt;
사람들은 종종 실제 값이 95퍼센트 신뢰 구간 안에 들어간다고
95퍼센트 확신한다는 말을 한다. 
=&gt; 하지만 이는 딱 맞는 말이 아니다. 
&gt;
=&gt; 정확히는 
편향이 없는 추정량을 무한히 많이 반복해서 추정하면 
실제 추정 대상은 그중 95퍼센트 시도에서 95퍼센트 신뢰 구간에
들어간다고 말할 수 있다. </code></pre><blockquote>
</blockquote>
</li>
</ul>
</li>
<li><ul>
<li>통계적 추론과 가설 검정 **<blockquote>
</blockquote>
가설 검정 </li>
</ul>
</li>
<li>추정 대상이 특정 참조 지점보다 크다,작다,다르다 등을 판단하고 싶을 때 =&gt; <code>가설 검정</code>고려<pre><code>[상황 예시]
편향되지 않은 여론 조사를 유권자 1,000명을 대상으로 
실시해서 공화당 득표율이 .532또는 53.2퍼센트라고 추정 
&gt;
두 후보 지지율이 같은 상황에서 
우리가 관찰한 증거가 나올 가능성을 실험한다. 
=&gt; 이러한 무관계 기준은 &#39;귀무 가설&#39;이라고 부른다. 
&gt;
[귀무 가설이 참이라는 가정]
두 후보 지지율이 똑같아서, q=.5라는 가정부터 시작
&gt;
=&gt; 그럼 여론 조사 결과를 실시해서 얻은 공화당 지지율이 
적어도 우리가 얻은 .532이상일 가능성이 얼마일지 질문해보자.
&gt;
실제 득표율 q=.5와 조사 대상 1,000명이라는 사실로부터 
추정치의 표준 오차를 계산하면 .016이다. 
&gt;
=&gt;추정치 .532는 귀무 가설보다 표준 오차의 두 배만큼 크다.
=&gt;실제 값에서 표준 오차의 두배 넘게 벗어나는 추정치는 5퍼센트에 불과한다. 
(이 중 절반은 추정치가 실제 값보다 표준 오차의 두배보다 작다)
=&gt; 그러므로,공화당 지지율이 높게 나올 확률은 약 2.5%</code></pre>=&gt; 통계학에서는 이를 <code>단측 z-검정</code> 을 수행한다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>통계적 유의성**
위에서 귀무 가설이 참이면, 
공화당 지지율만큼의 결과를 얻을 확률은 0.25에 불과한다. 
=&gt; 이 확률은 <code>p-value</code>라고 부른다.<blockquote>
</blockquote>
</li>
</ul>
</li>
<li>일반적인 전략은 사전에 특정 값을 정하고
(.05를 가장 많이 사용 )
p-value값이 이 문턱값보다 낮으면 귀무 가설 기각하고 
대립 가설이 통계적으로 유의한 증거가 있다고 할 수 있다. <blockquote>
</blockquote>
=&gt;가설 검정이 어떤 결론을 내리지는 않는다. 
=&gt; 가설 검정은 데이터에서 발견한 패턴이나 결과가 
단지 잡음으로 생긴 부산물이 아니라 실존하는 현상을 
반영하는지 여부를 정량적으로 고찰할 수단을 제공한다. <blockquote>
</blockquote>
</li>
<li><ul>
<li>전체 모집단 데이터가 있으면 어떻게 할까? **
<code>전체 모집단 데이터가 있을 때도 표준 오차와 신뢰구간과 통계적 유의성이 여전히 의미가 있나?</code><pre><code>=&gt; 표본이 없으므로 이런 도구는 무의미하다. 
=&gt; 잡음도 없다. 
=&gt; 추정치가 바로 추정 대상이다. 
=&gt;  `통계적 추론을 고려할 필요도 없다`
=&gt;그러나,전체 모집단 데이터를 확보했다고 해도, 
잡음의 개념과 이에 관련된 불확실성 척도를 
주목할 충분한 이유가 있다. </code></pre><pre><code>운동 경기의 대표 선수 활동 여부와 학점 사이에 
작은 양의 상관관계를 발견했다고 가정한다. 
=&gt; 이 상관 관계가 어떤 원인으로 발생하는지 아니면 
우연의 일치로 발생하는지 묻는 질문은 여전히 의미가 있다. 
&gt;
=&gt;관찰한 패턴이 우연의 일치인지 아닌지 파악하기에는
통계적 추론과 가설 검정 같은 도구가 여전히 유용하다. 
&gt;
=&gt; 이 문제를 고찰하는 한가지 길은 
이 학교의 모든 재학생 데이터를 갖긴 했지만,
이 대학교를 다녔을지도 모를 학생들까지 포함하는 
훨씬 더 큰 가상의 모집단을 가정하면, 이 학생들은 
단지 작은 표본에 불과하다고 보는 방법이다. 
&gt;
&gt;
커다란 가상의 모집단에는 사실 상관관계가 없다고 
귀무 가설을 세우고, 재학생 데이터로 얻은 상관관계 이상을 
우연히 관찰할 가능성을 질문하면 된다. </code></pre><blockquote>
</blockquote>
</li>
</ul>
</li>
<li><ul>
<li>실질적 유의성 대 통계적 유의성 **</li>
</ul>
</li>
<li>관찰한 현상이 우연한 결과인지 판단하고자 할 때, 
<code>통계적 가설 검정</code>은 대체로 유용하다. </li>
<li><code>통계적 유의성</code>과 <code>실질적 유의성</code>은 다르며, 
이 두가지 개념을 혼용하지 않도록 해야 한다. 
```
[통계적 유의성에 관한 질문]
어떤 현상이 존재하는지 아닌지 파악<blockquote>
</blockquote>
[실질적 유의성에 관한 질문]</li>
<li>그 현상이 얼마나 큰지 작은지</li>
<li>그래서 그 현상이 중요한지 아닌지  <pre><code>=&gt; 통계적으로 유의한 결과가 전부 실질적으로도 유의하다고 가정하면 안된다. 
=&gt; 통계적 추론을 잘 활용하되,동시에 증거로부터 실질적 유의성을 찾도록 항상 유념해야 한다. </code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고 -상관관계는 변이가 있어야 한다]]></title>
            <link>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84%EB%8A%94-%EB%B3%80%EC%9D%B4%EA%B0%80-%EC%9E%88%EC%96%B4%EC%95%BC-%ED%95%9C%EB%8B%A4</link>
            <guid>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84%EB%8A%94-%EB%B3%80%EC%9D%B4%EA%B0%80-%EC%9E%88%EC%96%B4%EC%95%BC-%ED%95%9C%EB%8B%A4</guid>
            <pubDate>Wed, 14 Feb 2024 15:08:48 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>[데이터 분석과 비판적 사고]을 읽고 -상관관계는 변이가 있어야 한다</strong></p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> <strong>상관관계는 변이가 있어야 한다</strong></p>
</blockquote>
<ul>
<li>두 변수의 상관관계는 변이가 없다면 알아낼 수 없다. </li>
<li>사람들은 변이 없이 상관관계를 주장하는 함정에 빠진다. 
=&gt;<code>종속 변수의 취사 선택</code>의 방식의 실수를 저지르는데,
어떤 현상이 일어난 경우만 살펴보고 그 현상이 일어나지 않은 경우와는 비교하지 않는 오류다. <blockquote>
</blockquote>
<pre><code>상관관계에 변이가 필요하다
&gt;
=&gt; 두 변수가 상관관계가 있는지 알려면 양쪽 변수에서 
변이를 관찰해야 한다.
&gt;</code></pre><blockquote>
</blockquote>
사람들이 변이 없이 상관관계를 수립하려고 하는 이유
1.<code>종속 변수</code>의 취사선택
2.<code>제도적 절차</code> 혹은 <code>사람들이 밀어붙임</code><blockquote>
</blockquote>
종속 변수의 취사 선택 
어떤 현상을 설명하거나 예측하고자 할 때, 
과거에 일어난 같은 현상을 먼저 살펴보려는 충동 
=&gt; 종속 변수의 변이를 살펴보는 대신 
종속 변수의 값을 근거로 살펴볼 사례를 선택하는 실수 <blockquote>
</blockquote>
<pre><code>함정에 빠지지 않으려면 양적 분석을 하는지 아니면 
단지 주어진 증거에 관해 편하게 생각해 보려는지 
주의를 기울여야 한다. 
</code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고 -인과관계]]></title>
            <link>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84</link>
            <guid>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EC%9D%B8%EA%B3%BC%EA%B4%80%EA%B3%84</guid>
            <pubDate>Wed, 14 Feb 2024 14:11:55 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>[데이터 분석과 비판적 사고]을 읽고 -인과관계</strong></p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> <strong>인과관계:무엇이며 어디에 쓰이는가?</strong></p>
</blockquote>
<ul>
<li>인과적 효과:어떤 특성이 변화면서 다른 특성에 일으킬 수 있는 변화 </li>
<li>인과관계를 가늠하는 일은 정책과 의사결정에 아주 중요하다.</li>
<li>인과관계는 반사실적 현실들의 비교와 연관이 있다.그러므로 관찰이 불가능하다. 
하지만 특정한 상황에서는 데이터를 활용해서 유추할 수 있다. <blockquote>
</blockquote>
</li>
<li>*인과 추론의 근본적인 문제 </li>
<li>*어떤 시점에 한 분석 대상은 어떤 일에 있어서 하나의 상태만 관찰할 수 있는 한계다. 
따라서,어떤 일에 있어서 대상의 현재 상태와 다른 상태를 대조해서 대상에 미치는 영향을 관찰할 수 있는데, 
다른 상태는 모두 반사실적이므로 알 수 없다. <blockquote>
</blockquote>
</li>
<li><em>인과적 효과가 관찰 불가능한 대상이라면,
인과적 질문에 대한 해답에 어떻게 다가갈까?*</em>
=&gt; 모든 개별 분석 대상에 미치는 효과를 알 필요가 없는 상황도 많다.
=&gt; 그 대신 여러 대상에 미치는 평균 효과를 알면 된다. 
ex)신약 효과를 검증함때 조치 집단의 평균 건강 상태와 
미조치 집단의 평균 건강 상태를 비교한다. <blockquote>
</blockquote>
</li>
<li><em>평균 효과만으로 인과 추론의 근본적인 문제를 
넘기기 어려운 경우*</em> 
ex)법적 책임을 따지는 상황에는 조건관계 검사라는 과정이 따른다. 
=&gt; 관습법상에서 인과관계는 사실적 원인과 근인이라는 두 조건을 바탕으로 고려한다. 
=&gt; 두 요인 중,근인에 근거하여 인과관계를 해석할 수 있다.<blockquote>
</blockquote>
```</li>
<li>반사실성을 고려하기 시작하면 어떤 일이든 수많은 원인이 생긴다.</li>
<li>또한, 어떤 사건에 아무런 원인이 없을 수 도 있다.</li>
<li>지목된 원인이 지목된 결과보다 대개 먼저 일어난다 </li>
<li>어떤 일이 다른 일보다 먼저 일어났다는 사실 자체만으로는 전자가 후자를 일으켰다고 확신할 수 없다. </li>
<li>인과관계가 시간을 거스를 수 있느냐 없느냐에 상관없이 
인과적 효과는 항상 반사실성 개념으로 정의할 수 있다. <pre><code></code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[데이터 분석과 비판적 사고]을 읽고 -상관관계]]></title>
            <link>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84</link>
            <guid>https://velog.io/@sooyeon_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B3%BC-%EB%B9%84%ED%8C%90%EC%A0%81-%EC%82%AC%EA%B3%A0%EC%9D%84-%EC%9D%BD%EA%B3%A0-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84</guid>
            <pubDate>Tue, 13 Feb 2024 13:03:13 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>[데이터 분석과 비판적 사고]을 읽고 -상관관계</strong></p>
</blockquote>
<h1 id=""><img src="https://velog.velcdn.com/images/sooyeon_/post/3ff24ff7-bde7-4f33-9df4-94dd6b69334e/image.png" alt=""></h1>
<blockquote>
</blockquote>
<hr>
<blockquote>
<p> <strong>상관관계:무엇이며 어디에 쓰이는가?</strong>
상관관계:두가지 특성이 함께 일어나는 경향의 크기 
상관관계를 측정하려면 두가지 특성이 모두 변하는 데이터를 구해야 한다. 
상관관계는 관계 서술과 예측,인과 추론에 사용할 수 있다. 
상관관계는 선형관계에 국한되지만,생각보다 활용도가 높다. </p>
</blockquote>
<p>** 1.상관관계란 무엇인가? 
**두 특성이 함께 일어나는 경향의 크기</p>
<blockquote>
<blockquote>
<ul>
<li>두 특성이 함께 일어나는 경향이 있으면 <code>양의 상관관계</code></li>
<li>한 특성의 발생이 다른 특성의 발생과 관련이 없으면 <code>상관관계가 없다</code></li>
<li>한 특성이 일어나면 다른 특성이 안 일어나는 경향이 있다면 <code>음의 상관관계</code></li>
</ul>
</blockquote>
</blockquote>
<p>*<em>2.상관관계 그래프에서 특징을 어떻게 수치화할까?
*</em>=&gt; 기울기 =&gt; 데이터의 최적합선 
(그래프에 그린 선과 데이터의 점들 사이에 평균 거리가 가장 작다) 
=&gt;기울기의 가파르기는 두 변수의 상관관계가 얼마나 강한지 보여준다. </p>
<blockquote>
</blockquote>
<p>*<em>3.상관관계는 어디에 쓰나?
*</em>관계 서술,예측,인과추론</p>
<blockquote>
<blockquote>
</blockquote>
<p>*<em>상관관계를 써서 예측하려면 중요사항을 이해해야 한다. 
*</em>1.표본에서 발견한 관계가 광범위한 현상을 대표할 만한지 or 
데이터에서 우연히 발생한 변이의 결과일뿐인지 여부 
=&gt;이것에 대답하려면 통계적 추론을 써야한다. 
2.실제로 어떤 관계를 표본에서 발견했다고 확신했더라도, 그 표본 자체가 
예측할 대상을 대표할 만한지 잘 생각해봐야한다. 
3.상관관계를 통해 예측할때에는 변수 사이의 관계가 바뀌지 않는지 확인해야 한다 
ex)21년 나이와 투표율과의 관계가 22년 나이와 투표율과의 관계와 대동소이할 것처럼 보여야함.
4.확보한 데이터의 범위를 넘어서는 예측을 할때도 신중해야한다. 
만약 21년 데이터의 나이는 18-88세,예측 할 나이가 100세라면 기존 데이터에 100세 데이터가 없으므로 주의해야함 
5.최적합선의 기울기 같은 통계를 활용해,뭔가 예측할 때는 
변수들의 관계가 진짜 선형인지도 생각해봐야 한다.</p>
</blockquote>
<p>*<em>4.상관관계 측정 
*</em>공분산,상관계수,회귀선(기울기)이다. </p>
<blockquote>
</blockquote>
<p>*<em>5.공분산과 상관계수 
*</em></p>
<pre><code>[공분산,상관계수]
공통점: 두 변수 간의 관계를 측정하는 통계적 수단 
차이점
- 공분산: 두 변수 간의 변동성의 방향성만을 제공,관계 강도는 알 수 없다. 
공분산이 양수이면 두변수가 같은방향으로 변하고, 음수이면 반대 방향으로 변한다.
그러나,공분산의 크기는 변수의 단위에 따라 달라지므로,그 절댓값이 얼마나 큰지는 해석하기 어렵다. 
두 변수를 x,y라고 할때 ,모집단의 크기는 n이라고 가정한다. =&gt;(x-평균)*(y-평균) / n 
&gt;
- 상관계수: 두 변수 사이의 선형 관계의 강도와 방향을 -1에서 1사이의 값으로 나타내는 표준화된 지표
상관계수가 1에가까우면 양의 선형 관계,-1에 가까우면 음의 선형관계,
0이면 선형 관계가 없음을 의미한다. 
상관계수는 공분산을 두 변수의 분산의 곱으로 나눈 값 =&gt; 공분산을 표준 편차의 곱으로 나눠 정규화 </code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[LeetCode/SQL] 262. Trips and Users]]></title>
            <link>https://velog.io/@sooyeon_/LeetCodeSQL-262.-Trips-and-Users-ehl28f4z</link>
            <guid>https://velog.io/@sooyeon_/LeetCodeSQL-262.-Trips-and-Users-ehl28f4z</guid>
            <pubDate>Tue, 16 Jan 2024 12:11:01 GMT</pubDate>
            <description><![CDATA[<h2 id="leetcodesql">[LeetCode/SQL]</h2>
<hr>
<h3 id="📌262-trips-and-users">📌262. Trips and Users</h3>
<h3 id="문제"><a href="https://leetcode.com/problems/trips-and-users/description/">문제</a></h3>
<p><img src="https://velog.velcdn.com/images/sooyeon_/post/876e7e55-8990-4c3c-9e68-42d9d28891c5/image.png" alt="">
<img src="https://velog.velcdn.com/images/sooyeon_/post/9252afad-eaa6-4c0a-b25d-58f23a328cd9/image.png" alt=""></p>
<h3 id="풀이">풀이</h3>
<pre><code>- 취소율은 클라이언트 또는 운전자에 의해 취소된 요청 수를 그 날짜에 사용자가 차단되지 않은 총 요청 수로 나누어 계산한다. 

- &quot;2013-10-01&quot;부터 &quot;2013-10-03&quot;까지 각 날짜별로 취소된 요청의 취소율을 출력하라 
-  취소율은 소수점 둘째 자리까지 반올림하여 표시</code></pre><h3 id="방법-i">방법 I</h3>
<pre><code class="language-sql">
WITH cte AS (
    SELECT request_at &#39;Day&#39;
    ,COUNT(*) AS &#39;total&#39;
    ,COUNT(CASE WHEN status LIKE &#39;cancelled%&#39; THEN 1 END) AS &#39;cancel&#39;
    FROM Trips
    WHERE request_at BETWEEN &#39;2013-10-01&#39; AND &#39;2013-10-03&#39;
    AND client_id IN (SELECT users_id 
                      FROM Users
                      WHERE banned=&#39;No&#39; AND role=&#39;client&#39;)
    AND driver_id IN (SELECT users_id
                      FROM users
                      WHERE banned =&#39;No&#39; AND role=&#39;driver&#39;)
    GROUP BY request_at

)

SELECT DAY
       ,ROUND(cancel/total,2) AS &#39;Cancellation Rate&#39;
FROM cte</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[LeetCode/SQL] 185. Department Top Three Salaries]]></title>
            <link>https://velog.io/@sooyeon_/LeetCodeSQL-185.-Department-Top-Three-Salaries</link>
            <guid>https://velog.io/@sooyeon_/LeetCodeSQL-185.-Department-Top-Three-Salaries</guid>
            <pubDate>Tue, 16 Jan 2024 10:24:33 GMT</pubDate>
            <description><![CDATA[<h2 id="leetcodesql">[LeetCode/SQL]</h2>
<hr>
<h3 id="📌-185-department-top-three-salaries">📌 185. Department Top Three Salaries</h3>
<h3 id="문제"><a href="https://leetcode.com/problems/department-top-three-salaries/">문제</a></h3>
<p><img src="https://velog.velcdn.com/images/sooyeon_/post/5a7a94c3-bf18-49f4-9bb8-50a3a7cc08a0/image.png" alt=""><img src="https://velog.velcdn.com/images/sooyeon_/post/364b8a65-9e78-4f8e-9abb-c2f927783e18/image.png" alt=""></p>
<h3 id="풀이">풀이</h3>
<pre><code>각 부서에서 고수입자 top 3 직원을 찾아서 출력하라
</code></pre><h3 id="방법-i">방법 I</h3>
<pre><code class="language-sql">WITH cte AS (
    SELECT 
        d.name AS Department,
        e.name AS Employee,
        salary,
        DENSE_RANK() OVER (PARTITION BY e.departmentId ORDER BY salary DESC) AS salary_rnk
    FROM 
        Employee AS e
    INNER JOIN 
        Department AS d ON e.departmentId = d.id
)

SELECT 
    Department,
    Employee,
    Salary
FROM 
    cte
WHERE 
    salary_rnk &lt;= 3;
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[LeetCode/SQL] 1934. Confirmation Rate]]></title>
            <link>https://velog.io/@sooyeon_/LeetCodeSQL-1934.-Confirmation-Rate</link>
            <guid>https://velog.io/@sooyeon_/LeetCodeSQL-1934.-Confirmation-Rate</guid>
            <pubDate>Tue, 16 Jan 2024 09:49:48 GMT</pubDate>
            <description><![CDATA[<h2 id="leetcodesql">[LeetCode/SQL]</h2>
<hr>
<h3 id="📌--1934-confirmation-rate">📌  1934. Confirmation Rate</h3>
<h3 id="문제"><a href="https://leetcode.com/problems/confirmation-rate/description/">문제</a></h3>
<p><img src="https://velog.velcdn.com/images/sooyeon_/post/528243e7-0cf0-440e-b840-011649000021/image.png" alt=""></p>
<h3 id="풀이">풀이</h3>
<pre><code>- 각 사용자의 확인 비율을 출력하라
- 사용자의 확인 비율은 &#39;확인된&#39; 메시지의 수를 해당 사용자가 요청한 확인 메시지의 총 수로 나눈 것
- 확인 메시지를 요청하지 않은 사용자의 확인 비율은 0으로 처리되어야 한다
- 확인 비율은 소수점 둘째 자리까지 반올림</code></pre><h3 id="방법-i">방법 I</h3>
<pre><code class="language-sql">SELECT s.user_id, 
  ROUND(AVG(IF(c.action=&#39;confirmed&#39;,1,0)),2) as confirmation_rate 
FROM Signups s
LEFT JOIN Confirmations c using (user_id)
GROUP BY s.user_id</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[LeetCode/SQL]  1907. Count Salary Categories]]></title>
            <link>https://velog.io/@sooyeon_/LeetCodeSQL-1907.-Count-Salary-Categories</link>
            <guid>https://velog.io/@sooyeon_/LeetCodeSQL-1907.-Count-Salary-Categories</guid>
            <pubDate>Tue, 16 Jan 2024 09:23:21 GMT</pubDate>
            <description><![CDATA[<h2 id="leetcodesql">[LeetCode/SQL]</h2>
<hr>
<h3 id="📌--1907-count-salary-categories">📌  1907. Count Salary Categories</h3>
<h3 id="문제"><a href="https://leetcode.com/problems/count-salary-categories/">문제</a></h3>
<p><img src="https://velog.velcdn.com/images/sooyeon_/post/005a4299-6a17-4a67-92f2-fa1fcbbdb78f/image.png" alt=""><img src="https://velog.velcdn.com/images/sooyeon_/post/ffd3d6cb-97a5-4e06-a269-0923e5f774b0/image.png" alt=""></p>
<h3 id="풀이">풀이</h3>
<pre><code>- 급여 범주에 따라 각 범주에 속하는 은행 계좌 수 출력 - &quot;Low Salary,&quot; :20000 이하
- &quot;Average Salary,&quot; :20000이상 50000 이하
-&quot;High Salary&quot; : 50000 초과 
- 만약 해당 범주에 속하는 계좌가 없으면 0을 반환</code></pre><h3 id="방법-i">방법 I</h3>
<pre><code class="language-sql">WITH SalaryCategories AS (
    SELECT
        &#39;Low Salary&#39; AS category,
        COUNT(*) AS accounts_count
    FROM Accounts
    WHERE income &lt; 20000

    UNION ALL

    SELECT
        &#39;Average Salary&#39; AS category,
        COUNT(*) AS accounts_count
    FROM Accounts
    WHERE income BETWEEN 20000 AND 50000

    UNION ALL

    SELECT
        &#39;High Salary&#39; AS category,
        COUNT(*) AS accounts_count
    FROM Accounts
    WHERE income &gt; 50000
)

SELECT
    category,
    COALESCE(accounts_count, 0) AS accounts_count
FROM SalaryCategories;
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[LeetCode/SQL] 1393. Capital Gain/Loss]]></title>
            <link>https://velog.io/@sooyeon_/LeetCodeSQL-570.-Managers-with-at-Least-5-Direct-Reports-hqxlt0yi</link>
            <guid>https://velog.io/@sooyeon_/LeetCodeSQL-570.-Managers-with-at-Least-5-Direct-Reports-hqxlt0yi</guid>
            <pubDate>Tue, 16 Jan 2024 08:40:42 GMT</pubDate>
            <description><![CDATA[<h2 id="leetcodesql">[LeetCode/SQL]</h2>
<hr>
<h3 id="📌--1393-capital-gainloss">📌  1393. Capital Gain/Loss</h3>
<h3 id="문제"><a href="https://leetcode.com/problems/capital-gainloss/description/">문제</a></h3>
<p><img src="https://velog.velcdn.com/images/sooyeon_/post/bc3318f6-ba1e-419d-a1ad-07e814aa4134/image.png" alt=""><img src="https://velog.velcdn.com/images/sooyeon_/post/424fa46b-5492-4553-ab95-d5568d11dd64/image.png" alt=""></p>
<h3 id="풀이">풀이</h3>
<pre><code>주식의 매수 및 매도 거래를 확인하고, 
각 거래에 대한 이익/손실을 계산한 다음 주식별로 합산하여 출력하라 </code></pre><h3 id="방법-i">방법 I</h3>
<p>(WITH 문)</p>
<pre><code class="language-sql">WITH loss AS (
    SELECT stock_name 
           ,SUM(price) AS loss
    FROM Stocks
    WHERE operation =&#39;Buy&#39;
    GROUP BY stock_name
),
gain AS (
    SELECT stock_name
           ,SUM(price) AS gain
    FROM Stocks
    WHERE operation=&#39;Sell&#39;
    GROUP BY stock_name
)

SELECT loss.stock_name
       ,gain.gain -loss.loss AS capital_gain_loss


FROM loss
INNER JOIN gain ON loss.stock_name=gain.stock_name
GROUP BY loss.stock_name</code></pre>
<h3 id="방법-ii">방법 II</h3>
<p>(집계)</p>
<pre><code class="language-sql">SELECT stock_name
      SUM(CASE WHEN operation=&#39;Sell&#39; THEN price ELSE -price END) AS capital_gain_loss
FROM Stocks
GROUP BY stock_name</code></pre>
<h3 id="방법-iii">방법 III</h3>
<p>(window 함수)</p>
<pre><code class="language-sql">SELECT DISTINCT stock_name
      ,SUM(CASE WHEN operation=&#39;Sell&#39; THEN price ELSE -price END)
      OVER (PARTITION BY stock_name) AS capital_gain_loss
FROM Stocks</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[LeetCode/SQL] 1341. Movie Rating]]></title>
            <link>https://velog.io/@sooyeon_/LeetCodeSQL-1341.-Movie-Rating</link>
            <guid>https://velog.io/@sooyeon_/LeetCodeSQL-1341.-Movie-Rating</guid>
            <pubDate>Tue, 16 Jan 2024 07:25:41 GMT</pubDate>
            <description><![CDATA[<h2 id="leetcodesql">[LeetCode/SQL]</h2>
<hr>
<h3 id="📌--1341-movie-rating">📌  1341. Movie Rating</h3>
<h3 id="문제"><a href="https://leetcode.com/problems/movie-rating/description/">문제</a></h3>
<p><img src="https://velog.velcdn.com/images/sooyeon_/post/a4077584-68f9-40c7-9228-029d69efb02d/image.png" alt=""><img src="https://velog.velcdn.com/images/sooyeon_/post/59d60b19-800a-4f4c-a0e5-990e2813e3ea/image.png" alt=""></p>
<h3 id="풀이">풀이</h3>
<pre><code>5명 이상의 직속 부하 직원이 있는 관리자를 찾아라
</code></pre><h3 id="방법-i">방법 I</h3>
<pre><code class="language-sql">WITH top_user AS (
    SELECT u.name AS results
    FROM Users AS u
    INNER JOIN MovieRating AS m ON u.user_id = m.user_id
    GROUP BY m.user_id
    ORDER BY COUNT(m.user_id) DESC, u.name
    LIMIT 1
),
top_movie AS (
    SELECT m.title AS results
    FROM Movies AS m
    INNER JOIN MovieRating AS r ON m.movie_id = r.movie_id
    WHERE r.created_at LIKE &#39;2020-02-%&#39;
    GROUP BY r.movie_id
    ORDER BY AVG(r.rating) DESC, m.title
    LIMIT 1
)

SELECT results FROM top_user
UNION ALL
SELECT results FROM top_movie;</code></pre>
]]></description>
        </item>
    </channel>
</rss>