2017-01-05 5 views
-1

저는 python을 처음 사용하고 간단한 선형 회귀를 계산하려고합니다. 내 모델에는 하나의 종속 변수와 하나의 독립 변수가 있습니다. sklearn 패키지에서 linear_model.LinearRegression()을 사용하고 있습니다. 저는 R square 값이 .16 입니다. 그런 다음 sm> mod.sm. (Y_train, X_train) 으로 statsmodels.api를 가져오고 R square 0.61을 받았습니다. 아래는 대용량 쿼리에서 데이터를 가져 오는 코드입니다.통계 모델 OLS와 scikit 선형 회귀 분석의 차이점; 다른 모델은 서로 다른 r square를 제공합니다.

****Code for linear regression**** 
    train_data_df = pd.read_gbq(query,project_id) 
    train_data_df.head() 

    X_train = train_data_df.revisit_next_day_rate[:, np.newaxis] 
    Y_train = train_data_df.demand_1yr_per_new_member[:, np.newaxis] 

#scikit-learn version to get prediction R2 
    model_sci = linear_model.LinearRegression() 
    model_sci.fit(X_train, Y_train) 


    print model_sci.intercept_ 
    print ('Coefficients: \n', model_sci.coef_) 
    print("Residual sum of squares %.2f" 
     % np.mean((model_sci.predict(X_train) - Y_train ** 2))) 
    print ('Variance score: %.2f' %model_sci.score(X_train, Y_train)) 
    Y_train_predict = model_sci.predict(X_train) 
    print ('R Square', r2_score(Y_train,Y_train_predict)) 


****for OLM**** 

    print Y_train[:3] 
    print X_train[:3] 
    mod = sm.OLS(Y_train,X_train) 
    res = mod.fit() 
    print res.summary() 

나는 매우 새로운 기능입니다. 어떤 회귀 분석 패키지를 사용해야하는지 이해하려고 노력하고 있습니까?

+0

당신이 실제로 한 일을 보여줄 필요가 있습니까? 그렇지 않으면 어떻게 잘못했는지 말할 수 있습니까? –

+0

StackOverflow에 오신 것을 환영합니다. 도움말 설명서의 게시 지침을 읽고 따르십시오. [최소한의 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)가 여기에 적용됩니다. MCVE 코드를 게시하고 문제를 정확하게 설명하기 전까지는 효과적으로 도움을 드릴 수 없습니다. – Prune

+0

@ juanpa.arrivillaga 코드를 추가 할 질문을 편집했습니다. – SAM244776

답변

0

차이점을 발견했습니다. 그것은 요격이었다. OLS는 기본적으로 가져 가지 않습니다. 그래서 아래의 코드를 추가하여 답변을 일치시킵니다.

X = sm.add_constant(X) 
sm.OLS(y,X)