brunch

You can make anything
by writing

C.S.Lewis

by 첨물 Jul 18. 2023

GPT로 데이터 분석 놀이처럼 하기

파이썬을 배우지 않아도 데이터 분석가가 될 수 있는 시대가 되었다.  

치수는 치리자의 기본이거늘 윤,김 정권은 유체이탈 화법으로 국민들을 허탈하게 하는 시간들이다.




연일 퍼붓는 비소식에 최근 이용하기 시작한 GPT4로 강수량 데이터를 분석해보았다. 요즘들어 집중 호우가 특별히 많아졌는가? 아니면 과거와 비슷한 것일까? 매년 강수량은 뭔가 주기성을 가지고 많았다가 적어지는 것을 반복하는가?


일단 연도별 강수량 데이터를 공공데이터 포털을 통해 받아서 GPT4에 업로드시켜 보았다.


연도별 강수량을 boxplot으로 보여줘


스스로 데이터를 분석하더니만 아래와 같은 그래프를 보여주었다.

그래프의 한글이 깨져 나왔다. X축은 연도, Y축은 강수량이다.




각 연도별 강수량 분포를 보여주는 boxplot을 생성했습니다. 이 그래프는 각 연도의 강수량이 어떻게 분포하는지를 보여줍니다. Boxplot의 각 상자는 각 연도의 강수량의 사분위수를 나타내며, 박스의 중간값은 중앙값(또는 Q2, 2사분위수)를 나타냅니다. 박스의 상단과 하단은 각각 Q3(3사분위수)와 Q1(1사분위수)를 나타냅니다. 또한, 이상치는 각 연도의 최대 및 최소 강수량을 나타냅니다.


특별히 강수량이 높은해가 언제인지 알려줘  


강수량이 가장 많았던 해는 1990년이며, 그 해의 총 강수량은 2355.5mm였습니다. 이는 제공된 데이터에 따른 결과이며, 실제 기상 조건은 다양한 요인에 따라 달라질 수 있음을 유의해야 합니다


계절별 강수량을 시각화하라


계절별 강수량을 보여주는 바 차트를 생성했습니다. 이 차트는 각 계절에 대한 총 강수량을 보여줍니다. 한국에서는 여름에 가장 많은 강수량을 보이는 것으로 나타났습니다. 이는 한국이 여름철에 장마와 태풍으로 인해 많은 양의 비를 받는 것을 반영하는 것으로 보입니다. 봄과 가을에는 비교적 적은 양의 강수량을 보이며, 겨울은 가장 적은 강수량을 보입니다.


여름 강수량을 연도별로 라인 그래프로 보여주되, 집중 호우가 많은 해가 언제인지 알려줘



여름 강수량이 가장 많았던 해는 1998년이며, 그 해의 여름 강수량은 총 1783.7mm였습니다. 라인 그래프를 통해 각 연도별 여름 강수량의 변화를 확인할 수 있습니다. 그래프는 각 연도의 여름 강수량을 나타내며, 그래프가 상승하는 부분은 강수량이 증가한 연도를, 하강하는 부분은 강수량이 감소한 연도를 나타냅니다. 이는 기후 변화, 기상 패턴, 장마 및 태풍 등 여러 요인에 따라 달라질 수 있습니다.


일단 여기까지 해 보고 호기심이 생겼다.


1. 최근에 여름 강수량이 과거보다 많을까?

2. 강수량이 많고 적은 해가 반복적으로 있는데, 혹시 반복 주기 같은 게 있을까?


위 그래프를 fft 분석하여라



Fast Fourier Transform (FFT) 분석의 결과를 보여주는 그래프를 생성하였습니다. FFT는 시간 도메인에서의 신호를 주파수 도메인으로 변환하는 방법입니다. 이 그래프는 여름 강수량이 어떤 주파수 성분을 가지고 있는지를 보여줍니다.

이 그래프를 해석하는 방법은 다음과 같습니다:  

x축은 주파수를 나타냅니다. 주파수가 높을수록 신호는 더 빠르게 변화합니다.

