반응형

목표변수가 연속형인 경우 -> 선형 회귀모델, ex) 광고비 투입 대비 매출액

목표변수가 두 개의 범주를 가진 이항형인 경우 -> 로지스틱 회귀모형, ex) 좋다1, 나쁘다0


 

2.1 선형회귀모형(linear regression model)

① 모형의 정의


Y= β0 + β1X1i + β2X2i +…..+ βpXpi + εi,   i = 1,…, n


- β0, β1, β2, …. Βp 를 회귀 모수(regression parameters) 또는 회귀 계수(regression coefficients)로서 알려지지 않는 상수이다.

εi Yi의 근사에서 오차(error)

 

회귀 모수의 추정

오차 εi= Y - β0 - β1X1i - β2X2i -…..- βpXpi


제곱합을 최소화하는 추정값을 이용한 최소제곱회귀직선(least square regression line) 다음과 같다.



 

회귀 계수의 해석

회귀계수 βj 다른 입력 변수들이 일정할 j번째 입력변수가 단위 변동할 대응하는 Y 변동 양으로 해석. , βj 다른 입력변수를 보정한 후에 Y 대한 Xj 기여도. 회귀계수 βj 양수이면 Xj 증가할 Y 증가하고, 반대로 βj 음수이면, Xj 증가할 Y 감소함을 의미한다.

 


④ 입력 변수의 중요도


Tj =

Beta hatj

SE(Beta hatj)



 


t값의 절대 값이 클수록 영향력이 크다고 할 수 있다. P-값이 유의수준 (보통 0.05)보다 작을 때


귀무가설 H0 : β1 = 0

대립가설 H1 : β1 0

 

귀무가설을 기각하여, Xj의 영향력이 있다고 말할 수 있다.

 

⑤ 모형의 적합도 – F

모형의 상수항 β0을 제외한 모든 회귀계수가 0인지 아닌지를 검정하는 측도를 F-값이라 한다.

F-값은 회귀직선에 의해 평균적으로 설명할 수 있는 부분(MSR: mean squared regression)을 설명할 수 없는 부분(MSE: meas squared erroe)으로 나눈 값.

F =

MSR

=

SSR/p

MSE

SSE/(n-p-1)

 

F-값이 크면 p개 입력변수 중에 최소한 하나는 유의하다(회귀계수가 0이 아니다)라는 뜻이고, F-값이 작아서 p-(보통 0.05) 보다 크면 모든 입력변수가 유의하지 않아서 회귀선이 쓸모가 없다.

 

⑤ 모형의 적합도 결정계수 R2

모형의 적합도(goodness-of-fit)를 결정계수(coefficient of determination) R2으로 측정할 수 있다.

결정계수 R2는 설명할 수 있는 부분의 총합을 변동의 총합으로 나눈 값으로 0 1사의 값을 지닌다.

R2=

SSR

= 1 -

SSE

SST

SST

 

R2 1에 가까울수록 모형이 데이터에 더 잘 적합되었다(fitted), 또는 회귀직선이 설명력이 높다라고 말할 수 있다.

 

다만, 모형에 포함된 변수의 수(p)가 증가하면 할수록 R2은 증가하므로 변수의 수가 다른 모형을 비교할 때는 수정된(adjusted) R2를 사용

Ra2=

Adjusted R2

= 1 -

n-1

n-p-1

 

Ra2은 변수의 수가 증가한다고 항상 증가하지는 않는다.

 

⑤ 모형의 적합도 – AIC

입력변수의 수가 다른 모형을 비교 평가하는 기준으로 AIC(Akaike information criterion)을 사용한다.


AIC = nlog(SSE/n) + 2p

 

SSE는 오차제곱합으로 작을수록 모형이 적합이 잘 되었다고 할 수 있다. 입력변수의 수가 증가할수록 SSE는 감소하지만, 벌점 2p를 더한 AIC는 항상 감소하지는 않는다. 여러 후보 모형 중에서 AIC가 가장 작은 모형을 선택한다.

 

모형을 이용한 예측

주어진 데이터에 기반하여 회귀식 Ŷ을 얻었다고 하자. 임의의 객체 i*에 대해 관측한 입력변수의 값 x1i*, x2i*, …, xpi*를 그 회귀식에 대입하여 목표변수의 예측치 Ŷix를 얻을 수 있다.


 

⑦ 예측력

목표변수가 연속형인 경우에 모형의 예측력 측도로서 MSE(mean squared error)를 주로 사용. 시각적으로 관측치(yi)와 예측치 Ŷi의 차이를 확인하기 위해서는 이들을 가로축 및 세로축에 놓고 그린 산점도가 45도 대각선을 중심으로 모여 있으면 예측력이 좋다고 할 수 있다.


 

2.2 로지스틱 회귀모형(logistic regression model)

목표변수가 두 개의 범주를 가진 이항형인 경우, 가령 목표변수의 두 범주 값 신용이 좋다 1, ‘신용이 나쁘다 0인 경우.

① 모형의 정의

n의 객체(subject) 중에 i번째 객체에 대한 두 개의 범주(성공 또는 실패)를 가지는 이항형 목표변수 값을 Yi, 입력변수들의 값을 X1i, X2i, …, Xpi라고 하자. 이항형 목표변수는 이항분포(binomial distribution)를 따른다. 두 개의 범주값을 1 0으로 표시하고, 목표변수가 성공’ 1을 가질 확률을 πi = pr( Yi = 1)이라고 하자. 로지스틱 회귀모형을 다음과 같이 나타낸다.

 

πi =

exp(0 + β1X1i + β2X2i +…..+ βpXpi)

, i = 1,..,n

1 + exp(0 + β1X1i + β2X2i +…..+ βpXpi)

 

, X1i, X2i, …, Xpi 입력변수의 값이고, 이항형 목표변수는 이항분포(binomial distribution)을 따른다고 가정. 위의 식에서 목표변수가 범주형에서 연속형 변수로 바뀌지만, πi 0~1사이의 값만을 가짐. πi 1에 가까워질수록 입력변수의 값은 ∞로 증가, 0에 가까워질수록 0으로 수렴. 따라서 로지스틱 회귀모형은 다음과 같이 변환하여 표시할 수 있음.

log(

πi

) =

exp(0 + β1X1i + β2X2i +…..+ βpXpi)

, i = 1,..,n

1- πi

 

- β0, β1, β2, …. Βp 를 회귀 모수(regression parameters) 또는 회귀 계수(regression coefficients)로서 알려지지 않는 상수이다.


성공확률 πi와 입력변수 관계는 로지스틱 반응 함수로 표현할 수 있다. 입력변수가 증가함에 따라 초기에는 천천히 증가하다가 증가속도가 점차 빨라지고 확률 1/2 이후에는 다시 증가속도가 줄어드는 성장곡선 (growth curve) 형태이다(좌측 도형). 성공 확률과 실패 확률의 비를 오즈비(odds ratio)라고 하고 오즈비에 로그(log)를 취한 것을 로짓변화(logit transformation)이라고 부른다. 입력변수와 로짓의 관계는 직선이고, πi 0~1의 값만 취하는 반면, 로짓변화는 -4, 6 등 다양한 값을 가진다.

 

