로지스틱 회귀에서 가중치를 사용하는 방법

밴조

Python에서 (가중치) 로지스틱 회귀를 계산하고 싶습니다. 모집단에 대한 표본 분포를 조정하기 위해 가중치를 계산했습니다. 그러나 가중치를 사용하면 결과가 변경되지 않습니다.

import numpy as np
import pandas as pd  
import statsmodels.api as sm  

데이터는 다음과 같습니다. 대상 변수는 VISIT입니다. 기능은 WEIGHT_both(사용하려는 가중치)를 제외한 다른 모든 변수 입니다.

df.head() 

WEIGHT_both VISIT   Q19_1   Q19_2   Q19_3   Q19_4   Q19_5   Q19_6   Q19_7   Q19_8   ... Q19_23  Q19_24  Q19_25  Q19_26  Q19_27  Q19_28  Q19_29  Q19_30  Q19_31  Q19_32
0   0.022320    1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 ... 4.0 4.0 1.0 1.0 1.0 1.0 2.0 3.0 3.0 2.0
1   0.027502    1.0 3.0 2.0 2.0 2.0 3.0 4.0 3.0 2.0 ... 3.0 2.0 2.0 2.0 2.0 4.0 2.0 4.0 2.0 2.0
2   0.022320    1.0 2.0 3.0 1.0 4.0 3.0 3.0 3.0 2.0 ... 3.0 3.0 3.0 2.0 2.0 1.0 2.0 2.0 1.0 1.0
3   0.084499    1.0 2.0 2.0 2.0 2.0 2.0 4.0 1.0 1.0 ... 2.0 2.0 1.0 1.0 1.0 2.0 1.0 2.0 1.0 1.0
4   0.022320    1.0 3.0 4.0 3.0 3.0 3.0 2.0 3.0 3.0 ... 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0

무게가 없으면 모델은 다음과 같이 보입니다.

X = df.drop('WEIGHT_both', axis = 1)
X = X.drop('VISIT', axis = 1)
X = sm.add_constant(X)
w = = df['WEIGHT_both']
Y= df['VISIT']

fit = sm.Logit(Y, X).fit()

fit.summary()


Dep. Variable:  VISIT   No. Observations:   7971
Model:  Logit   Df Residuals:   7938
Method: MLE Df Model:   32
Date:   Sun, 05 Jul 2020    Pseudo R-squ.:  0.2485
Time:   16:41:12    Log-Likelihood: -3441.2
converged:  True    LL-Null:    -4578.8
Covariance Type:    nonrobust   LLR p-value:    0.000
coef    std err z   P>|z|   [0.025  0.975]
const   3.8098  0.131   29.126  0.000   3.553   4.066
Q19_1   -0.1116 0.063   -1.772  0.076   -0.235  0.012
Q19_2   -0.2718 0.061   -4.483  0.000   -0.391  -0.153
Q19_3   -0.2145 0.061   -3.519  0.000   -0.334  -0.095

샘플 무게의 결과는 다음과 같습니다 (변경 없음).

fit2 = sm.Logit(Y, X, sample_weight = w).fit() 
# same thing if I use class_weight

fit2.summary()


Dep. Variable:  VISIT   No. Observations:   7971
Model:  Logit   Df Residuals:   7938
Method: MLE Df Model:   32
Date:   Sun, 05 Jul 2020    Pseudo R-squ.:  0.2485
Time:   16:41:12    Log-Likelihood: -3441.2
converged:  True    LL-Null:    -4578.8
Covariance Type:    nonrobust   LLR p-value:    0.000
coef    std err z   P>|z|   [0.025  0.975]
const   3.8098  0.131   29.126  0.000   3.553   4.066
Q19_1   -0.1116 0.063   -1.772  0.076   -0.235  0.012
Q19_2   -0.2718 0.061   -4.483  0.000   -0.391  -0.153
Q19_3   -0.2145 0.061   -3.519  0.000   -0.334  -0.095

