Data science (98)

반응형

직접 표준화


  • 비교하고자하는 집단의 연령별 측도(발생률, 유병률, 사망률 등)는 알려져있지만, 표준화된 인구에서는 어떨지 알아보고 싶을 때 사용한다.
  • 표준화된 인구 구조가 미리 정해져있어야한다. 
  • 표준화된 인구 구조를 정하는 방법에도 여러가지가 있는데, 한국이면 주로 한국 표준 인구를 사용한다. 또는 세계인구를 사용할 수도 있다.


방법 )


1. A집단과 B집단의 연령별 사망률을 알아보고자 할 때, 두 집단 별로 사망률을 표준 인구에 대입시켜 표준 인구에서의 연령별 기대 빈도수를 계산한다.

2. 연령별 기대 빈도수를 모두 합한 후, 표준 집단의 총 인구수로 나누어 표준화율을 구한다.

3. 두 집단의 표준화율을 비교하여 어떤 집단의 사망률이 더 높은지를 판단한다.



간접 표준화


  • 간접 표준화의 경우, 특히 어떤 집단의 발생률, 사망률 등이 표준 집단에 비해 높은지, 낮은지를 판단하기 위해서 사용한다.
  • 또는 두 집단의 발생률, 사망률 등을 비교할 때도 쓰인다.
  • 간접 표준화 방법실제 관찰된 사건 수기대사건 수비교하는 방법이다.
  • (실제 관찰된 사건 수) / (기대사건수) = SIR (또는 사망률일 경우 SMR) 이라고 한다.
  • SIR = Standardized Incidence Ratio, SMR = Standardized Mortality Ratio 의 약자이다.
  • 만약 어떤 집단의 발생률이 표준 집단에 비해 높은 경우 SIR > 1일 것이고, 낮은 경우 SIR < 1 일 것이다.
  • 이 SIR에 표준화 발생률을 곱하면 간접 표준화 발생률이 된다.
  • 즉, 간접표준화발생률 = SIR * 표준화발생률

직접 표준화 방법에 비해 간접표준화 방법이 가지는 방법의 이점

  • 특정 집단의 전체 율만 아는 경우
  • 연령별 율의 신뢰도가 적은 경우
  • 사망자수나 발생자 수가 워낙 적어 값이 불안정한 경우

위와 같은 경우에 간접 표준화 방법은 직접 표준화 방법에 비해 더욱 안정적이고 보수적인 값을 제공한다.

직접 표준화 방법과 간접 표준화 방법의 차이를 직관적으로 정리하면 직접 표준화 방법에서는 비교하고자하는 집단의 발생률을 표준 집단에 가져가서 표준집단에서 기대 발생자수를 구하고, 간접 표준화 방법에서는 표준 집단의 발생률을 비교하고자하는집단으로가져가 기대 발생자수를 구한다. 

직접 표준화 방법의 경우 비교하고자하는 집단의 발생률을 표준 집단으로 가져가는 것이기 때문에 비교하고자하는 집단의 발생률이 불안정하면 안된다. 예를 들어 비교하고자하는 집단의 사람 수가 너무 적다면, 예를 들어 희귀병이 3명중 1명이 발생하였으면 발생률이 0.33이 되어서 이 값은 불안정한 값이된다. 따라서 표본의 수, 발생자 수가 적다면 간접 표준화 방법을 쓰는것이 더 안정적이다. 


간접 표준화 방법 예시


그냥 보기에는 Area2가 사망률이 높아보인다. (5.1% vs 4.1%) 그러나 잘 보면 Area2가 전체적인 연령이 높은 것을 알 수 있다. 이 경우 간접표준화 방법을 이용하여 연령을 보정해보자.



표준 인구집단을 선정한다. 표준 인구집단은 많은 경우에 '대한민국 표준인구'를 사용하지만 이 경우에는 Area1+Area2를 통해 표준 인구를 구성한다. 이렇게 구한 표준 인구의 사망률은 4.6%이다.



Area1과 Area2의 연령별 기대 사망자수를 구한다. 기댓값은 (사람수)x(표준화사망률)로 구한다. 
Area1의 기대 사망자수는 37.79 명이고, Area2의 기대 사망자수는 54.21명이다.

따라서, 
Area1의 SMR = 41/37.79 = 1.08
Area2의 SMR = 51/54.21 = 0.94 이다. 