y축은 해당 주파수 성분의 크기를 나타냅니다. 값이 클수록 해당 주파수 성분이 신호에서 차지하는 비율이 더 큽니다.

따라서, 이 그래프는 강수량 데이터가 어떤 주파수 성분을 가지고 있는지를 보여줍니다. 이를 통해 강수량이 특정 패턴이나 주기를 가지고 변하는지를 파악할 수 있습니다.


연도별 여름철 강수량 그래프를 보고 강수량이 증가하는 주기가 존재하는지 분석해 봐



분석 결과, 가장 높은 주파수 성분이 0Hz에 위치하고 있습니다. 이는 데이터에 주기적인 패턴이 없다는 것을 의미합니다. 즉, 연도별 여름 강수량에는 명확한 주기가 보이지 않습니다.
여기서 0Hz는 변화 없음을 의미하며, 이것은 주파수 분석에서 일반적으로 가장 강한 성분입니다. 이것은 데이터의 전체적인 평균 또는 경향을 나타냅니다. 이 외의 다른 주파수 성분들은 데이터의 변동성을 설명합니다.
이 분석 결과는 주어진 데이터에 대한 것이며, 실제 기후 변화는 다양한 요인에 의해 영향을 받을 수 있습니다. 이 분석을 해석하는 데 있어 추가적인 질문이 있으시면 알려주세요.


2000년대 이후 데이터로 다시 분석해 줘


2000년대 이후의 데이터에 대해 분석을 수행한 결과, 가장 높은 주파수 성분이 여전히 0Hz에 위치하고 있습니다. 이는 2000년 이후의 연도별 여름 강수량에도 명확한 주기가 보이지 않음을 의미합니다.


2010년 이후 데이터로 다시 분석해 줘



2010년대 이후의 데이터에 대해 분석을 수행한 결과, 가장 높은 주파수 성분이 여전히 0Hz에 위치하고 있습니다. 이는 2010년 이후의 연도별 여름 강수량에도 명확한 주기가 보이지 않음을 의미합니다.


여기까지 하고 그만두려고 하다가 좀 더 해보기로 했다.


연도별 여름철 강수량의 평균을 그래프로 보여주고, 우상 향하는지 아니면 규칙성이 없는지 보여줘  


연도별 여름 강수량의 평균을 보여주는 그래프를 생성했습니다.
또한, 선형 회귀 분석을 수행하여 트렌드 라인을 계산했습니다. 계산된 기울기는 약 0.033으로, 이는 시간이 지남에 따라 여름 강수량의 평균이 약간씩 증가하고 있음을 나타냅니다.
그러나, 이 증가 트렌드는 매우 약한 것으로 보입니다. 이는 r-값이 약 0.210으로, 이 값은 강수량과 연도 사이에 약한 상관관계가 있음을 나타냅니다. r-값은 -1에서 1 사이의 값으로, 1은 완벽한 양의 상관관계를, -1은 완벽한 음의 상관관계를, 0은 상관관계가 없음을 나타냅니다. 따라서, 이 데이터는 강수량이 시간이 지남에 따라 체계적으로 증가하거나 감소하는 명확한 패턴을 보이지 않습니다.


겨울철 강수량의 평균을 x축으로 여름철 강수량의 평균을 y축으로 놓고 산점도 그래프를 보여주고, 추세선이 존재하는지 분석해 줘


겨울철 강수량의 평균과 여름철 강수량의 평균 사이의 관계를 나타내는 산점도 그래프를 생성하였습니다. 또한, 이 데이터에 대해 선형 회귀 분석을 수행하여 추세선을 추가하였습니다.
선형 회귀 분석의 결과, 기울기는 약 0.861로, 이는 겨울 강수량이 증가할수록 여름 강수량도 증가하는 경향이 있음을 나타냅니다. 그러나, r-값이 약 0.167로, 이는 겨울 강수량과 여름 강수량 사이에 약한 양의 상관관계가 있음을 나타냅니다.
따라서, 겨울 강수량과 여름 강수량 사이에는 약한 양의 상관관계가 있지만, 이 관계는 매우 약하며, 데이터에는 큰 변동성이 있습니다. 이 분석은 주어진 데이터에 대한 것이며, 실제 기후 변화는 다양한 요인에 의해 영향을 받을 수 있습니다.



