Python, NumPy 및 통계를 사용하여 피어슨 상관관계 및 유의성 계산

2024-05-14

파이썬, NumPy 및 통계를 사용하여 피어슨 상관관계 및 유의성 계산

본 코드를 실행하려면 다음 라이브러리가 설치되어 있어야 합니다.

  • statistics: 파이썬 표준 라이브러리의 모듈로, 통계 계산 함수를 제공합니다.

코드

import numpy as np
from scipy import stats

# 데이터 세트
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

# 피어슨 상관 계수 계산
correlation, p_value = stats.pearsonr(x, y)

# 결과 출력
print("피어슨 상관 계수:", correlation)
print("유의성 p-value:", p_value)

설명

  1. 라이브러리 임포트: 먼저 NumPy와 statistics 라이브러리를 코드에 임포트합니다.
  2. 데이터 세트 준비: xy라는 두 NumPy 배열에 데이터를 저장합니다. 이 배열은 서로 동일한 길이여야 합니다.
  3. 피어슨 상관 계수 계산: stats.pearsonr 함수를 사용하여 두 변수 간의 피어슨 상관 계수를 계산합니다. 이 함수는 두 개의 값을 반환합니다. 첫 번째 값은 상관 계수이고, 두 번째 값은 유의성 p-value입니다.
  4. 결과 출력: 상관 계수와 p-value를 콘솔에 출력합니다.

해석

  • 상관 계수: -1에서 1 사이의 값을 가집니다. 0에 가까울수록 상관관계가 약하고, 1 또는 -1에 가까울수록 강한 선형적 상관관계가 됩니다. 부호는 방향을 나타냅니다. 즉, 양의 값은 두 변수가 함께 증가하는 경향이 있음을, 음의 값은 반대로 감소하는 경향이 있음을 나타냅니다.
  • 유의성 p-value: p-value는 귀하가 관찰한 상관관계가 우연히 발생할 가능성을 나타냅니다. 일반적으로 p-value가 0.05보다 작으면 상관관계가 통계적으로 유의하다고 간주됩니다.

예시

위 코드에서 출력된 결과는 다음과 같습니다.

피어슨 상관 계수: 0.8165366271871889
유의성 p-value: 0.06593466202225124

이 결과는 x와 y 사이에 양의 상관관계가 있으며, 유의 수준 0.05에서 통계적으로 유의하다는 것을 의미합니다. 즉, 두 변수가 함께 증가하는 경향이 있으며, 이는 우연히 발생할 가능성이 낮습니다.

주의 사항

  • 피어슨 상관관계는 두 변수 간의 선형적 관계만 측정합니다. 비선형 관계는 감지하지 못할 수 있습니다.
  • 이상치가 있는 데이터 세트에는 피어슨 상관관계가 민감할 수 있습니다.
  • 두 변수의 척도가 서로 다르면 피어슨 상관관계 해석이 어려울 수 있습니다.



예제 코드: 변수 선택 및 모델 훈련

import numpy as np
import pandas as pd
from scipy import stats

# 데이터 불러오기
data = pd.read_csv('data.csv')

# 변수 선택
x = data['변수1']
y = data['변수2']

# 피어슨 상관 계수 계산
correlation, p_value = stats.pearsonr(x, y)

# 결과 출력
print("피어슨 상관 계수:", correlation)
print("유의성 p-value:", p_value)

이 코드는 다음과 같은 작업을 수행합니다.

  1. pandas를 사용하여 CSV 파일에서 데이터를 불러옵니다.
  2. 분석할 두 변수를 선택합니다.
  3. stats.pearsonr 함수를 사용하여 상관 계수와 p-value를 계산합니다.
  4. 결과를 콘솔에 출력합니다.

변수 선택

본 예제에서는 data['변수1']data['변수2']를 선택하여 분석했습니다. 실제 코드에서는 분석에 사용할 변수를 적절하게 선택해야 합니다. 일반적으로 다음과 같은 요소를 고려하여 변수를 선택합니다.

  • 관련성: 선택된 변수는 분석 대상 문제와 관련이 있어야 합니다.
  • 정보량: 선택된 변수는 모델에 유용한 정보를 제공해야 합니다.
  • 다중 공선성: 선택된 변수 간에 높은 다중 공선성이 없어야 합니다.

모델 훈련

피어슨 상관 계수는 두 변수 간의 선형적 관계를 나타내는 지표일 뿐입니다. 변수 간의 관계가 비선형적일 수도 있으므로, 모델 훈련 과정에서 이를 고려해야 합니다.

선형 회귀 모델을 훈련하려면 다음과 같은 코드를 사용할 수 있습니다.

from sklearn.linear_model import LinearRegression

# 모델 생성
model = LinearRegression()

# 모델 훈련
model.fit(x[:, np.newaxis], y)

# 예측값 계산
y_pred = model.predict(x[:, np.newaxis])
  1. sklearn.linear_model에서 LinearRegression 클래스를 불러옵니다.
  2. 모델 인스턴스를 생성합니다.
  3. fit 메서드를 사용하여 모델을 훈련합니다.
  4. predict 메서드를 사용하여 예측값을 계산합니다.



피어슨 상관 계수 계산을 위한 대체 방법

NumPy의 cov 및 corrcoef 함수 사용

NumPy 라이브러리는 다음과 같은 함수를 제공하여 공분산과 상관 계수를 직접 계산할 수 있도록 합니다.

  • cov: 두 배열의 공분산을 계산합니다.
  • corrcoef: 두 배열 간의 상관 계수 행렬을 계산합니다.
import numpy as np

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

# 공분산 계산
covariance = np.cov(x, y)[0, 1]

# 상관 계수 계산
correlation = np.corrcoef(x, y)[0, 1]

print("공분산:", covariance)
print("상관 계수:", correlation)

Pandas의 corr() 함수 사용

Pandas 라이브러리는 데이터프레임에서 상관 계수를 계산하는 corr() 함수를 제공합니다.

import pandas as pd

# 데이터 세트 준비
data = pd.DataFrame({'변수1': [1, 2, 3, 4, 5], '변수2': [2, 4, 5, 4, 5]})

# 상관 계수 계산
correlation = data['변수1'].corr(data['변수2'])

print("상관 계수:", correlation)

SciPy의 stats 모듈에서 pearsonr 함수를 사용하여 피어슨 상관 계수와 유의성 p-value를 함께 계산할 수 있습니다.

from scipy import stats

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

# 상관 계수 및 유의성 p-value 계산
correlation, p_value = stats.pearsonr(x, y)

print("피어슨 상관 계수:", correlation)
print("유의성 p-value:", p_value)

선택 방법

사용할 방법은 개인의 선호와 상황에 따라 다릅니다. NumPy의 함수는 가장 기본적이지만 직접 계산해야 합니다. Pandas의 corr() 함수는 데이터프레임에서 작업할 때 편리하며, SciPy의 pearsonr 함수는 상관 계수와 유의성 p-value를 함께 제공합니다.


python numpy statistics


Python에서 리스트의 모든 순열 생성하기

Python에서 리스트의 모든 순열을 생성하는 데에는 여러 가지 방법이 있습니다. 가장 일반적인 두 가지 방법은 다음과 같습니다.재귀 알고리즘은 함수가 자기 자신을 호출하는 알고리즘입니다. 순열을 생성하는 데 사용할 수 있는 재귀 함수는 다음과 같습니다...


SQLAlchemy 오류 해결: get object not bound to a Session

개체가 아직 세션에 연결되어 있지 않음: 개체를 가져오기 전에 세션에 추가해야 합니다.개체가 삭제되었음: 개체가 이미 삭제된 경우 가져올 수 없습니다.오래된 개체 참조: 이미 삭제된 개체를 참조하는 경우 오류가 발생할 수 있습니다...


판다스 데이터프레임에서 조건식을 기반으로 행 삭제하기

먼저, Pandas 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.데이터 준비:다음 예제에서는 'data. csv'라는 이름의 CSV 파일을 사용하여 데이터프레임을 만듭니다. CSV 파일에 'name', 'age', 'city'라는 세 열이 포함되어 있다고 가정합니다...


행렬-벡터 곱셈: NumPy vs. 리스트 내포 vs. for 루프

행렬-벡터 곱셈은 행렬과 벡터를 곱하여 다른 벡터를 생성하는 연산입니다. 행렬의 행의 개수가 벡터의 원소 개수와 같아야만 행렬-벡터 곱셈을 수행할 수 있습니다.NumPy에서 행렬-벡터 곱셈을 수행하는 방법에는 두 가지가 있습니다...


PyTorch 연산에서 NaN 감지: 심층 분석 및 실용적인 해결 방법

torch. isnan() 함수 사용:출력:사용자 정의 함수 사용:NaN 값 처리 방법:NaN 값을 감지한 후에는 다음과 같은 방법으로 처리할 수 있습니다.제거: torch. where() 함수를 사용하여 NaN 값을 다른 값으로 바꾸거나 제거합니다...


python numpy statistics