회귀 모수의 추정

회귀모수는 최대우도추정법(MLE: maximum likelihood estimation method)에 이해 추정. 데이터의 확률함수를 모수β의 함수로 취급한 것을 우도함수(likelihood function) L(β)라고 하고, 이 우도함수가 최대가 될 때 모수의 추정치를 최대우도추정치(MLE)라고 한다. 적합된 로지스틱 회귀식(logistic regression line)은 다음과 같다.



 

회귀계수의 해석

회귀계수 βj는 다른 입력변수들을 보정한 후 성공(Y=1)의 로그오즈(log odds = log(π/(1-π))에 미치는 Xj의 효과. 다른 입력 변수가 일정할 때, exp(βj) j번째 입력변수 Xj가 한 단위 변동할 때 오즈에 미치는 기여도. 회귀계수 βj 양수이면 Xj 증가할 성공확률 π 로짓 log(π/(1-π)는 증가하고, 반대로 βj 음수이면 Xj 증가할 이들은 감소한다.

 

④ 변수의 중요도

선형회귀모형에서와 유사하게 로지스틱 회귀모형에서는 변수의 중요도는 z값으로 측정할 수 있다.



⑤ 모형의 적합도

모형의 적합도의 측도로서 이탈도(deviance)를 사용할 수 있다. 이탈도란 어떤 모형 M의 최대로그 우도(maximized log-likelihood) log(LM)에서 포화모형(saturated model) S의 최대로그우도 log(LS)를 뺀 것에 -2를 곱한 값이다.


이탈도 = -2[log(LM)-log(LS)]

 

포화모형은 각 관측에 모수 하나씩을 사용하여 완벽한 모형을 의미하며, 이탈도가 클 경우에는 그 모형은 적합하지 않다고 한다. 데이터를 모형에 적합하여 얻은 이탈도에 대응하는 p-(보통 > 0.05)이 클 때 우리는 그 모형 M이 의미있다고 한다. 입력변수의 수가 다른 모형을 비교 평가하는 기준으로 AIC(Akaike Information Criterion)를 종종 사용한다. LM은 모형 M에 대한 우도함수의 최대값, p는 모수의 수이다.

AIC = -2log(LM) + 2P

 

AIC는 입력변수 또는 모수의 수가 증가한다고 항상 작아지지는 않으므로, 여러 후보 모형들 중에서 가장 작은 AIC를 가지는 모형을 선택한다.

 

⑥ 모형을 이용한 예측

임의의 객체 i*에 대해 관측한 입력변수의 값 x1i*,x2i*,…,xpi*를 그 로지스틱 회귀식에 대입하여 성공확률 πi* = Pr(Yi* =1)의 예측치를 얻을 수 있다.


예측치가 크면 1, 작으면 0으로 분류한다. 크고 작음을 분류하는 임계치(π0)는 보통 0.5~0.7을 사용하지만, 적영 분야에 따라 달리 결정할 수 있다. 기존 고객 데이터로 회귀계수를 추정하여 로지스틱 회귀식을 얻은 후, 수집한 새로운 고객의 입력변수값을 로지스틱 회귀식에 대입하여 새로운 고객의 성공확률을 예측한다.

 

⑦ 예측력 정오분류표

목표변수가 이항형(신용도가 좋으면 1, 나쁘면 0)인 경우에, 정오분류표를 만들어 예측력을 평가


 

예측범주 Ŷ

합계

1

0

실제범주 Y

1

n11

n10

n1+

0

n01

n00

n0+

합계

n+1

n+0

n

 

- 민감도(Sensitivity): Pr(Ŷ = 1 | Y =1) = n11/n1+

- 특이도(Specificity): Pr(Ŷ = 0 | Y =0) = n00/n0+

- 예측정확도(Prediction Accuracy): Pr(Ŷ =1 | Y =1) + Pr(Ŷ = 0 | Y =0) = (n11+n00)/n

- 오분류율(Misclassification Rate): Pr(Ŷ1 | Y =1) + Pr(Ŷ0 | Y =0) = (n10+n01)/n

 

민감도: 실제 양성(Y=1)일 때, 양성으로 예측할 확률(Ŷ = 1)

특이도: 실제 음성(Y=0)일 때 음성으로 예측할 확률(Ŷ = 0)

예측정확도: 실제 양성인데 양성으로, 음성일 때 음성으로 제대로 예측할 확률로 민감도와 특이도의 가중평균

오분류율: 양성인데 음성으로, 음성일 때 양성으로 잘못 예측할 확률

 


⑦ 예측력 – ROC 곡선

여러 가능한 임계치에 대해 ‘1-특이도(Specificity)’를 가로축에, 민감도를 세로축에 놓고 그린 그래프를 ROC(Receiver Operating Characteristic)곡선이라고 한다. 민감도와 특이도가 높을수록 예측력이 좋다고 할 수 있기 때문에 ROC 곡선이 좌상단에 가까울수록 ROC 곡선 아래 면적인 AUC(Area Under the ROC curve)가 커지고, AUC가 커질수록 예측력이 좋다고 할 수 있다.

2.3 범주형 입력변수 처리

입력변수가 범주형일 경우에는 가변수(dummy variable)로 변환하여 처리한다. 예를 들어, 어떤 입력변수 X 3개의 범주(a,b,c)를 가진다고 하자. 그러면 두 개의 가변수를 다음과 같이 새롭게 정의한다.

 

X’= 1, X=a  or  0, Xa

X”= 1, X=b  or  0, Xb

 

X가 범주 a를 가지는 경우, X’=1, X”=0, X가 범주 b를 가지는 경우 X’=0, X”=1, X가 범주 c를 가지는 경우 X’=0, X”=0. 따라서 X가 범주를 L개 가지는 경우 L-1개의 가변수를 새롭게 생성한다.

 


2.4 모형 구축을 위한 변수 선택

후진소거법(backward elimination): 모든 변수를 포함시킨 모형부터 시작하여 가장 유의하지 않은 변수를 하나씩 제거

전진선택법(forward selection): 상수항만 가진 모형부터 시작하여 가장 유의한 변수를 하나씩 포함시켜 포함되지 않고 남은 변수가 모두 유의하지 않을 때까지 추가

단계적 선택법(stepwise selection): 전진선택법처럼 상수항부터 시작하여 가장 유의한 변수를 하나씩 모형에 포함시킨다. 하지만 어떤 변수가 포함된 이후에 기존에 포함된 변수 중에 유의하지 않은 변수를 제거. 전진선택법 + 후진소거법

반응형
Posted by 마르띤
,
반응형

종속 변수의 변화를 설명하기 위하여 두 개 이상의 독립 변수가 사용되는 선형회귀모형을 중선형회귀(multiple linear regression model)라 부르며, 간단히 중회귀모형(multiple regression model)이라함.




 

- 중회귀모형에서독립변수가2개인경우


 

- 벡터 표현

 

중회귀모형의 행렬 표현은

 

 


2.2 중회귀모형의 추정

-최소제곱법

 

R활용한 행렬 연산

> setwd("c:/Rwork")

> market2<-read.table("market-2.txt",header=T)

> head(market2,3)

ID  X1   X2    Y

1  1 4.2  4.5  9.3

2  2 8.5 12.0 18.5

3  3 9.3 15.0 22.8

> X=market2[,c(2:3)]

> head(X)

X1   X2

1  4.2  4.5

2  8.5 12.0

3  9.3 15.0

4  7.5  8.5

5  6.3  7.4

6 12.2 18.5

> X=cbind(1,X)

> head(X)

1   X1   X2

1 1  4.2  4.5

2 1  8.5 12.0

3 1  9.3 15.0

4 1  7.5  8.5

5 1  6.3  7.4

6 1 12.2 18.5

> Y=market2[,4]

> X=as.matrix(X)

> head(Y)

[1]  9.3 18.5 22.8 17.7 14.6 27.9

> Y=as.matrix(Y)

> head(Y)

[,1]

[1,]  9.3

[2,] 18.5

[3,] 22.8

[4,] 17.7

[5,] 14.6

[6,] 27.9

> XTX=t(X)%*%X

> XTX

1      X1      X2

1   15.0  132.80  165.50

X1 132.8 1280.80 1610.68

X2 165.5 1610.68 2149.49

> XTXI=solve(XTX)

> XTXI

1          X1           X2

1   0.82483283 -0.09810472  0.010004922

X1 -0.09810472  0.02520628 -0.011334282

X2  0.01000492 -0.01133428  0.008188029

> XTY=t(X)%*%Y

> XTY

[,1]

1   290.40

X1 2796.89

X2 3568.95

> beta=XTXI%*%XTY

> beta=round(beta,3)

> beta

[,1]

1  0.850

X1 1.558

X2 0.427

-> 결론: 마지막 beta 함수를 통해 선형회귀식을 도출할 수 있다.




 

광고료가 1000만원 (X1=10) 이고 상점의 크기가 100 (X2=10) 인 상점의 평균 총판매액의 추정값은

0.850 + 1.558*10 + 0.427*10 = 20.7 207백만원으로 추정

 

 

 

 

잔차의 성질

추정된회귀식의값 Ŷi과 관찰값Yi의차이를잔차εi = Yi – Ŷi .

추정값과잔차벡터의행렬표현은 아래와 같다.

 

 

여기서 H는 햇행렬(hat matrix)라고 한다. 햇행렬은 다음을 만족하는 멱등행렬(idempotent matrix)이다.

 

H2 = HH = H

H = H

 

잔차의 성질

(1)잔차의 합은 0

(2) 잔차의독립변수에대한가중합은0

(3) 잔차의추정값에대한가중합도0

(4) 중회귀모형 Y = Xβ + ε에서, 잔차 εi간에는 상관관계가 일반적으로 존재함.



2.3 회귀방정식의 신뢰성

<중회귀의 분산분석표>

요인

자유도

제곱합

평균제곱

F0

회귀

K

SSR(회귀제곱합)

MSR(회귀 평균 제곱)=SSR/k

MSR/MSE

잔차

n-k-1

SSE(잔차제곱합)

MSE(잔차 평균제곱)

= SSE/ n-k-1

 

n-1

SST( 제곱합)

 

 

 

 

F0 =

MSR

회귀방정식이 유의한가를 검정하기 위한 검정통계량

MSE

 

귀무가설 H0 : β1 β2 = ……. = βk = 0

대립가설 H1 : 최소한 하나의 βi 0

유의수준 a에서 만약 F0의 값이 F0>F(K,n-k-1;a)이면 귀무가설을 기각하여, 회귀방정식이 유의(significant)하다는 것을 의미

 

 

R을 활용한 회귀분석

> head(market2)

ID   X1   X2    Y

1  1  4.2  4.5  9.3

2  2  8.5 12.0 18.5

3  3  9.3 15.0 22.8

4  4  7.5  8.5 17.7

5  5  6.3  7.4 14.6

6  6 12.2 18.5 27.9

> market2.lm = lm(Y~X1+X2,data=market2)

> summary(market2.lm)

 

Call:

  lm(formula = Y ~ X1 + X2, data = market2)

 

Residuals:

  Min       1Q   Median       3Q      Max

-1.30465 -0.69561 -0.01755  0.69003  1.53127

 

Coefficients:

  Estimate Std. Error t value Pr(>|t|)   

(Intercept)  0.85041    0.84624   1.005 0.334770   

X1           1.55811    0.14793  10.532 2.04e-07 ***

X2           0.42736    0.08431   5.069 0.000276 ***

  ---

  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Residual standard error: 0.9318 on 12 degrees of freedom

Multiple R-squared:  0.9799,           Adjusted R-squared:  0.9765

F-statistic: 292.5 on 2 and 12 DF,  p-value: 6.597e-11

->  해석

회귀식: Ŷ = 0.85041 + 1.55811 * X1 + 0.42736 * X2

결정계수: 0.9799, 수정 결정계수는 0.9765

F값은 292.5이고 유의확률 6.597e-11로서 귀무가설을 기각하고 적합된 중회귀모형이 이 데이터를 설명하는데 유의함.  

     

 

 

R 활용한 분산분석표

> anova(market2.lm)

Analysis of Variance Table

 

Response: Y

Df Sum Sq Mean Sq F value    Pr(>F)   

X1         1 485.57  485.57 559.283 1.955e-11 ***

X2         1  22.30   22.30  25.691 0.0002758 ***

  Residuals 12  10.42    0.87                     

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

  -> 해석:

SS(X1) = 485.57

SS(X2|X1) = 22.30, 변수X1이 적합된 후, 변수X2가 추가되었을 대의 추가제곱합을 의미.

X1, X2 모두 P값이 유의미함

 

요인

자유도

제곱합

평균제곱

F0

Pr(>F)

회귀

K = 2

SSR(회귀제곱합)

= 507.87

MSR=SSR/k

= 253.94

MSR/MSE

= 292

6.597e-11

잔차

n-k-1 = 12

SSE(잔차제곱합)

= 10.42

MSE(잔차 평균제곱)

= SSE/ n-k-1

= 0.87

 

 

n-1 = 14

SST( 제곱합)

= 518.29

 

 

 

 

- 중상관계수(multiple correlation coefficient)

 단순 회귀 모형에서 결정계수: 두 변수의 상관계수의 제곱과 같음

 중회귀모형의 결정계수: 반응변수 Yi와 추정값Ŷi의 상관계수의 제곱과 같음. 따라서 결정계수의 제곱근을 중산관계수(multiple correlation coefficient)라고 함. 

 

 

> names(market2.lm)

[1] "coefficients"  "residuals"     "effects"     

[4] "rank"          "fitted.values" "assign"      

[7] "qr"            "df.residual"   "xlevels"     

[10] "call"          "terms"         "model"       

> yhat=market2.lm$fitted

> cor(market2$Y,yhat)

[1] 0.9898983

> cor(market2$Y,yhat)^2

[1] 0.9798986

 

->  cor(market2$Y,yhat)^2 값이 0.9798 결정계수 0.9799 동일

 

 

 

 

잔차평균제곱(Residual mean squares)

 

MES = SSE / n-k-1, MSE의 값이 작으면 작을수록 관찰값 Yi들이 추정값Ŷi과 차이가 거의 업다는 것을 의미하며, 추정된 회귀방정식을 믿을 수 있게 됨.

 

> summary(market2.lm)

 

Call:

  lm(formula = Y ~ X1 + X2, data = market2)

 

Residuals:

  Min       1Q   Median       3Q      Max

-1.30465 -0.69561 -0.01755  0.69003  1.53127

 

Coefficients:

  Estimate Std. Error t value Pr(>|t|)   

(Intercept)  0.85041    0.84624   1.005 0.334770   

X1           1.55811    0.14793  10.532 2.04e-07 ***

X2           0.42736    0.08431   5.069 0.000276 ***

  ---

  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Residual standard error: 0.9318 on 12 degrees of freedom

Multiple R-squared:  0.9799,           Adjusted R-squared:  0.9765

F-statistic: 292.5 on 2 and 12 DF,  p-value: 6.597e-11

 

> anova(market2.lm)

Analysis of Variance Table

 

Response: Y

Df Sum Sq Mean Sq F value    Pr(>F)   

X1         1 485.57  485.57 559.283 1.955e-11 ***

X2         1  22.30   22.30  25.691 0.0002758 ***

  Residuals 12  10.42    0.87                     

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

-> 잔차평균제곱근 0.9318, sqrt(10.42/12) = 0.931844

반응형
Posted by 마르띤
,
반응형

분석사례

어떤 슈퍼마켓에서 고객이 구입하는 상품의 금액과 카운터에서 값을 치르는 데 걸리는 시간 사이에 회귀함수 관계가 있는가를 알아보기 위해 10명의 고객을 임의로 추출하여 데이터를 얻었다. R을 이용하여 회귀 모형을 적합해 보자.

 

  

1. 자료를 읽어 산점도를 그려보자.

> setwd('c:/Rwork')

> super=read.table('supermarket.txt',header=T)

> head(super)

  price time

1   6.4  1.7

2  16.1  2.7

3  42.1  4.9

4   2.1  0.3

5  30.7  3.9

6  32.1  4.1

> length(price)

[1] 10

> a<-1:10

> attach(super)

> plot(price,time,pch=a)

 

 

 


2. 회귀모형과 분석분석표 구하기

> super.lm=lm(time~price,data=super)

> plot(super$price,super$time)

> abline(super.lm,lty=2,col='BLUE')

 

  

> summary(super.lm)

 

Call:

lm(formula = time ~ price, data = super)

 

Residuals:

     Min       1Q   Median       3Q      Max

-0.37928 -0.32771 -0.04431  0.32231  0.56126

 

Coefficients:

            Estimate Std. Error t value Pr(>|t|)   

(Intercept)  0.396460   0.191488    2.07   0.0722 . 

price             0.115982   0.008979   12.92 1.22e-06 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Residual standard error: 0.3925 on 8 degrees of freedom

Multiple R-squared:  0.9542,    Adjusted R-squared:  0.9485

F-statistic: 166.9 on 1 and 8 DF,  p-value: 1.221e-06

 

> anova(super.lm)

Analysis of Variance Table

 

Response: time

          Df  Sum Sq Mean Sq F value    Pr(>F)   

price        1 25.7036 25.7036  166.85 1.221e-06 ***

Residuals  8  1.2324  0.1541                     

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> qf(0.95,1,8)

[1] 5.317655

> 1-pf(166.85,1,8)

[1] 1.220851e-06

데이터 해석을 해 보자

회귀계수 추정값은 time hat = 0.396 + 0.116 X price 

② 기울기에 대한 t-값은 12.92이고, p-값은 1.221e-06 = 1.221 X 1106 로 그 값이 매우 적기 때문에 유의하다. 

③ F-값은 166.85 이고, 이에 대한 p-값은 1.221e-06으로서 적합된 회귀직선이 유의하다는 것을 알 수 있다.


F0 = 166.85 > F 기각역 F(1,8;0.05)의 값 qf(0.95,1,8) = 5.317655 


이므로 귀무가설 H0 : β1 = 0을 기각한다. 따라서 구해진 회귀직선이 유의하다. 


유의 확률 값은 1-pf(166.85,1,8) = 1.22081 X 106 


로서, 유의확율 p-값을 이용한 검정은 유의확률 p-값 < 유의수준 α(=0.05)이면 회귀방정식이 유의하다는 것을 나타낸다.

  추정값의 표준오차(standard error of estimate) = 0.3925 = MSE의 제곱근 sqrt(0.1541)

 결정 계수는 0.9542 = SSR / SST = 25.7036 / (25.7036 + 1.2324), 총 변동 중에서 회귀 방정식으로 설명되는 부분이 95.42%라는 것을 나타낸다.


 

3. 잔차, 추정값 보기 및 잔차 그림 그리기

> names(super.lm)

 [1] "coefficients"  "residuals"     "effects"       "rank"        

 [5] "fitted.values" "assign"        "qr"            "df.residual" 

 [9] "xlevels"       "call"          "terms"         "model"       

> cbind(super,super.lm$resi,super.lm$fit)

   price time super.lm$resi super.lm$fit

1    6.4  1.7    0.56125840     1.138742

2   16.1  2.7    0.43623742     2.263763

3   42.1  4.9   -0.37928275     5.279283

4    2.1  0.3   -0.34002095     0.640021

5   30.7  3.9   -0.05709314     3.957093

6   32.1  4.1   -0.01946730     4.119467

7    7.2  1.2   -0.03152683     1.231527

8    3.4  0.5   -0.29079696     0.790797

9   20.8  3.3    0.49112416     2.808876

10   1.5  0.2   -0.37043203     0.570432

> plot(price,super.lm$resi,pch=19)

> abline(h=0,lty=2)


-> time은 실제 소요 시간, super.lm$fit 추정값, super.lm$resi 잔차. 잔차는 실제값과 추정값 차이

   abline(h=0,lty=2) 잔차가 0 선을 그리되, 라인 타입을 점선(lty=2)으로 그리라는 명령이다. 그림에서 보면 잔차는 0 중심으로 일정한 범위 내에 있으므로 회귀에 대한 기본 가정을 만족한다고 있으나, X 증가함에 따라 곡선관계를 보여주고 있다. 따라서 2 곡선 회귀식 Ŷ = b0 + b1X = b2X2을 구해보는 것도 의미가 있으리라 생각된다.

 

4. 추정값의 신뢰대 그리기

> p.x = data.frame(price=c(1,45))

> pc = predict(super.lm,int='c',newdata=p.x)

> pred.x=p.x$price

> plot(super$price,super$time,ylim=range(super$time,pc))

> matlines(pred.x,pc,lty=c(1,2,2),col='BLUE')

 

 


걸음만 단계. 무한 반복과 많은 연습이 필요.



반응형
Posted by 마르띤
,
반응형

단순 회귀 직선의 기본 가정 중 하나는 주어진 X Y의 기대값을 E(Y)라고 하면,


E(Y)= β0 + β1X


가 성립되는 것이다. 이러한 의미는 관심이 되고 있는 모집단에서 변수 X Y사이에 선형관계가 성립된다고 하는 것이다.


 

1. β0, β1의 신뢰구간

> summary(market.lm)

 

Call:

lm(formula = Y ~ X, data = market)

 

Residuals:

   Min     1Q Median     3Q    Max

-3.600 -1.502  0.813  1.128  4.617

 

Coefficients:

            Estimate Std. Error t value Pr(>|t|)   

(Intercept)    -2.2696     3.2123  -0.707 0.499926   

X                  2.6087     0.3878   6.726 0.000149 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Residual standard error: 2.631 on 8 degrees of freedom

Multiple R-squared:  0.8497,    Adjusted R-squared:  0.831

F-statistic: 45.24 on 1 and 8 DF,  p-value: 0.0001487

 

# β0 95%신뢰구간

> q.val=qt(0.975,8)

> -2.2696-3.2123*q.val;-2.2696+3.2123*q.val

[1] -9.677177

[1] 5.137977

 

# β1 95%신뢰구간

q.val=qt(0.975,8)

 2.6084-q.val*0.3878 ; 2.6084+q.val*0.3878

[1] 1.714132

[1] 3.502668 


 


2. 추정값의 신뢰 구간을 그려보자

> range(market$X)

[1]  4 12

> pred.frame=data.frame(X=seq(3.5,13.5,0.2))

> pc=predict(market.lm,int='c',newdata=pred.frame) #기대값의 신뢰구간

> pp=predict(market.lm,int='p',newdata=pred.frame) # 새로운 값의 신뢰구간

> head(pc,3);head(pp,3)

       fit      lwr      upr

1 6.860870 2.402421 11.31932

2 7.382609 3.084944 11.68027

3 7.904348 3.765982 12.04271

       fit         lwr      upr

1 6.860870 -0.66731914 14.38906

2 7.382609 -0.05148732 14.81670

3 7.904348  0.56119219 15.24750

> pred.X=pred.frame$X

> plot(market$X, market$Y,ylim=range(market$Y,pp))

> matlines(pred.X,pc,lty=c(1,2,2),col='BLUE')

> matlines(pred.X,pp,lty=c(1,3,3),col='RED')



-> 안쪽 파란색 점섬은 pc의 신뢰구간, 바깥쪽 빨간색 점선은 pp의 신뢰구간. Pp의 신뢰대가 pc의 신뢰대보다 더 넓은 영역을 차지하는 것을 알 수 있다.



> identify(market$X,market$Y)


> market[c(1,2,6),]

  NUMBER  X  Y

1      1  4  9

2      2  8 20

6      6 12 30

> market[c(4,7,9),]

  NUMBER X  Y

4      4 8 15

7      7 6 18

9      9 6 10

-> 1,2,6번 데이터는 pc 신뢰구간 내 있는 데이터, 4,7,9번은 pc 신뢰구간 바깥에 있는 데이터



 

3. β1 검정

귀무가설 H0 : β1 = 0

대립가설 H1 : β1 0

 

위 가설에 대한 검정통계량은, 양측검정이므로 t(n-2; α/2)인 기각값을 구한 후, 만약 |t0| > t(n-2; α/2)이면 귀무가설을 기각하게 된다.

> summary(market.lm)

 

Call:

lm(formula = Y ~ X, data = market)

 

Residuals:

   Min     1Q Median     3Q    Max

-3.600 -1.502  0.813  1.128  4.617

 

Coefficients:

            Estimate Std. Error t value Pr(>|t|)   

(Intercept)    -2.2696     3.2123  -0.707 0.499926   

X                  2.6087     0.3878   6.726 0.000149 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Residual standard error: 2.631 on 8 degrees of freedom

Multiple R-squared:  0.8497,    Adjusted R-squared:  0.831

F-statistic: 45.24 on 1 and 8 DF,  p-value: 0.0001487

 

결과에서 기울기 β1 추정값 b1 = 2.6087이고, t-


t0= 2.6087 / 0.3878 = 6.726921

 

임을 알 수 있다. P – 값은 다음과 같이 구해진다.


p- = Pr(T > |6.726|) = 2 X (1-Pr (T<6.726)) 이므로


> 2*(1-pt(6.726921,8))

[1] 0.0001485319

-> 결론: p- = 0.0001485319로서 매우 작으므로 귀무가설 H0 : β1 = 0을 기각하게 된다.




4. 추정값의 신뢰구간

Ŷ의 분산은 X의 함수로서 X=X bar일 경우 최소. X=X bar를 대칭으로 X의 값이 X bar에서 멀어질수록 커짐. 또한 n이 커져도 Var(Ŷ)이 작아짐을 알 수 있음.



문제: 광고비를 투입할수록 매출액이 커진다고 한다. 이 자료를 바탕올 회귀식을 구했더니 매출액(Ŷ) = -2.2696 + 2.6087 * 광고비가 나왔고, 이 회귀식을 이용하여 광고비 7을 투입할 경우 매출액 15.993을 구하였다. 이 때 매출액 15.993에 대하여 95%의 신뢰구간을 설정하시오.



X

x-xbar

(x-xbar)^2

Y

Ŷ = -2.2696 + 2.6087x

y-Ŷ

(y-Ŷ)^2

4

-4

16

9

8.166

0.834

0.695556

8

0

0

20

18.602

1.398

1.954404

9

1

1

22

21.211

0.789

0.622521

8

0

0

15

18.602

-3.602

12.9744

8

0

0

17

18.602

-1.602

2.566404

12

4

16

30

29.038

0.962

0.925444

6

-2

4

18

13.384

4.616

21.30746

10

2

4

25

23.82

1.18

1.3924

6

-2

4

10

13.384

-3.384

11.45146

9

1

1

20

21.211

-1.211

1.466521

합계

46

합계

55.357

평균x

8

평균y

18.6

 


t(n-2 ; α/2) 은 신뢰수준이 95%이므로 α/2 = 0.025이고, 자유도는 10-2 = 8이다. 해당 값을 t분포표 값에서 찾으면 2.306이다. 이를 R에서 계산하면 아래와 같다.


> anova(market.lm)

Analysis of Variance Table

 

Response: Y

          Df  Sum Sq Mean Sq F value    Pr(>F)   

X             1 313.043  313.04   45.24 0.0001487 ***

Residuals  8  55.357    6.92                     

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> qt(0.975,8)

[1] 2.306004


-> MSE = 6.92, t(10-2 ; 5%/2) = 2.306

= 15.993 ± 2.306 x SQRT ( MSE x (1 + 1/(10-2) + (7-8)^2 / 46))

= 15.993 ± 2.306 x SQRT ( 55.357/8 x (1 + 1/(10-2) + (7-8)^2 / 46))

= 15.993 ± 6.49

 

따라서 매출액 15.993에 대하여 95%의 신뢰구간은 9.503에서 22.483로 예측할 수 있다.

 

반응형
Posted by 마르띤
,
반응형

회귀분석(regression analysis): 독립변수와 종속변수 간의 함수 관계를 규명하는 통계적인 분석방법


Ŷ=f(X)+ε


 - 독립변수(independent variable) 또는 설명변수(explanatory variable): 다른 변수에 영향을 주는 변수, 흔히 Y= β0 + β1X 공식에서 X

 - 종속변수(dependent variable) 또는 반응변수(response variable): 독립 변수에 의해 영향을 받는다는 변수, 흔히 Y= β0 + β1X 공식에서 Y

 

회귀(回歸)라는 말은다시 본디의 자리로 돌아온다라는 뜻으로 통계 분석에 처음 사용한 사람은 영국의 우생학자 Galton. 완두콩 실험을 통해 부모콩의 무게를 X, 자식콩의 무게를 Y축으로 산점도를 그리자, 이들의 관계식은 양이 관계이나 1보다 작아서 자식의 무게는 평균 무게로 회귀하려는 경향이 있다는 사실을 발견하고 이를 회귀(regression)으로 표현. 당시에 Galton 연구실에서 일하던 동료 연구원 Karl Pearson 이를 계량적으로 처음으로 분석하여 발표.

 

1. 데이터를 불러와서 산점도 그래프를 그리기

> market=read.table('market-1.txt',header=T)

> head(market,3)

NUMBER X  Y

1      1 4  9

2      2 8 20

3      3 9 22

> plot(market$X,market$Y,xlab='광고료',ylab='총판매액',pch=19)

> title('광고료와 판매액의 산점도')


 

2. 단순 회귀 분석 실시

> market.lm=lm(Y~X,data=market)

> summary(market.lm)

 

 

해석

추정값은 Coefficients: Estimate에서 확인. 추정된 회귀식은 Ŷ=-2.27 + 2.6 X

 


3. 산점도 위에 회귀직선을 그리자 - 회귀선의 추정

> abline(market.lm)

> identify(market$X,market$Y)

[1]  4  5 10

# Identify는 재미있는 함수인데, 본 함수를 입력하고 마우스로 점을 클릭하면 그림처럼 값을 알 수 있다.


> xbar = mean(market$X)

> ybar = mean(market$Y)

> xbar

[1] 8

> ybar

[1] 18.6

> points(xbar,ybar,pch=17,cex=2.0,col='RED')

> text(xbar,ybar,"(8,18.6)")

> fx <- "Y-hat = -2.27 + 2.6*X "

> text(locator(1),fx) #locator(1) 마우스로 클릭하면서 지정


 


4. 회귀식 특징

> names(market.lm)

[1] "coefficients"  "residuals"     "effects"       "rank"          "fitted.values"

[6] "assign"        "qr"            "df.residual"   "xlevels"       "call"        

[11] "terms"         "model"       

> market.lm$resid

1          2          3          4          5          6          7          8

0.8347826  1.4000000  0.7913043 -3.6000000 -1.6000000  0.9652174  4.6173913  1.1826087

9         10

-3.3826087 -1.2086957

> resid=market.lm$residual

> sum(resid) #특징1. 잔차의합은 0이다

[1] 0

> sum(market$X*resid) #특징2. 잔차들의 Xi 의한 가중합은 0이다

[1] 2.220446e-15

> sum(market.lm$fitted*resid) #특징3. 잔차들의 Yi 의한 가중합은 0이다

[1] -1.24345e-14

> names(market.lm)

 [1] "coefficients"  "residuals"     "effects"       "rank"         

 [5] "fitted.values" "assign"        "qr"            "df.residual"  

 [9] "xlevels"       "call"          "terms"         "model"        

> sum(market.lm$fitted.values)

[1] 186

> sum(market$Y)

[1] 186

#특징4. 추정값Yhat의 값과 관찰값Yi의 값은 같다.


5. 회귀모형의 정도

 - 산점도 위에 회귀직선을 그려 회귀선의 정도를 대략 짐작할 있으나, 이러한 경우는 독립변수가 하나인 경우에만 유용하게 쓰일 있다. 추정된 회귀선의 정도를 측정하는 여러 가지 측도(measure) 중에서 널리 이용되는 세가지를 알아보자

 ① 분산분석표에 의한 F-검정

 ② 결정계수

 ③ 추정값의 표준오차 

 ④ 상관계수와 결정계수


① 분산분석표에 의한 F-검정

요인

자유도

제곱합

평균제곱

F0

회귀

1

SSR(회귀제곱합)

MSR=SSR

MSR/MSE

잔차

n-2

SSE(잔차제곱합)

MES=SSE/n-2

 

n-1

SST( 제곱합)

 

 

- SST(Total sum of squares): 제곱합

- SSR(Sum of squares due to regression): 회귀제곱합, 설명되는 편차

- SSE(Sum of squares due to residual errors): 잔차제곱합, 설명되지 않는 편차

 

귀무가설 H0 : β1 = 0

대립가설 H1 : β1 0

 

F0 > F(1, n-2 ; α )이면 귀무가설 H0 : β1 = 0 기각하고, 회귀직선이 유의하다고 말한다. R분석 결과에서는 검정통계량 F0 대한 유의확률 p값이 제공된다. p < 유의확률 α이면 귀무가설 H0 : β1 = 0 기각한다

 

분산분석표

> anova(market.lm) #분산분석표

 

요인

자유도

제곱합

평균제곱

F0

회귀

1 = 1

SSR(회귀제곱합)

= 313.04

MSR=SSR

= 313.04

MSR/MSE

= 45.24

잔차

10-2 = 8

SSE(잔차제곱합)

= 55.36

MSE(잔차 평균제곱)  = SSE/n-2= 6.92

 

10-1 = 9

SST( 제곱합)

= 368.4

 

 

p값은0.0001487p < 유의확률 α 이므로 귀무가설  H0 : β1 = 0 기각한다, 따라서 회귀식은 유의하다.

 

> qf(0.95,1,8)

[1] 5.317655

유의수준 α =0.05에서 F-기각역 F(1,8;0.05)의 값은 5.32, " F0 = 45.24 > 5.32"이므로 귀무가설 기각, 회귀선은 유희하다

 

> 1-pf(45.25,1,8)

[1] 0.0001485485

유의확률 p값을 이용한 검정은 0.0001485485 이 값이 주어진 유의수준 α =0.05 보다 작을수록 귀무가설을 기각한다.

 


결정계수


R2=SSR/SST =1-SSE/SST


R2 결정계수(coefficient of determination)라고 부른다.


R2=SSR/SST = 313.04/368.4= 84.97%


이는 총변동 주에서 회귀직선에 의하여 설명되는 부분이 84.97%라는 의미로서, 추정된 회귀선의 정도가 높다는 것을 있다.

 

R 통해서도 있는데, Multiple R-squared 0.8497임을 있다.

> summary(market.lm)  



 

 추정값의 표준오차

선형회귀모형 Y= β0 + β1X + ε 을 표본의 자료로부터 적합시킬 때,


Y의 기댓값은 E(Y) = β0 + β1X, 분산은 σ2로 가정,


하였다. 따라서 Y의 측정값들이 회귀선 주위에 가깝게 있다면 σ의 추정값은 작아질 것이다. 

분산분석표에서 잔차평균제곱 MSE는 σ2의 불편추정량이 된다. 따라서 MSE의 제곱근을 추정값의 표준오차(standard error of estimate)라고 부르며, 다음과 같이 표현한다.



SY•X = SQRT(MSE) = SQRT(SSE/n-2) = 2.63


 

R 통해서도 있는데, Residual standard error 2.631임을 있다.

> summary(market.lm) 


 


상관계수와 결정계수

상관계수는 연속인 변수 간의 선형관계(linear relationship) 어느 정도인가를 재는 측도로서, 단순 회귀 분석에서는 상관계수 r 다음과 같이 구할 있다.


r = ±SQRT(R2 )


즉 상관계수는 결정계수 R2 제곱근이며, 만약 추정된 회귀선의 기울기 b1 양이면 양의 상관계수를 갖고, 기울기b1 음이면 음의 상관계수를 갖는다. 회귀식 Ŷ=-2.27 + 2.6 X에서 b1 2.6으로 양이므로 상관계수는 0.8497 sqrt , 0.9217임을 있다.

반응형
Posted by 마르띤
,
반응형

데이터 마이닝 기법의 구분

데이터마이닝에서 사용되는 기법은 크게 지도학습(supervised learning)과 자율학습(unsupervised learning)으로 나눌 수 있음

 

 - 지도학습의 목표는 입출력 간의 관계를 결정하는 시스템에 대한 유용한 근사 시스템을 구하는 것으로 정의할 수 있음. Y = aX + b

- 자율학습에서는교사의 역할에 해당하는 실제 출력값이 존재하지 않음. 따라서 데이터에 존재하는 여러 가지 형태의 특징을 찾는 데 그 목표를 둔다.

 

<데이터 마이닝의 기법>



 


독일신용평가 데이터 셋

독일신용평가 데이터(German Credit Data)는 머신러닝 저장소에 탑재되어 있는 데이터로 분류의 예제로 많이 활용된다.

> setwd('c:/Rwork')

> german<-read.table('germandata.txt')

> head(german,2) # 값들의 변수명이 없음.


> names<-c("check","duration","history","purpose","credit","savings","employment","installment",   "personal",   "debtors",    "residence",  "property",   "age", "others",       "housing",    "numcredits", "job", "residpeople",      "telephone",       "foreign"     ,"y")

> colnames(german)<-names

> head(german,2)

 

> german$y<-factor(german$y,levels=c(1,2),labels=c('good','bad'))

> head(german,2)

  

> summary(german)

#  residence,numcredits,residpeople 실제 범주형이지만 수치형으로 인식. 범주형으로 변환 필요

 

> class(german$residence) #integer 수치형

[1] "integer"

> class(german$check) #factor 범주형

[1] "factor"

> german$residence = factor(german$residence)

> german$numcredits = factor(german$numcredits)

> german$residpeople = factor(german$residpeople)

> class(german$residence) #factor 변환

[1] "factor"

> class(german$numcredits) #factor 변환

[1] "factor"

> class(german$residpeople) #factor 변환

[1] "factor"

> table(german$residence)

1   2   3   4

130 308 149 413 

 

출처: 데이터마이닝, 장영재

반응형
Posted by 마르띤
,
반응형

어느 집단에서 10명의 표본을 추출하여 다음과 같은 4개 문항에 대하여 설문조사를 실시했다.

문항 1: 귀하의 성별은? 1) 남자 2) 여자

