ANCOVA-머신러닝

무엇이 안코바입니까?
ANCOVA는 방차분석(ANOVA)과 회귀분석의 결합이다.그것은 인자 방차 분석과 유사하다. 왜냐하면 하나의 자변수 (인자) 를 한 번 고려함으로써 다른 자변수의 영향을 받지 않고 어떤 추가 정보를 얻을 수 있는지 알려줄 수 있기 때문이다.다음과 같은 용도로 사용할 수 있습니다.
  • 다원 회귀의 확장, 다원 회귀선 비교에 사용
  • 방차 분석의 확장.
  • ANCOVA는 일반적으로 베이스라인 그룹 간에 차이가 있을 때(Senn, 1994, Overall, 1993)를 사용하지만 평균값이 테스트 후 측정에 영향을 미칠 때 테스트 전/테스트 후 분석(Bonate, 2000)에도 사용할 수 있다.이런 기술은 비실험 연구(예를 들어 조사)와 준실험(연구 참여자가 무작위로 분배할 수 없을 때)에서도 흔히 볼 수 있다.그러나 항상 이런 특수한 ANCOVA(Vogt, 1999)를 추천하는 것은 아니다.
    다원 회귀 분석
    다원 회귀분석은 변수 집합 사이에 통계적 현저한 관계가 존재하는지 관찰하는 데 쓰인다.그것은 이 데이터 집합의 추세를 발견하는 데 사용된다.
    다원 회귀 분석은 단순 선형 회귀와 거의 같다.단순 선형 회귀와 다원 회귀의 유일한 차이는 회귀에 사용되는 예측 인자('x'변수)의 수량에 있다.
    단순 회귀 분석은 모든 변수'y'에 x 변수를 사용한다.예를 들면 (x1, Y1)입니다.
    다원 회귀는 모든 자변수에 여러 개의'x'변수를 사용한다. (x1)1, (x2)1, (x3)1, Y1).
    단변수 선형 회귀에서 인변수(즉'매출액')와 자변수(즉'이윤')를 입력한다.하지만 다양한 유형의 판매가 복귀에 어떻게 영향을 미치는지에 대해 흥미를 느낄 수도 있다.X1을 하나의 판매 유형으로 설정하고 X2를 다른 판매 유형으로 설정할 수 있습니다.
    다원 회귀의 보급
    다원 회귀의 확장으로 사용할 때 ANCOVA는 모든 회귀선이 서로 다른 Y 간격을 가지고 있는지, 모든 선의 경사율이 같기만 하면 모든 회귀선을 테스트할 수 있다.
    ANCOVA는 회귀 분석과 마찬가지로 인수가 인수에 어떻게 작용하는지 이해할 수 있습니다.ANCOVA는 협동 변수의 어떤 영향도 없앴다. 이것은 네가 연구하고 싶지 않은 변수다.예를 들어 당신은 서로 다른 수준의 교수 기능이 학생들의 수학 성적에 어떻게 영향을 미치는지 연구하고 싶을 수도 있다.학생들을 교실로 무작위로 배정하는 것은 불가능할 수도 있다.너는 서로 다른 반 학생 간의 체계적인 차이(예를 들어 천재 학생과 주류 학생 간의 수학 기능의 초기 수준이 다르다)를 고려해야 한다.
    예.
    너는 우울증에 효과가 있는 신약을 알고 싶을지도 모른다.이 연구는 세 개의 치료팀과 한 개의 대조팀으로 나뉜다.일반적인 방차 분석은 너에게 치료가 효과가 있는지 없는지를 알려줄 수 있다.ANCOVA는 결과에 영향을 미칠 수 있는 다른 요소를 제어할 수 있습니다.예를 들어 가정 생활, 업무 상황 또는 마약.
    방차 분석의 확장
    방차 분석의 확장으로 ANCOVA는 두 가지 방식으로 사용할 수 있다(Leech 등, 2005년).
    비연구 중점의 협동 변수를 제어하다.
    분류 변수와 연속 변수의 조합을 연구하거나 예측 인자로서의 양표 변수를 연구한다.이런 상황에서 협동 변수는 관심 있는 변수입니다. (당신이 통제하고자 하는 변수와 상반됩니다.)
    그룹 내 방차
    ANCOVA는 그룹 내 차이를 설명할 수 있습니다.그것은 방차 분석 테스트에서 해석할 수 없는 방차를 추출하여 혼합 변수(또는 다른 협동 변수)로 해석하려고 한다.너는 여러 가지 가능한 협동 변수를 사용할 수 있다.그러나 당신이 많이 들어갈수록 자유는 줄어든다.약한 협동 변수를 입력하는 것은 좋은 생각이 아니다. 왜냐하면 통계 능력을 떨어뜨리기 때문이다.출력이 낮을수록 테스트 결과에 의존할 수 없다.강협 변수는 상반된 효과가 있다. 그것은 테스트 능력을 증가시킬 수 있다.

    안코바의 가설
    가설과 방차 분석 가설은 기본적으로 같다.테스트를 실행하기 전에 다음 항목이 정확한지 확인하십시오.
    인수(최소 2개)는 분류 변수여야 합니다.
    변수와 협동 변수는 연속 변수이어야 한다(구간량표 또는 비율량표에서 측정)
    관찰이 독립적임을 확보하다.다시 말하면 사람을 여러 조로 나누지 마라.
    소프트웨어는 일반적으로 다음과 같은 가설을 검사할 수 있다.
    정태성: 모든 자변수의 인변수는 대체적으로 정태이어야 한다.
    데이터는 방차의 동질성을 보여야 한다.
    협동 변수와 인 변수(각 자변수 수준에서)는 선형으로 관련되어야 한다.
    X의 각 값에 대해 데이터는 Y의 등거리여야 합니다.
    협동변수와 자변수는 상호 작용해서는 안 된다.다시 말하면 회귀사율은 균일해야 한다.

    분류 인수 또는 계수가 있는 다원 회귀: 합방차 분석(ANCOVA)


    협방차분석(ANCOVA)은 방차분석과 선형 회귀를 혼합한 선형 모델이다.ANCOVA는 변수(DV)의 총체적 평균치가 일반적으로 치료라고 부르는 분류자변량(IV) 수준에서 동일한지 평가하면서 다른 중요하지 않은 정량이나 연속변수(CV)라고 불리는 다른 영향을 통계적으로 통제한다.
    이제 우리는 예를 통해 이 점을 이해합시다.
    1단계: 데이터 세트를 읽고 원하는 라이브러리를 가져옵니다.
    import pandas as pd
    import matplotlib.pyplot as plt
    %matplotlib inline
    import seaborn as sns
    
    try:
        df = pd.read_csv("../datasets/salary_table.csv")
    except:
        url = 'https://github.com/duchesnay/pystatsml/raw/master/datasets/salary_table.csv'
        df = pd.read_csv(url)
    
    print(df.head())
    
    2단계: 정태성 테스트 p값을 계산한다.
    import statsmodels.formula.api as smf
    import statsmodels.stats.api as sms
    
    lm = smf.ols('salary ~ experience', df).fit()
    df["residuals"] = lm.resid
    
    print("Normality test p-value %.5f" % sms.jarque_bera(lm.resid)[1])
    
    ax = sns.displot(df, x='residuals', kind="kde", fill=True)
    ax = sns.displot(df, x='residuals', kind="kde", hue='management', fill=True)
    
    출력 후, 잔차의 정태적 가설이 거부될 수 있음을 볼 수 있습니다. (p값 <0.05)관리 요소의 영향을 고려해야 한다.
    3단계:단방향 안코바
  • 방차분석: 하나의 분류 자변수, 즉 하나의 인자.
  • ANCOVA: 일부 협동 변수의 방차 분석을 가지고 있다.
  • import statsmodels.api as sm
    oneway = smf.ols('salary ~ management + experience', df).fit()
    df["residuals"] = oneway.resid
    sns.displot(df, x='residuals', kind="kde", fill=True)
    print(sm.stats.anova_lm(oneway, typ=2))
    print("Normality test p-value %.3f" % sms.jarque_bera(oneway.resid)[1])
    
    잔차 분포는 여전히 정적 분포가 아니지만 정적 분포에 더욱 가깝다.관리와 경험은 모두 임금과 현저한 관련이 있다.
    4단계:
    양방향 A(C)란
    두 가지 분류 인수가 있는 Ancova, 즉 두 가지 요소입니다.
    twoway = smf.ols('salary ~ education + management + experience', df).fit()
    
    df["residuals"] = twoway.resid
    sns.displot(df, x='residuals', kind="kde", fill=True)
    print(sm.stats.anova_lm(twoway, typ=2))
    
    print("Normality test p-value %.3f" % sms.jarque_bera(twoway.resid)[1])
    
    정태적 가설은 거절될 수 없다.가정해 봐.교육, 관리와 경험은 임금과 현저한 관련이 있다.
    5단계:
    두 네스트된 모델 비교하기
    단방향으로 양방향에 끼워 넣다.두 개의 덧셈 모델을 비교하면 전체 모델의 부가 예측 인자(즉 교육 정도)가 잔차를 현저하게 줄일 수 있는지를 알 수 있다.이런 비교는 사용할 수 있다𝐹 -잔차 테스트:print(twoway.compare_f_test(oneway)) # return F, pval, df쌍방향이 일방향보다 훨씬 좋다
    print(twoway.model.data.param_names)
    
    print(twoway.model.data.exog[:10, :])
    
    
    6단계: 대비 및 사후 테스트
    사후 테스트는 방차 분석의 한 구성 부분이다.네가 방차분석을 사용하여 적어도 세 그룹의 평균수의 상등성을 검증할 때 통계학적 의미를 가진 결과 모든 그룹의 평균수가 상등하지는 않다는 것을 알 수 있다.그러나 방차 분석 결과는 두 그룹의 균일치 간의 어떤 특정한 차이가 현저하다는 것을 확정할 수 없다.실험 오차율을 제어하는 동시에 사후 테스트를 사용하여 여러 그룹의 평균치 간의 차이를 탐색한다.
    ttest_exp = twoway.t_test([0, 0, 0, 0, 1])
    ttest_exp.pvalue, ttest_exp.tvalue
    print(ttest_exp)
    
    # Alternatively, you can specify the hypothesis tests using a string
    twoway.t_test('experience')
    
    # Post-hoc is salary of Master different salary of Ph.D? 
    # ie. t-test salary of Master = salary of Ph.D.
    print(twoway.t_test('education[T.Master] = education[T.Ph.D]'))
    
    코드와 데이터 집합은duchesnay의 노트에서 나온 것이다.인터넷상에서 안코바에 대한 자료가 매우 적기 때문에 그것이 당신을 도울 수 있기를 바랍니다.

    좋은 웹페이지 즐겨찾기