절대적으로는 Area2의 사람이 더 많이 죽었지만 표준화된 인구를 고려했을 때, Area2의 상대적으로 많이 죽었음을 알 수 있다.

마지막으로 간접표준화사망률을 구하면

Area1의 간접표준화사망률 = 4.6% * 1.08 = 5.0%
Area2의 간접표준화사망률 = 4.6% * 0.94 = 4.3%



참고

http://www.dartmouthatlas.org/downloads/methods/indirect_adjustment.pdf



반응형
반응형

Relative Risk 와 Odds Ratio의 정의


 

 disease

non-disease 

 

 smoker 

20 (a)

80 (b)

100 

 non-smoker 

5 (c)

95 (d)

100 

 

25 

175 

200 


 

Relative Risk는 Risk Ratio 라고도 부르며 줄여서 RR 이라고 부르기도 합니다. 이름에서 알 수 있듯 RR은 Risk의 '비' 를 뜻합니다. 예를 들어, 위 표에서 smoker의 disease에 대한 Risk는 20/100 = 0.2 입니다. 즉 smoker인 경우 질병에 걸릴 확률이 0.2라는 것입니다. 반면 non-smoker의 disease에 대한 Risk는 5/100 = 0.05 입니다. 따라서 smoking의 disease에 대한 Relative Risk는 0.2/0.05 = 4 라고 할 수 있습니다. 이를 식으로 표현하면 (a/a+b)/(c/c+d) 입니다. Relative Risk는 직관적입니다. 담배를 폈을 경우 4배 더 질병에 걸릴 확률이 높다. 라고 직관적으로 해석할 수 있습니다. 


odds ratio는 OR 이라고 부르며 odds의 '비율' 입니다. 따라서 odds ratio를 알기 전에 우선 odds가 무엇인지 알아야합니다. odds는 실패와 성공의 비입니다. 위의 경우에는 smoker의 질병에 대한 odds는  20/80 = 0.25 이고 non-smoker의 질병에 대한 odds는 5/95 = 0.052 입니다. 따라서 odds ratio는 0.25/0.052 는 약 4.8입니다. 이를 수식으로 표현하면 (a/b)/(c/d) = 4.8 입니다. 값을 구하는건 구하는 건데 odds ratio는 직관적으로 해석하기 어렵습니다.



왜 Odds Ratio를 쓸까?


위와 같은 상황 (어떠한 처리군들 간에 질병에 대한 비교를 할 경우) RR을 써도 OR을 써도 상관없습니다. 하지만 중요한 것은 case-control study에서는 relative risk를 쓸 수 없습니다. 즉, case-control study에서는 OR만 씁니다.



Case Control Study란 무엇인가?


Case Control Study는 사례대조연구라고 하는데 우선 네이버 백과에서 정의를 살펴보겠습니다.


연구대상군의 특성을 명확히 하고 그 기본적 구조를 명백히 하기 위해 몇가지 요인을 조절한 대상 control을 골라 제각기 거기에 대해서 동일내용 및 방법으로 조사ㆍ연구를 하는 일종의 비교연구 법이다. [네이버 백과]


말이 어렵게 되어있는데 예를 들어 다음과 같은 상황입니다. 위에서는 smoker 100명, non-smoker 100명을 뽑아서 이들간에 질병의 발생률을 비교했죠. 하지만 아래와 같은 경우에는 병에 걸린사람 100명, 병에 걸리지 않은 사람 100명을 뽑았습니다.  (위에서 병에 걸린 사람의 smoker와 non-smoker의 비가 4:1으므로 여기서도 4:1 정도일 것입니다.) 이렇게 환자군과 대조군을 뽑아서 비교하는 것을 case-control study라고 합니다. 질병의 발생률이 매우 낮은 경우에는 이러한 study가 위와 같은 코호트 연구보다 좋습니다. 


 

 disease

non-disease 

 

 smoker 

80 (a)

45 (b)

 125

 non-smoker 

20 (c)

55 (d)

 75

 

100

100

200


이 경우 smoker의 risk를 구해보면 80/125입니다. 그대로 해석하면 약 65%의 환자가 흡연자가 병에 걸린다는 것입니다. 이는 모순입니다. 왜냐하면 병에 걸린 사람 100명, 병에 걸리지 않은 사람을 100명을 대상으로 RR을 계산한 것이니 병에 걸릴 위험율이 높게 나올 수 밖에 없겠죠. 실제로 RR을 구하면 (80/125) / (20/75) = 2.4 입니다. 샘플이 바뀌면, RR도 바뀐다는 것을 알 수 있습니다. 따라서 이러한 경우에는 RR을 쓸 수 없습니다. 하지만 case-control study에서 OR은 유효합니다. (80/45)/(20/55) = 약 4.91이 나옵니다. 따라서 OR이 RR 보다 더욱 범용적이라고 할 수 있습니다. 