문항 2: 귀하의 나이는? (단위: )

문항 3: 귀하의 교육 정도는? 1) 무학 2) 초등졸 3) 종졸 4) 고졸 5) 대졸

문항 4: 귀하의 월 수입은? (단위: 만 원)


설문조사를 실시하여 얻은 응답 데이터를 csv 파일로 저장하고 간단한 작업을 해보자.

 

> setwd('c:/Rwork')

> survey<-read.csv('설문조사 데이터.csv',header=T,sep=',')

> survey

일련번호 변수.1.성별. 변수.2.나이. 변수.3.교육정도. 변수.4..수입.

1         1            1           21                4             100

2         2            2           22                5             100

3         3            1           33                2             200

4         4            2           33                4             120

5         5            1           28                4              70

6         6            1           21                5             100

7         7            2           39                4             190

8         8            1           32                5             220

9         9            2           44                1             170

10       10            1           55                3             310

> summary(survey)

일련번호      변수.1.성별변수.2.나이변수.3.교육정도. 변수.4..수입.

Min.   : 1.00   Min.   :1.0   Min.   :21.0   Min.   :1.00     Min.   : 70.0 

1st Qu.: 3.25   1st Qu.:1.0   1st Qu.:23.5   1st Qu.:3.25     1st Qu.:100.0 

Median : 5.50   Median :1.0   Median :32.5   Median :4.00     Median :145.0 

Mean   : 5.50   Mean   :1.4   Mean   :32.8   Mean   :3.70     Mean   :158.0 

3rd Qu.: 7.75   3rd Qu.:2.0   3rd Qu.:37.5   3rd Qu.:4.75     3rd Qu.:197.5 

Max.   :10.00   Max.   :2.0   Max.   :55.0   Max.   :5.00     Max.   :310.0 

> colnames(survey)<-c('변수','성별','나이','교육정도',' 수입')

> survey

변수 성별 나이 교육정도 수입

1     1    1   21        4     100

2     2    2   22        5     100

3     3    1   33        2     200

4     4    2   33        4     120

5     5    1   28        4      70

6     6    1   21        5     100

7     7    2   39        4     190

8     8    1   32        5     220

9     9    2   44        1     170

10   10    1   55        3     310

> plot(survey$나이, survey$` 수입`)

 


 

> par(mfrow=c(1,2))

> plot(survey$나이, survey$` 수입`,pch=20)

> plot(survey$나이, survey$` 수입`,pch="+")

  

반응형

'KNOU > 1 통계학개론' 카테고리의 다른 글

변수의 종류  (0) 2016.06.28
Posted by 마르띤
,
반응형