음... 뭔가 규칙성을 찾기가 힘들군...

그래서 연도별 서울의 온도 데이터를 받아서 강수량과 관계가 있는지 보려고 다시 데이터를 다운로드하여서 업로드해 보았다.




연도별 기온데이터이다.  연도별 기온과 강수량과의 관계가 있는지 분석해 줘

평균 기온과 여름 강수량 사이의 관계를 나타내는 산점도 그래프를 생성하였습니다. 또한, 이 데이터에 대해 선형 회귀 분석을 수행하여 추세선을 추가하였습니다.
선형 회귀 분석의 결과, 기울기는 약 -1.90로, 이는 평균 기온이 증가할수록 여름 강수량의 평균이 감소하는 경향이 있음을 나타냅니다. 그러나, r-값이 약 -0.24로, 이는 평균 기온과 여름 강수량 사이에 약한 음의 상관관계가 있음을 나타냅니다.
따라서, 평균 기온과 여름 강수량 사이에는 약한 음의 상관관계가 있지만, 이 관계는 매우 약하며, 데이터에는 큰 변동성이 있습니다. 이 분석은 주어진 데이터에 대한 것이며, 실제 기후 변화는 다양한 요인에 의해 영향을 받을 수 있습니다.


마음에 들지 않는다.

월별 기온을 x축으로, 월별 강수량을 y축으로 놓고, 산점도 그래프를 그리고 선형회귀분석해 줘
월별 평균 기온과 월별 평균 강수량 사이의 관계를 나타내는 산점도 그래프를 생성하였습니다. 또한, 이 데이터에 대해 선형 회귀 분석을 수행하여 추세선을 추가하였습니다.
선형 회귀 분석의 결과, 기울기는 약 0.51로, 이는 평균 기온이 증가할수록 강수량의 평균이 증가하는 경향이 있음을 나타냅니다. r-값이 약 0.91로, 이는 평균 기온과 강수량 사이에 매우 강한 양의 상관관계가 있음을 나타냅니다.
따라서, 평균 기온과 강수량 사이에는 강한 양의 상관관계가 있습니다. 이는 기온이 상승할수록 증기압이 증가하여 더 많은 수증기가 대기 중에 포함될 수 있음을 나타냅니다. 이 수증기는 구름과 강수를 형성하는 데 필요한 원료입니다.
이 분석은 주어진 데이터에 대한 것이며, 실제 기후 변화는 다양한 요인에 의해 영향을 받을 수 있습니다. 이 분석을 해석하는 데 있어 추가적인 질문이 있으시면 알려주세요.


드디어 뭔가 상관관계가 높은 그래프를 얻었다. 그러나 생각해 보면 여름철 온도가 높고, 그래서 여름철 강수량이 많다는 너무나 뻔한 결론을 보여주는 그래프였다. 그래서 일단 여름철 온도와 강수량만 초첨을 잡아 분석해 보기로 하였다.



x축을 여름철 평균 온도, y축을 여름철 평균 강수량으로 하여 산점도를 그리고 회귀분석해 줘
여름철 평균 기온과 여름철 평균 강수량 사이의 관계를 나타내는 산점도 그래프를 생성하였습니다. 또한, 이 데이터에 대해 선형 회귀 분석을 수행하여 추세선을 추가하였습니다.
선형 회귀 분석의 결과, 기울기는 약 -2.18로, 이는 평균 기온이 증가할수록 여름 강수량의 평균이 감소하는 경향이 있음을 나타냅니다. 그러나, r-값이 약 -0.365로, 이는 평균 기온과 여름 강수량 사이에 약한 음의 상관관계가 있음을 나타냅니다.
따라서, 평균 기온과 여름 강수량 사이에는 약한 음의 상관관계가 있지만, 이 관계는 매우 약하며, 데이터에는 큰 변동성이 있습니다. 이 분석은 주어진 데이터에 대한 것이며, 실제 기후 변화는 다양한 요인에 의해 영향을 받을 수 있습니다.