다른 프로그램 (예 : SPSS, R)으로 회귀를 계산했습니다. 가중치가 적용된 결과는 달라야합니다.

다음은 예 (R-Code)입니다.

가중치 없음 (파이썬 코드와 동일한 결과) :

fit = glm(VISIT~., data = df[ -c(1)] , family = "binomial")

summary(fit)

Call:
glm(formula = VISIT ~ ., family = "binomial", data = df[-c(1)])

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-3.1216  -0.6984   0.3722   0.6838   2.1083  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  3.80983    0.13080  29.126  < 2e-16 ***
Q19_1       -0.11158    0.06296  -1.772 0.076374 .  
Q19_2       -0.27176    0.06062  -4.483 7.36e-06 ***
Q19_3       -0.21451    0.06096  -3.519 0.000434 ***
Q19_4        0.22417    0.05163   4.342 1.41e-05 ***

가중치 포함 :

fit2 = glm(VISIT~., data = df[ -c(1)],  weights = df$WEIGHT_both, family = "binomial")


summary(fit2)

Call:
glm(formula = VISIT ~ ., family = "binomial", data = df[-c(1)], 
    weights = df$WEIGHT_both)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.4894  -0.3315   0.1619   0.2898   3.7878  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)  4.950e-01  1.821e-01   2.718 0.006568 ** 
Q19_1       -6.497e-02  8.712e-02  -0.746 0.455835    
Q19_2       -1.720e-02  8.707e-02  -0.198 0.843362    
Q19_3       -1.114e-01  8.436e-02  -1.320 0.186743    
Q19_4        1.898e-02  7.095e-02   0.268 0.789066   

로지스틱 회귀에서 가중치를 사용하는 방법을 아십니까?

StupidWolf

한 가지 방법은 smf.glm()가중치를 제공 할 수있는 위치 를 사용 하는 것 입니다. 가중치 적용 glm에 대한freq_weights섹션을 확인 하고 달성하려는 것이 맞는지 확인해야합니다. 아래 weights=에서는 R 과 동일한 방식으로 사용되는 예를 제공합니다 .

import pandas as pd
import numpy as np
import seaborn as sns
import statsmodels.formula.api as smf
import statsmodels.api as sm

data = sns.load_dataset("iris") 
data['species'] = (data['species'] == "versicolor").astype(int)

fit = smf.glm("species ~ sepal_length + sepal_width + petal_length + petal_width",
              family=sm.families.Binomial(),data=data).fit()

fit.summary()

    coef         std err    z   P>|z|   [0.025  0.975]
Intercept        7.3785 2.499   2.952   0.003   2.480   12.277
sepal_length    -0.2454 0.650   -0.378  0.706   -1.518  1.028
sepal_width     -2.7966 0.784   -3.569  0.000   -4.332  -1.261
petal_length     1.3136 0.684   1.921   0.055   -0.027  2.654
petal_width     -2.7783 1.173   -2.368  0.018   -5.078  -0.479

이제 가중치를 제공하십시오.

wts = np.repeat(np.arange(1,6),30)
fit = smf.glm("species ~ sepal_length + sepal_width + petal_length + petal_width",
              family=sm.families.Binomial(),data=data,freq_weights=wts).fit()
fit.summary()

    coef         std err    z   P>|z|   [0.025  0.975]
Intercept        8.7146 1.444   6.036   0.000   5.885   11.544
sepal_length    -0.2053 0.359   -0.571  0.568   -0.910  0.499
sepal_width     -2.7293 0.454   -6.012  0.000   -3.619  -1.839
petal_length     0.8920 0.365   2.440   0.015   0.176   1.608
petal_width     -2.8420 0.622   -4.570  0.000   -4.061  -1.623

따라서 R에서는 가중치가 없습니다.

glm(Species ~ .,data=data,family=binomial)

Call:  glm(formula = Species ~ ., family = binomial, data = data)