또한 OR은 RR의 근사치로 사용되기도 합니다. OR = (a/b)/(c/d)이고 RR = (a/(a+b))/(c/(c+d)) 입니다. 따라서 a, c가 매우 작은 값이라면 OR을 RR에 근사시킬 수 있습니다. 그러므로 이러한 근사를 사용하면 위와 같은 case-control study에서도 OR을 근사해 RR을 알아볼 수 있는 것입니다.



반응형
반응형

/**

날짜 : 2017.01.30

밑바닥부터 시작하는 딥러닝(한빛미디어) 참고

Softmax 구현 및 성질

*/


Softmax 함수는 3-class 이상의 classification을 목적으로 하는 딥러닝 모델의 출력층에서 일반적으로 쓰이는 활성화 함수(activation function)이다. Softmax 함수는 아래와 같이 나타낼 수 있다.




이를 Latex 표기법으로 나타내면 아래와 같다. (Latex는 라텍스라고 읽으면 안되고 레이택으로 읽는다..)


\begin{align}

y_k = {exp(a_k)}/{\sum_{i=1}^{n}(exp(a_i))}

\end{align}


(위 코드를 Jupyter notebook에서 markdown으로 선택하여 입력 후 run을 누르면 위와 같은 수식이 출력되는 것을 확인할 수 있다. Jupyter notebook에서는 Latex 코드를 수식으로 변환하는 기능을 지원한다.)


""" Softmax 구현 """
import numpy as np

def softmax(a) :
    exp_a = np.exp(a)
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a
    
    return y

a = np.array([0.3, 2.9, 4.0])

print softmax(a) # softmax 결과값 출력
print sum(softmax(a)) # softmax 결과값들의 합은 1이 된다.


Softmax 수식을 그대로 파이썬 코드로 옮기면 위와 같다. 결과가 잘 출력되는 것을 확인할 수 있다. 하지만 Softmax는 수식 안에 e의 지수를 포함하고 있는데, 지수함수는 지수가 커질 수록 매우 큰 폭으로 증가하기 때문에 overflow가 발생하기 쉽다. 아래 코드를 보면 overflow가 발생하는 예와 이를 어떻게 해결하는지를 볼 수 있다.


""" Softmax는 Overflow에 취약하다.
    수식에 e^x 들어가기 때문에 Overflow 범위를 넘어설 수 있다. 
    이를 해결하기 위해서는 Softmax의 성질을 이용한다.
"""
def new_softmax(a) : 
    c = np.max(a) # 최댓값
    exp_a = np.exp(a-c) # 각각의 원소에 최댓값을 뺀 값에 exp를 취한다. (이를 통해 overflow 방지)
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a
    return y
    
a = np.array([1010, 1000, 990]) 
print softmax(a) # overflow
print new_softmax(a) # 정상적으로 출력

# 또한 softmax와 new_softmax 의 결과값을 같다.
test = np.array([1,3,6])
print 'softmax', softmax(test) # [ 0.00637746  0.04712342  0.94649912]
print 'new_softmax', new_softmax(test) # [ 0.00637746  0.04712342  0.94649912]


Softmax를 구현할 때 overflow 가 자주 발생하는 문제를 해결하기 위해 위와 같은 새로운 softmax 함수인 new_softmax를 정의한다. 이는 원소에 어떠한 수를 더하여 exp를 취하더라도 결과 값이 같다는 softmax의 성질을 이용한 것인데, 


위의 등식에서 C를 '원소들의 최댓값의 음수'로 한 것이다. 예를 들어 a = [1010,1000,990] a+c = [0,-10,-20] 이 된다. 이 때, a와 a+c의 softmax 결과값은 같다.



반응형
반응형

/**

날짜 : 2017.01.25

밑바닥부터 시작하는 딥러닝(한빛미디어) 참고

Numpy 기초, 간단한 신경망 구현

*/



numpy 패키지는 데이터 과학, 딥러닝 분야에서 쓰이는 매우 중요한 파이썬 패키지이다. numpy는 거의 표준이라고 불릴만큼 대부분의 사람들이 애용하는 패키지이다. numpy가 쓰이는 가장 큰 목적 중에 하나는 배열, 행렬, 벡터, 텐서와 같은 '다차원 배열'의 구현이다. 많은 사람들이 다차원 배열을 구현할 때 numpy를 이용한다. numpy에서는 이를 ndarray라고 부른다. 또 파이썬의 기본 자료 구조에는 array가 없기 때문에, 꼭 딥러닝이 아니더라도 numpy array는 파이썬에서 1차원 배열을 구현할 때도 쓰인다.


numpy의 기초 문법을 정리하고 이를 이용하여 인풋 2개, 아웃풋 2개, 히든 레이어가 2개(각각 노드수가 3, 2인)인 간단한 신경망을 구현해 보았다.


import numpy as np

A = np.array([1,2,3,4])

print(A)

# 차원출력
np.ndim(A)

# 배열 형상 출력. 튜플로 반환된다.

print A.shape
# (4L,)

print A.shape[0]
# 4


  • 위와 같은 문법을 통해 numpy array를 만들 수 있고, shape, dimension 등을 확인할 수 있다.


""" 2차원 배열 """
B = np.array([[1,2], [3,4], [5,6]])
print(B)

np.ndim(B)

B.shape


  • 2중 대괄호를 쓰면 2차원 배열을 만들 수 있다.


""" 3차원 배열 이상 """
# 2x3x4 배열을 만들고 0으로 초기화
C = np.zeros((2, 3, 4))

print 'C', C

# 아래와 같이 자유롭게 만들 수 있음
D = np.array([[[ 1., 2., 3., 4.],
        [ 0.,  0.,  2.,  0.],
        [ 4.,  0.,  3.,  0.]],
       [[ 1.,  4.,  0.,  6.],
        [ 0.,  0.,  5.,  0.],
        [ 0.,  0.,  0.,  5.]]])

print 'D', D

# 2x2x3x4 4차원 배열
E = np.zeros((2,2,3,4))
print 'E', E


  • 위와 같이 3차원 배열, 4차원 배열 등의 고차원 배열을 만들 수 있다.


""" 내적 """
A = np.array([[1,2], [3,4]])
A.shape

B = np.array([[5,6], [7,8]])
B.shape

np.dot(A,B)

#array([[19, 22],
#       [43, 50]])


  • np.dot 명령어를 통해 두 행렬의 내적(dot product)을 구할 수 있다. 신경망에서 이전층에서 다음층으로 forward 되는 것을 구현할 때 입력과 출력을 행렬의 내적으로 표현할 수 있다.


""" 간단한 신경망 구현 
    입력층에서 1층으로 가는 신호 
    첫 번째 히든 레이어의 노드 수는 3개
"""

def sigmoid(num) : 
    return 1/(1+np.exp(-num))

X = np.array([1.0,0.5]) # 입력이 2개 (x1, x2)
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 입력에 대응하는 weights 
B1 = np.array([0.1,0.2,0.3]) # bias

print X.shape # 1x2
print W1.shape # 2x3
print B1.shape # 1x3

A1 = np.dot(X,W1) + B1
Z1 = sigmoid(A1) # 첫 번째 레이어의 최종 아웃풋

print A1
print Z1


입력층에서 첫 번째 히든 레이어(노드 3개짜리)로 forward하는 것을 구현한 것이다. 입력과 weights, bias는 임의로 정한 것이다. 입력은 x1, x2 이고 각각 1.0,  0.5 이다. weights는 총 6개이다. (이는 input layer의 노드 수 2와 첫 번째 히든레이어의 노드수 3을 곱한 것이다.) bias는 길이 3의 array인데 이를 더해주어 XW에 더하여 XW+B를 만든다. Bias가 왜 필요한지 그리고 신경망에 대한 기본적인 이해는 http://hunkim.github.io/ml/ 홍콩 과기대 김성훈 교수님의 강의를 참조하면 좋다.


""" 1층에서 2층으로 가는 신호 구현
"""
W2 = np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]])
B2 = np.array([0.1,0.2])

print Z1.shape # 1x3 첫 번째 레이어의 아웃풋이 인풋이 된다.
print W2.shape # 3x2
print B2.shape # 1x2

A2 = np.dot(Z1, W2) + B2
Z2 = sigmoid(A2)


 첫 번째 히든레이어에서 두 번째 히든레이어로 forward하는 것의 구현이다. 첫번째 히든 레이어의 아웃풋 Z1이 인풋이 되었고 위와 같은 방식으로 Z1*W2+B2를 하면 두 번째 히든 레이어의 output을 구할 수 있다.


""" 2층에서 출력층으로 가는 신호 구현
"""

# 출력층의 활성화 함수로 항등함수를 쓴다. 
# 회귀의 경우 출력층의 활성화 함수로 일반적으로 항등항수를  쓴다.
# 2-class classification에서는 sigmoid
# 3-class 이상의 classification에서는 softmax를 쓴다.
def identity_function(x) :
    return x

W3 = np.array([[0.1,0.3],[0.2,0.4]])
B3 = np.array([0.1,0.2])

print Z2.shape # 1x2
print W3.shape # 2x2
print B3.shape # 1x2

A3 = np.dot(Z2, W3) + B3
Y = identity_function(A3)

print Y # 최종 아웃풋 출력 


두 번째 히든 레이어에서 출력층으로 forward 하는 것의 구현이다. 출력층의 activation function은 identity function을 사용하였는데, 이는 '풀고자 하는 문제의 성질' 과 관련이 있다. 회귀에서는 항등함수를, 2클래스 분류에서는 시그모이드를, 다중 클래스 분류에는 소프트 맥스 함수를 사용하는 것이 일반적이다.

반응형
반응형

/**

날짜 : 2017.01.25

밑바닥부터 시작하는 딥러닝(한빛미디어) 참고

activation function 정리

*/


1. Step Function


import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
""" 일반적인 step_function """
def step_function(x) : 
    if x > 0 :
        return 1
    else : 
        return 0

""" numpy의 트릭을 사용한 step function 구현 """
def step_function_np(x) : 
    y = x > 0
    # boolean을 int로 변환하면 True = 1, False = 0이 된다.
    # numpy 배열의 type을 변경할 때 .astype을 쓴다.
    return y.astype(np.int)


첫 번째 step_function의 경우 numpy array를 입력으로 받아들일 수 없다. 반면 step_function_np 함수는 numpy array를 입력으로 받아들일 수 있다. 아래의 경우 y = x > 0 에서 boolean 형식의 numpy array가 반환되는 점을 트릭으로 활용하여 이를 step_function 구현해 활용한 것이다.


실제로 파이썬에서 deep learning 알고리즘을 구현할 때는 일반적으로 numpy array를 입력으로 받아 numpy array를 출력으로 내보내는 함수를 작성하는 것이 편하므로 step_function_np와 같이 구현하는 것이 더 바람직하다.


x = np.arange(-5.0, 5.0, 0.1) # -5.0부터 5.0까지 0.1 간격의 numpy array 생성
y = step_function_np(x)

plt.plot(x,y)
plt.ylim(-0.1,1.1)
plt.show()



2. Sigmoid function


def sigmoid(x) :
    return 1 / (1+np.exp(-x))

x = np.array([-1.0, 1.0, 2.0])

# numpy broadcast 기능으로 인해 정상수행
sigmoid(x)


  • numpy broadcast 기능으로 인해 numpy array에 어떠한 연산을 하면 각각의 element에 연산이 적용된 numpy array가 반환된다.


x = np.arange(-5.0,5.0,0.1)
plt.plot(x, sigmoid(x))
plt.ylim(-0.1,1.1)
plt.show()


  • np.arange는 -5.0 부터 5.0까지 0.1 간격으로 numpy array를 생성해준다.



3. ReLU


def relu(x) : 
    return np.maximum(0, x)


x = np.arange(-5.0,5.0,0.1)
plt.plot(x, relu(x))
plt.show()





반응형
반응형

/**

NbViewer를 통해 Jupyter Notebook Share하기

작성자 : 3개월

2016/11/7

*/


Jupyter notebook으로 작성한 코드를 누군가와 공유하고 싶을 때

Nbviewer를 사용하면 간편하게 웹을 통해 코드와 코드의 실행 결과를 공유할 수 있다.

방법은 github gist에 ipynb를 업로드한 후 gist 코드를 Nbviewer 웹 페이지에 입력만 하면 된다.



이 절차는 아래와 같다. (iPython의 notebook 파일인 ipynb를 기준으로 설명한다.)


1. https://gist.github.com/ 에 접속한다.


2. 공유하고 싶은 .ipynb 파일의 raw source를 복사해서 붙여넣는다.

그리고 create public gist를 클릭한다.



3. 만들어진 파일을 클릭해서 들어가면 아래와 같은 url을 볼 수 있다. 뒤의 코드를 복사한다. 9ca2c306ccfa ... 부분이다.




4. http://nbviewer.jupyter.org/ 에 접속해 아래 빈칸에 코드를 붙여넣고 Go! 를 누른다.





위와 같이 Jupyter notebook 코드가 업로드되어 있는 것을 확인할 수 있다. 

누군가와 코드를 공유할 때 위의 nbviewer 링크만 보내주면 간단히 코드와 그 결과를 공유할 수 있다.



반응형
반응형

Jupyter notebook에서 tensorflow를 이용하려고 하였는데 tensorflow 모듈이 없다는 반응이 오는 문제가 있었습니다.

이 문제 해결을 위하여 오랜 시간을 사용 하였기에 다른 분들은 빨리 해결하면 좋겠다는 마음에서 이 글을 썼습니다.



문제 : https://github.com/jupyter/jupyter/issues/95


iPython 쉘 환경에서와 Jupyter notebook에서 virtualenv를 사용할 때 반응이 다름.



해결 : http://ipython.readthedocs.io/en/latest/install/kernel_install.html


Jupyter notebook에서 virtualenv를 이용하려면 수동으로 지정을 해주어야합니다.


source activate myenv python -m ipykernel install --user --name myenv --display-name "Python (myenv)"



위처럼 source activate를 통해 가상환경을 만들고 이 상태에서 ipykernel 위에도 가상환경을 인스톨하면 

Jupyter notebook에서도 가상환경을 이용할 수 있습니다.




반응형
반응형
SAS 무료 버젼인 University Edition에 대해서 아시나요?

원래는 비싼 통계 분석 프로그램인 SAS의 학생용 무료 버젼입니다.

SAS의 모든 기능을 제공하는 건 아니고 일부 제공되는데 간단한 실습용으로는 쓸만한 것 같습니다. 

다만 설치가 조금 까다로운데 VMWare나 Virtual Box 같은 가상 머신을 사용해야 합니다.

설치하는 방법을 요약하면 아래과 같습니다. (VMWare 기준입니다.)


http://www.sas.com/en_us/software/university-edition/download-software.html


1. 위 링크에 접속하고 SAS 회원가입을 합니다.


2. VMWare를 다운받습니다. 위 링크에 링크가 있음.


3. SAS University Edition을 다운받고 압축을 풉니다.


4. VMWare가 다운로드하고 설치가 다 되었으면 VMWare Player나 VMWare Workstation을 실행합니다.


5. Open Virtual Machine을 클릭하고 아까 압축을 푼 SAS University Edition 폴더의 SAS-University-Edition.vdx 파일을 엽니다.


6. 가상머신과의 공유폴더를 설정하여야합니다. 로컬 드라이브 아무곳에나 SASUniversityEdition 폴더를 생성하고 그 하위 폴더로 myFolders를 만듭니다.


7. 아래와 같이 VMWare에 있는 SAS-University-Edition을 우클릭한 후 Settings를 클릭합니다.


 



8. Settings에 들어 갔으면 Option - Shared Folders에 들어간 후 Folder Sharing을 Always Enabled로 설정합니다. 그리고 Add를 클릭하여 방금 만든 myFolders를 추가합니다. OK를 누르고 창을 닫습니다.


9. 다시 SAS-University-Edition을 우클릭한후 Power를 켭니다.


10. 조금 기다리면 다음과 같은 화면이 나오는데 가상머신에서 나와서 웹 브라우저를 연 후 아래 아이피에 접속하면 SAS Studio를 이용할 수 있습니다.

(저는 처음에 http://unknown 나와서 당황했는데 VMWare를 업데이트 하니까 되더군요.

VMWare를 예전에 설치하셨는데 오래 사용하지 않으신 분들은 업데이트 한 번 해주시면 되겠습니다.)



 


 



위와 같이 웹브라우저 환경에서 SAS를 이용할 수 있습니다 신기하네요!




잘 이해가 안 가시는 분들은 아래 pdf 파일에 더 상세하게 나와있습니다~


https://support.sas.com/software/products/university-edition/docs/en/SASUniversityEditionQuickStartVMwarePlayer.pdf


반응형
반응형