이상하다. 여름철 평균 기온이 낮을수록 강수량이 많다. 그러나 다시 생각해 보면 쨍쨍 햇볕이 내리쬐는 날보다 비 오는 날이 기온이 낮기 때문에 이 결과도 뻔한 결론이다.  뭔가 의미 있는 분석을 해 보고 싶어 한 발짝 더 가보기로 하였다



x축을 연도로,  y축을 전년도와 당해연도 강수량의 차이값으로 하는 그래프를 그려줘  

이건 일종의 미분값이다. 즉 전년도 대비 강수량의 증가가 얼마나 있는지 보여주는 것이다. 그럼 여기엔 주기성이 보일까?

이 그래프를 fft 분석하여 주기성이 있는지 분석해 줘
푸리에 변환(Fourier Transform, FFT) 분석을 통해 강수량 차이에 대한 주기성을 분석하였습니다. 그래프에서 볼 수 있듯이, 각 주파수에서의 크기(magnitude)를 나타냅니다.
분석 결과, 가장 높은 크기를 가진 비제로 주파수는 58입니다. 이는 데이터의 주기가 약 2년임을 나타냅니다. 즉, 이 데이터에서는 강수량의 차이가 대략 2년마다 주기를 가지는 것으로 보입니다.


2년마다 강수량이 전년대비 증가한다. 즉 올해 작년대비 강수량이 많았다면 후년이 내년보다 강수량이 많다는 의미?


2년 단위의 월별 강수량의 변화를 x축으로, 2년 단위의 월별 평균 기온을 y축으로 산점도 그래프를 그리고 회귀분석해 줘
선형회귀가 아닌 log 회귀 식으로 다시 분석해 줘

로그-선형 회귀 분석을 통해 2년 단위 월별 평균 강수량과 월별 평균 기온 사이의 관계를 분석하였습니다.
로그-선형 회귀 분석의 결과, 기울기는 약 8.94로, 이는 로그 스케일의 평균 강수량이 증가할수록 평균 기온도 증가하는 경향이 있음을 나타냅니다. 그리고, r-값이 약 0.839로, 이는 로그 스케일의 평균 강수량과 평균 기온 사이에 강한 양의 상관관계가 있음을 나타냅니다.


2년 단위로 강수량이 전년대비 증가했고, 이때 기온도 전년대비 상승했다는 것을 보여주었다.



올해와 같이 강수량이 급격히 많은 날들이 있는 특이점의 빈도수를 분석하는 것이 보다 의미 있어 보여 분석의 방향을 조금 바꾸어 보았다. 일별 강수량보다는 월별 강수량으로 특이점 분석을 하였다.


x축을 연도, y축을 월별 평균 강수량으로 boxplot으로 그래프를 그려줘


연도별 30mm 이상의 강수량의 빈도수를 꺾은선 그래프로 시각화하라
시간에 따라 하루에 100mm 이상의 강수량을 가진 날이 증가하는가?
위 막대그래프는 연도별로 하루 강수량이 100mm 이상인 일수를 보여줍니다. x축은 연도를, y축은 해당 연도에 강수량이 100mm 이상인 일수를 나타냅니다. 각 막대의 색깔은 연도에 따라 달라집니다.
그래프를 보면, 대체로 100mm 이상의 강수량을 가진 날이 시간이 지남에 따라 증가하는 추세를 볼 수 있습니다. 하지만, 이는 연도별로 크게 달라질 수 있으며, 일부 연도에서는 이러한 일이 거의 발생하지 않은 반면, 다른 연도에서는 더 자주 발생하는 것을 볼 수 있습니다.
하루 100mm 이상의 강수량을 가진 날의 빈도수를  1990년도 이후로 막대그래프로 보여주시오
위 그래프를 fft 분석하여 주기성이 있는지 분석하시오
위 그래프는 연도별로 하루 강수량이 100mm 이상인 일수의 빈도에 대한 고속 푸리에 변환 (FFT) 결과를 보여줍니다.
x축은 주파수(1/년)를, y축은 FFT의 크기를 나타냅니다. 그래프에서 볼 수 있듯이, 일부 주파수에서 FFT의 크기가 큰 값을 가지고 있습니다. 이는 해당 주파수(즉, 해당 주기)에서 데이터에 주기성이 있음을 나타냅니다.
1970년에서 1990년대까지 하루 100mm 이상의 강수량을 가진 날의 빈도수보다 1990년에서 2022년까지 하루 100mm 이상의 강수량을 가진 날의 빈도수가 통계적으로 증가했는지 분석하시오.