Coefficients:
 (Intercept)  Sepal.Length   Sepal.Width  Petal.Length   Petal.Width  
      7.3785       -0.2454       -2.7966        1.3136       -2.7783  

Degrees of Freedom: 149 Total (i.e. Null);  145 Residual
Null Deviance:      191 
Residual Deviance: 145.1    AIC: 155.1

그리고 가중 모델

glm(Species ~ .,data=data,family=binomial,weights=rep(1:5,each=30))

Call:  glm(formula = Species ~ ., family = binomial, data = data, weights = rep(1:5, 
    each = 30))

Coefficients:
 (Intercept)  Sepal.Length   Sepal.Width  Petal.Length   Petal.Width  
      8.7146       -0.2053       -2.7293        0.8920       -2.8420  

Degrees of Freedom: 149 Total (i.e. Null);  145 Residual
Null Deviance:      572.9 
Residual Deviance: 448.9    AIC: 458.9

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

기능 중요도를 위해 SVM의 가중치 벡터 및 로지스틱 회귀를 사용하는 방법은 무엇입니까?

분류에서Dev

R에서 히트 맵으로 로지스틱 회귀를 시각화하는 방법

분류에서Dev

Python에서 로지스틱 회귀를 사용하는 예측 배열

분류에서Dev

경사 하강 법 오류가있는 로지스틱 회귀

분류에서Dev

R에서 로지스틱 회귀를 위해 부트 스트랩 후 혼동 행렬을 수행하는 방법은 무엇입니까?

분류에서Dev

Stargazer 또는 기타 패키지를 사용하여 Knitr에서 Zelig 로지스틱 회귀 분석

분류에서Dev

R의 glm에서 "weights"인수를 사용하는 로지스틱 회귀에 대한 ROC 곡선 수행

분류에서Dev

pyspark, 로지스틱 회귀, 각 특성의 계수를 얻는 방법

분류에서Dev

명령 프롬프트 대신 Java 코드에서 mahout의 로지스틱 회귀를 실행하는 방법은 무엇입니까?

분류에서Dev

python, 로지스틱 회귀를 사용하여 양수 예측에 더 많은 가중치를 추가하는 변수 확인

분류에서Dev

R에서 조건부 로지스틱 회귀를위한 null 모델을 만드는 방법은 무엇입니까?

분류에서Dev

Python에서 로지스틱 회귀를위한 사전 압축 해제

분류에서Dev

matconvnet에서 회귀로 softmaxlayer를 변경하는 방법

분류에서Dev

R : RSSL의 로지스틱 회귀에서 예측 된 확률을 출력하는 방법

분류에서Dev

Spark : DataFrame을 LibSVM으로 변경하고 로지스틱 회귀를 수행하는 방법

분류에서Dev

R에서 로지스틱 회귀를 사용하여 예측 된 확률은 1과 같습니다.

분류에서Dev

rms를 사용하여 로지스틱 회귀에 대한 OR 계산

분류에서Dev

(기본 추정으로 로지스틱 회귀와) sklearn의 AdaBoostClassifier를 사용하여 모델의 계수를 얻는 방법

분류에서Dev

ROC 곡선을 사용하여 R에서 가중치 이진 로지스틱 회귀 (glm)에 대한 최적 컷오프 찾기

분류에서Dev

scikit-learn을 사용하여 비정규 화 된 로지스틱 회귀를 수행하는 방법은 무엇입니까?

분류에서Dev

theano를 사용한 로지스틱 회귀에서 공유 변수 브로드 캐스팅

분류에서Dev

sklearn 가우스 프로세스 회귀에서 사용하는 최적화 기능에서 max_iter를 변경하는 방법은 무엇입니까?

분류에서Dev

One Hot Encoding을 사용하는 동안 로지스틱 회귀 방정식

분류에서Dev

pyspark mlib에서 로지스틱 회귀를 실행하는 동안 오류가 발생했습니다.

분류에서Dev

다중 수준 회귀에서 수준 2 예측 변수를 추가하는 방법 (패키지 NLME)

분류에서Dev

Pytorch에서 로지스틱 회귀를 사용한 예측은 무한대를 반환합니다.

분류에서Dev

R에 대한 로지스틱 회귀에 대한 효과 크기를 계산하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 l 로지스틱 회귀를 사용한 베타 계수 및 p- 값

분류에서Dev

목록을 포함하는 변수에 로지스틱 회귀를 사용할 수 있습니까?

Related 관련 기사

  1. 1

    기능 중요도를 위해 SVM의 가중치 벡터 및 로지스틱 회귀를 사용하는 방법은 무엇입니까?

  2. 2

    R에서 히트 맵으로 로지스틱 회귀를 시각화하는 방법

  3. 3

    Python에서 로지스틱 회귀를 사용하는 예측 배열

  4. 4

    경사 하강 법 오류가있는 로지스틱 회귀

  5. 5

    R에서 로지스틱 회귀를 위해 부트 스트랩 후 혼동 행렬을 수행하는 방법은 무엇입니까?

  6. 6

    Stargazer 또는 기타 패키지를 사용하여 Knitr에서 Zelig 로지스틱 회귀 분석

  7. 7

    R의 glm에서 "weights"인수를 사용하는 로지스틱 회귀에 대한 ROC 곡선 수행

  8. 8

    pyspark, 로지스틱 회귀, 각 특성의 계수를 얻는 방법

  9. 9

    명령 프롬프트 대신 Java 코드에서 mahout의 로지스틱 회귀를 실행하는 방법은 무엇입니까?

  10. 10

    python, 로지스틱 회귀를 사용하여 양수 예측에 더 많은 가중치를 추가하는 변수 확인

  11. 11

    R에서 조건부 로지스틱 회귀를위한 null 모델을 만드는 방법은 무엇입니까?

  12. 12

    Python에서 로지스틱 회귀를위한 사전 압축 해제

  13. 13

    matconvnet에서 회귀로 softmaxlayer를 변경하는 방법

  14. 14

    R : RSSL의 로지스틱 회귀에서 예측 된 확률을 출력하는 방법

  15. 15

    Spark : DataFrame을 LibSVM으로 변경하고 로지스틱 회귀를 수행하는 방법

  16. 16

    R에서 로지스틱 회귀를 사용하여 예측 된 확률은 1과 같습니다.

  17. 17

    rms를 사용하여 로지스틱 회귀에 대한 OR 계산

  18. 18

    (기본 추정으로 로지스틱 회귀와) sklearn의 AdaBoostClassifier를 사용하여 모델의 계수를 얻는 방법

  19. 19

    ROC 곡선을 사용하여 R에서 가중치 이진 로지스틱 회귀 (glm)에 대한 최적 컷오프 찾기

  20. 20

    scikit-learn을 사용하여 비정규 화 된 로지스틱 회귀를 수행하는 방법은 무엇입니까?

  21. 21

    theano를 사용한 로지스틱 회귀에서 공유 변수 브로드 캐스팅

  22. 22

    sklearn 가우스 프로세스 회귀에서 사용하는 최적화 기능에서 max_iter를 변경하는 방법은 무엇입니까?

  23. 23

    One Hot Encoding을 사용하는 동안 로지스틱 회귀 방정식

  24. 24

    pyspark mlib에서 로지스틱 회귀를 실행하는 동안 오류가 발생했습니다.

  25. 25

    다중 수준 회귀에서 수준 2 예측 변수를 추가하는 방법 (패키지 NLME)

  26. 26

    Pytorch에서 로지스틱 회귀를 사용한 예측은 무한대를 반환합니다.

  27. 27

    R에 대한 로지스틱 회귀에 대한 효과 크기를 계산하는 방법은 무엇입니까?

  28. 28

    파이썬에서 l 로지스틱 회귀를 사용한 베타 계수 및 p- 값

  29. 29

    목록을 포함하는 변수에 로지스틱 회귀를 사용할 수 있습니까?

뜨겁다태그

보관