통계학 관련 공부를 할 때 모든 책의 첫번째 챕터에서 변수의 종류를 다룬다. 처음 통계를 공부할 때 읽으면 아~ 이런게 있구나 하고 별것 아닌걸로 생각하고 변수들의 정의와 개념을 잘 익히지 않고 그냥 넘어가자 후반부로 가면 갈 수록 다시 책을 앞으로 넘겼다, 뒤로 넘겼다를 반복하였다. 통계학을 공부 할 때 반드시 알아야 할 변수의 종류. 아무리 강조해도 지나치지 않을 변수의 개념 공부.

 

1. 질적 변수(qualitative variable): 조사 대상을 특성에 따라 범주로 구분하여 측정된 변수로 범주형 변수(categorical data)라고도 함. 이러한 질적 변수에 대해 덧셈 등 수학적 연산결과는 아무런 의미가 없기 때문에 연산의 개념을 적용시킬 수 없다. 즉 남자 =1, 여자 =2 변수에서 1.5는 아무런 의미가 없다. 전화번호나 생일 역시 더하거나 나눈다고 하여 의미 있는 값을 얻을 수 없다. 질적 변수가 분석 대상일 때는 각 범주에 속한 개수나 퍼센트 등을 다룬다. 보통 원그래프나, 막대그래프를 이용한다.

 - 명목형(nominal): 변수나 크기가 순서에 대한 의미가 없고 이름만 의미를 부여할 수 있는 경우

   예) 성별(남자 = 1, 여자 =2), 자동차 브랜드(현대=1, 기아=2, 르노삼성=3, GM=4)

 - 순서형(ordinal) – 변수가 어떤 기준에 따라 순서에 의미를 부여할 수 있는 경우

   예) 교육수준(초졸=1, 중졸=2, 고졸=3, 대졸 이상=4), 건강 상태(양호=3, 보통=2, 나쁨=1)

 

2. 양적 변수(quantitative variable): 길이, 무게와 같이 양적인 수치로 측정되거나 몇 개인가를 세어 측정하는 변수로 덧셈, 뺄셈 등의 연산이 가능하다. 히스토그램, 줄기-잎 그림, 점 도표, 시계열 그래프 등을 이용한다.

 - 이산형(discrete): 변수가 취할 수 있는 값을 하나하나 셀 수 있는 경우

   예) 방 갯수, 퀴즈 문제 중 맞힌 개수, 보험 설계사가 계약을 체결할 때 까지 만난 사람 수

 - 연속형(continuous): 변수가 구간 안의 모든 값을 가질 수 있는 경우

 예) 실수 구간 안의 모든 값. 신생아의 키

 

 

어떤 변수의 경우는 이산형 또는 연속형으로 취급되는데, 나이가 그 좋은 예이다. 나이는 시간이 지남에 따라 계속 늘어나는 연속형 변수이지만, 1년 단위로 측정되면 이산형 변수이다. 

 

(1) 파이썬 코드

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# 예제 데이터 생성
data = pd.DataFrame({
    'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female'],
    'Age': [25, 30, 22, 35, 28, 40],
    'Height': [175, 160, 180, 155, 170, 165]
})

# 질적 변수: 성별(Gender)
# 양적 변수: 나이(Age), 키(Height)

# 질적 변수 시각화 (막대 그래프)
plt.figure(figsize=(10, 5))
sns.countplot(x='Gender', data=data)
plt.title('Count of Individuals by Gender')
plt.show()

 

 

# 양적 변수 시각화 (히스토그램)
plt.figure(figsize=(10, 5))
sns.histplot(data['Age'], bins=20, color='skyblue')
plt.title('Distribution of Age')
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.show()

 

# 양적 변수 시각화 (상자 그림)
plt.figure(figsize=(10, 5))
sns.boxplot(x='Height', data=data, color='lightgreen')
plt.title('Box Plot of Height')
plt.xlabel('Height')
plt.show()

 

 

 

반응형
Posted by 마르띤
,
반응형

1. 타이타닉 선실 등급 별 생존 여부

#Class=1st, 2nd, 3rd, Crew / Survived=Yes, No
> data("Titanic")
> str(Titanic)
 table [1:4, 1:2, 1:2, 1:2] 0 0 35 0 0 0 17 0 118 154 ...
 - attr(*, "dimnames")=List of 4
  ..$ Class   : chr [1:4] "1st" "2nd" "3rd" "Crew"
  ..$ Sex     : chr [1:2] "Male" "Female"
  ..$ Age     : chr [1:2] "Child" "Adult"
  ..$ Survived: chr [1:2] "No" "Yes"