t-검정을 사용하여 1970년에서 1990년까지와 1990년에서 2022년까지의 두 시기 동안 하루 강수량이 100mm 이상인 일수의 평균을 비교했습니다.
계산된 t-통계량은 약 -3.14이며, 이에 대한 p-값은 약 0.003입니다. 일반적으로 p-값이 0.05 이하일 경우, 두 그룹 간의 차이가 통계적으로 유의미하다고 판단합니다. 여기서 p-값이 0.003이므로, 1970년에서 1990년까지와 1990년에서 2022년까지의 두 시기 동안 하루 강수량이 100mm 이상인 일수의 평균은 통계적으로 유의미하게 차이가 있다고 할 수 있습니다.
따라서, 이 결과는 1990년에서 2022년까지의 기간 동안 하루 강수량이 100mm 이상인 일수가 1970년에서 1990년까지의 기간에 비해 통계적으로 유의미하게 증가했다는 것을 의미합니다.
위 분석을 box plot으로 보여주고, 유의차 있는 부분을 표현해 주시오.
위의 박스 플롯은 두 시기, 즉 1970년에서 1990년까지와 1990년에서 2022년까지의 각각에 대한 하루 강수량이 100mm 이상인 일수의 분포를 보여줍니다.
박스 플롯의 중앙선은 각 기간의 중앙값(50번째 백분위수)을 나타내며, 박스의 위쪽과 아래쪽 가장자리는 각각 75번째 백분위수(Q3)와 25번째 백분위수(Q1)를 나타냅니다. 박스의 높이는 IQR(Interquartile range, Q3 - Q1)를 나타내며, 이는 데이터의 중간 50% 범위를 나타냅니다. '수염'은 일반적으로 데이터의 전체 범위를 나타내며, 이상치는 별도의 점으로 표시됩니다.
위의 그래프에서 볼 수 있듯이, 1990년에서 2022년까지의 기간 동안 하루 강수량이 100mm 이상인 일수의 평균은 1970년에서 1990년까지의 기간에 비해 통계적으로 유의미하게 높습니다. 이를 나타내기 위해, p-값을 그래프에 표시했습니다. 이 p-값은 두 기간 동안 강수량 분포가 통계적으로 유의미하게 다르다는 것을 보여줍니다.



여기까지 분석하니, 한 번에 GPT4에게 물어보는 질문의 수가 다했는지 GPT3.5로 넘어가버렸다.


어쨌든 결론은 과거 1970년~1990년 보다 1990년~2022년까지 100mm 이상 비가 오는 날이 많아졌다는 것이다. 치리자는 이와 같은 통계적 데이터 분석 내용을 바탕으로 기후 변화 대책을 세우고, 치수 정책에 좀 더 국민의 세금을 많이 써야 할 것이다.


이상으로 GPT4가 파이썬으로 데이터를 알아서 분석해 가면서 내가 묻는 질문을 통해 의미 있는 분석결과를 만들어냈다.


이제는 파이썬 코딩 능력보다 의미 있는 질문과 아이디어가 더 필요한 세상이 되었다.
앞으로는 암기 위주가 아닌 폭넓은 사고력과 통찰력이 더 필요로 하는 세상에서 AI와 같이 살아가게 될 것이다.


 

매거진의 이전글 ChatGPT의 미래. 대한민국 제조업에서 답을 찾자
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari