ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL - 05.22
    TIL 2024. 5. 22. 22:16

    많은 컬럼의 unique값 구하고 그 그래프를 그리는 방법 2가지

    더보기
    list = ['Mortgage Loan','Not Specified', 'Personal Loan', 'Student Loan','Debt Consolidation Loan','Auto Loan', 'Payday Loan','Credit-Builder Loan', 'Home Equity Loan']
    # 에 대해 1개 이상이면 T / F
    
    
    def seg(col) : 
        for i in col :
            bank[i]=np.where(bank[i]<1, 0, 1)
    seg(list)
    
    bank002 = bank.groupby(['Mortgage Loan','Not Specified', 'Personal Loan', 'Student Loan','Debt Consolidation Loan','Auto Loan', 'Payday Loan','Credit-Builder Loan', 'Home Equity Loan'],as_index = False)['Customer_ID'].nunique()
    T = 0
    for i in list : 
        T += bank002[bank002[i] == 1]['Customer_ID'].sum()
        print(f"'{i}' : [{bank002[bank002[i] == 1]['Customer_ID'].sum()}],")
    print(f"'None' : [{5704}]")
    bank002 = bank.groupby('Customer_ID',as_index = False)[['Mortgage Loan','Not Specified', 'Personal Loan', 'Student Loan','Debt Consolidation Loan','Auto Loan', 'Payday Loan','Credit-Builder Loan', 'Home Equity Loan']].sum()
    
    bank002
    T = 0
    for i in list : 
        T += bank002[bank002[i] == 4][i].sum()//4
        print(f"'{i}' : [{bank002[bank002[i] == 4][i].sum()//4}],")
    print(f"'None' : [{5704}]")
    
    # bank002[bank002['Mortgage Loan'] == 4]['Mortgage Loan'].sum()//4

     

    'Mortgage Loan' : [3920],

    'Not Specified' : [3960],

    'Personal Loan' : [3888],

    'Student Loan' : [3880],

    'Debt Consolidation Loan' : [3880],

    'Auto Loan' : [3820],

    'Payday Loan' : [3993],

    'Credit-Builder Loan' : [3966],

    'Home Equity Loan' : [3925],

    'None' : [35232] = T

     

     

    data = {'Mortgage Loan' : [3920],'Not Specified' : [3960],'Personal Loan' : [3888],'Student Loan' : [3880],'Debt Consolidation Loan' : [3880],'Auto Loan' : [3820],'Payday Loan' : [3993],'Credit-Builder Loan' : [3966],'Home Equity Loan' : [3925], 'None' : [35232]}
    data1 = pd.DataFrame(data)
    data1.T
    
    # # 데이터프레임 생성
    data1 = pd.DataFrame(data)
    
    plt.bar(data1.T.index, data1.T[0])
    data = {
        'Loan Type': ['Mortgage Loan', 'Not Specified', 'Personal Loan', 'Student Loan', 'Debt Consolidation Loan', 'Auto Loan', 'Payday Loan', 'Credit-Builder Loan', 'Home Equity Loan', 'None'],
        'Count': [3920, 3960, 3888, 3880, 3880, 3820, 3993, 3966, 3925, 5704]
    }
    
    # 데이터프레임 생성
    data1 = pd.DataFrame(data)
    
    # 막대 그래프 그리기
    plt.figure(figsize=(12, 6))
    plt.bar(data1['Loan Type'], data1['Count'], color='skyblue')
    plt.xlabel('Loan Type')
    plt.ylabel('Count')
    plt.title('Loan Distribution')
    plt.xticks(rotation=45, ha='right')  # x축 레이블 각도 조정
    plt.tight_layout()  # 레이아웃 조정
    plt.show()

     

     

     

    [회귀분석] 결정계수(R²; Coefficient of Determination) :: 간토끼 DataMining Lab (tistory.com)

     

    [회귀분석] 결정계수(R²; Coefficient of Determination)

    Review 참고 포스팅 : 2020/09/27 - [Statistics/Regression Analysis] - [회귀분석] ANOVA(분산분석)를 이용한 회귀분석 접근 (1) - 제곱합(Sum of Squares) 2020/09/29 - [Statistics/Regression Analysis] - [회귀분석] ANOVA(분산분석)

    datalabbit.tistory.com

    더보기

    다시 생각해보면 R²은 SSR이 모형 전체에서 차지하는 비중이 클수록 커질 것입니다.
    만약 이게 과학에서의 실험 등과 같이 반응변수 Y를 설명할 수 있는 X가 어떤 게 있는지 명확하고, 이러한 X들을 통제할 수 있다고 하면 SSR은 당연히 크게 나올 것입니다.

    하지만 사회과학에서의 연구는 그렇지 못한 경우가 많습니다.
    예를 들어 반응변수 Y가 소득이라고 가정하면, 소득을 설명하는 변수는 너무나 많습니다.

    나이가 10대, 60대 이상에 비해 30, 40대일 때 소득이 더 높다는 점에서 나이도 중요한 변수일 수 있고,
    물가가 높을수록 소득이 높아질 수도 있고, 근로 시간이나 학력 수준 등 소득에 영향을 미치는 변수는 너무나 많습니다.

    사회과학에서의 연구는 모든 변수를 완전히 통제할 수 없다는 점에서 완벽한 연구는 불가능합니다.
    우리가 알지 못하는 미지의 외부 요인들도 많을 것이고요.

    그렇기에 만약 소득을 예측하는 회귀모형을 구성할 때 이러한 설명변수를 모두 포함하지 못한 채 분석을 한다면,
    변수들 간의 관계는 통계적으로 유의하게 도출될 수 있으나, 정작 R² 값은 생각보다 낮을 수 있습니다. (0.1 ~ 0.3)

    또한 시간이 지날수록 과거에 비해 상승하는 Trend를 가진 물가, GDP 등의 거시경제지표의 경우,
    별 다른 노력을 하지 않고 '시계열자료'를 썼다는 이유만으로 회귀모형의 R² 값은 0.99 이렇게 나올 수도 있습니다.

    만약 예측을 중요시하는 머신러닝이라면 일반적으로 반응변수가 연속형 변수일 때 모형의 성능을 평가하는 지표로 R²를 사용합니다.

    그러나 해석을 중요시하는 사회과학 등의 경우, Y를 얼마나 잘 예측하는지에만 기초하여 모형을 평가해서는 안 됩니다.
    예를 들면 회귀계수의 부호(Sign) 및 크기, 통계적 유의성 및 해석적인 관점에서의 유의미함, 추정의 정확성, 모형에 포함되지 않은 외부 요인 등을 고려해서 R²를 적절히 사용해야 합니다.

    'TIL' 카테고리의 다른 글

    TIL - 05.24  (0) 2024.05.27
    TIL - 05.23  (0) 2024.05.24
    TIL - 05.21  (0) 2024.05.21
    TIL - 05.20  (0) 2024.05.20
    TIL*2 - 05.17,9  (0) 2024.05.20
Designed by Tistory.