> apply(Titanic,c(1,4),sum)
      Survived
Class   No Yes
  1st  122 203
  2nd  167 118
  3rd  528 178
  Crew 673 212
> addmargins(apply(Titanic,c(1,4),sum))
      Survived
Class    No Yes  Sum
  1st   122 203  325
  2nd   167 118  285
  3rd   528 178  706
  Crew  673 212  885
  Sum  1490 711 2201
> par(mfrow=c(1,2))
> mosaicplot(~Class+Survived,data=Titanic)
> mosaicplot(~Class+Survived,data=Titanic,color=c('grey','red'))


2. 타이타닉 성별/연령 별 생존 여부

> mosaicplot(~Sex+Survived,data=Titanic,color=c('grey','red'))
> mosaicplot(~Age+Survived,data=Titanic,color=c('grey','red'))


 3. 타이타닉 성인 남성 / 성인 여성 생존 여부

> mosaicplot(~Class+Survived,data=as.table(Titanic[,'Male','Adult',]),color=c('grey','red'), main="Male+Adult")
> mosaicplot(~Class+Survived,data=as.table(Titanic[,'Female','Adult',]),color=c('grey','red'), main="Female+Adult")


반응형

'KNOU > 1 데이터시각화' 카테고리의 다른 글

막대그래프  (0) 2016.03.08
원 그래프  (0) 2016.03.07
Posted by 마르띤
,

집합

KNOU/1 대학수학 2016. 3. 9. 09:56
반응형

1. 집합

> library(prob)
> U=c('a','b','c','d','e','f')
> A=c('a','b','c','d')
> B=c('a','d','e','f')
> C=c('a','b','c')
> union(A,B) #AUB
[1] "a" "b" "c" "d" "e" "f" > intersect(A,B) #A∩B [1] "a" "d" > intersect(union(A,B),C) #(AUB)∩C [1] "a" "b" "c" > setdiff(A,B) #A-B [1] "b" "c" > setdiff(union(A,B),C) #(AUB)-C [1] "d" "e" "f"


2. 벤 다이어그램

> library(VennDiagram)
> grid.newpage() #새페이지
> venn.plot<-draw.triple.venn(area1=65,area2=75,area3=85,n12=35,n23=15,n13=25,n123=5,
+ category=c('First','Second','Third'),
+ fill=c('blue','red','green'),lty='blank',
+ cex=2,cat.cex=2,cat.col=c('blue','red','green')) #cex=숫자크기, cat.cex=카테고리크기
> grid.draw(venn.plot)



반응형
Posted by 마르띤
,