fviz_pca

주요 변수 분석 그리기


옵션

repel - boolean, text labels의 overplotting을 피하기 위해 ggrepel을 사용할지 말지의 여부

col.var - 변수 색

'programing > R studio' 카테고리의 다른 글

CA() - Correspondence Analysis  (0) 2018.05.08
fviz_ca()  (0) 2018.05.08
predict()  (0) 2018.05.08
주성분 분석  (0) 2018.05.08
prcomp()  (0) 2018.05.08

%*% 매트릭스 곱


predict()

lm(), glm() 같은 명령문으로 얻어낸 회귀선으로 주어진 x 값에 해당하는 새로운 y 값을 predict하는 command


predict(model, newdata=A, interval=c("confidence", "prediction"), ...)

model - 예측에 사용할 회귀분석 결과식

newdata=A - 예측에 사용할 x값, 지정하지 않을 시 1~45 정수값에 대한 예측값 출력

interval - 지정된 x 값에 대한 y의 confidence interval or prediction interval을 출력

'programing > R studio' 카테고리의 다른 글

fviz_ca()  (0) 2018.05.08
fviz_pca  (0) 2018.05.08
주성분 분석  (0) 2018.05.08
prcomp()  (0) 2018.05.08
lm()과 scale()  (0) 2018.05.08

주성분 분석

많은 변수에 대해서 주성분이라는 새로운 변수를 생성하여 기존 변수들보다 차원을 요약하고 축소하는 기법

ex) X1, X2, ,,, X10

이 10개의 변수를 주성분 분석을 통해 P1, P2 차원으로 축소하는 것.


P1 - 데이터의 변동(분산)을 가장 많이 설명할 수 있는 것.

P2 - P1과 수직인 주성분


=> 다중공선성도 해결 가능



'programing > R studio' 카테고리의 다른 글

fviz_pca  (0) 2018.05.08
predict()  (0) 2018.05.08
prcomp()  (0) 2018.05.08
lm()과 scale()  (0) 2018.05.08
상관계수 - cor(), 다중공선성  (0) 2018.05.08

prcomp()

공분산 행렬의 고유값을 이용하지 않고, 원데이터에 대해 SVD(특이값 분해, Singular Value Decomposition)를 수행하여 계산하는 것.

자료의 특이치 분해.


prcomp(formula, data, subset, na.action, ...)

subset - 그룹자료

na.action - 결측치 처리


prcomp(x, retx=T, center=T, scale.=F, tol=NULL, ...)

x - 분석대상 자료

retx=T - 변수축 회전 여부

center=T - 원점 설정 여부, 중앙을 0으로

scale.=T - 표준화 여부, 조사값 단위가 다르면 표준화가 필요(분산을 1로)

'programing > R studio' 카테고리의 다른 글

predict()  (0) 2018.05.08
주성분 분석  (0) 2018.05.08
lm()과 scale()  (0) 2018.05.08
상관계수 - cor(), 다중공선성  (0) 2018.05.08
attach()와 detach()  (0) 2018.05.08

lm() : linear model 단순 선형회귀, 설명변수가 여러개인 선형회귀, 회귀를 돌린다 

lm(formula, data, ...)

lm(종속변수(결과) ~ 독립변수(원인),데이터)

formula : 반응 변수~설명 변수의 형태로 지정한 식


Call:

lm(formula = SENT_POS ~ CHAN_BLOG + CHAN_FORUM + CHAN_NEWS + 

    CHAN_TW + CHAN_INSTAGRAM + CHAN_TUMBLER, data = a)

Residuals:

    Min      1Q  Median      3Q     Max 

-2.4902 -0.0330 -0.0253  0.0016  3.2444 


Coefficients:

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

(Intercept)     3.439e-16  5.415e-03   0.000   1.0000    

a      -8.215e-02  1.791e-02  -4.586 4.81e-06 ***

b      3.093e-01  2.107e-02  14.678  < 2e-16 ***

c      -5.767e-02  2.615e-02  -2.205   0.0275 *  

d         7.920e-01  2.623e-02  30.196  < 2e-16 ***

e  2.288e-01  1.305e-02  17.534  < 2e-16 ***

f   -1.542e-01  1.632e-02  -9.452  < 2e-16 ***

---

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


Residual standard error: 0.2407 on 1969 degrees of freedom

Multiple R-squared:  0.9422, Adjusted R-squared:  0.9421 

F-statistic:  5352 on 6 and 1969 DF,  p-value: < 2.2e-16


# *이 많을 수록 관련 있고

# Estimate의 절대값이 클수록 영향력이 큰 것이지만, 단순히 판단하기 어렵다. 왜냐하면 다른 변수가 영향력을 줄 수도 있기 때문!

# y=ax+b 이런 식에서 a값이라고 생각할 수 있음, 즉 배수!


Signif. codes = 유의수준

# 0에서 유의하다, 0.001에서 유의하다 ... 

# 0.001 수준에서 유의한 것이 가장 유의한 것!


# R-squared = 설명력

# 크다고 해서 설명력이 높은 것이 아니고, 참고지표 정도임, 여기에서는 약 94%의 설명력을 지님


# p-value

# 값이 매우 작기 때문에 회귀식이 유의하다고 판단할 수 있음


lm(TOTAL~., data) #여기에서 .은 전체를 뜻함


lm()전 scale()사용


scale() 

데이터 정규화

변수 값으 분포를 표준화하는 것




출처 : http://chloe-ynlee.me/221302458526

'programing > R studio' 카테고리의 다른 글

주성분 분석  (0) 2018.05.08
prcomp()  (0) 2018.05.08
상관계수 - cor(), 다중공선성  (0) 2018.05.08
attach()와 detach()  (0) 2018.05.08
주성분 분석 - PCA  (0) 2018.05.08

상관계수 (pearson correlation coefficient) : cor() 

- 표준화된 공분산

- 공분산은 각 변량의 단위에 의존하게 되어 변동 크기량이 모호하므로, 공분산을 각 변량의 표준편차로 나누어 표준화

- 양의 값이면 두 변수가 같은 방향으로 움직임

- 0이면 선형관계가 없음


1) 표준화변수들의 공분산은 상관계수가 된다

2) 상관계수는 -1<= p <= 1의 범위를 가진다

3) 상관계수 p가 +1에 가까울수록 강한 양의 선형관계를 가진다

4) p=0이면 두 변수간의 선형관계가 없으며, 0에 가까울수록 선형관계가 약해진다

(단, 비선형 관계를 가질 수는 있음)

5) 위치 변환이나 척도 변환 후에도 상관계수는 변함이 없다



cor()

상관계수 확인 -> 0.8~9 등 높은 상관계수가 有 -> 다중공선성 문제 발생 가능! -> 주성분 만들어 해결 가능!


다중공선성?

Multicollinearity

독립변수간 상관관계가 강한 경우



출처: http://rfriend.tistory.com/126 [R, Python 분석과 프로그래밍 (by R Friend)]

'programing > R studio' 카테고리의 다른 글

prcomp()  (0) 2018.05.08
lm()과 scale()  (0) 2018.05.08
attach()와 detach()  (0) 2018.05.08
주성분 분석 - PCA  (0) 2018.05.08
네트워크 분석 개요  (0) 2018.05.08

attach()

> df$rides

> attach(df)

> rides #attach함수를 사용하면 df$rides와 같아짐 


detach()

attach함수를 해제할 때 사용

'programing > R studio' 카테고리의 다른 글

lm()과 scale()  (0) 2018.05.08
상관계수 - cor(), 다중공선성  (0) 2018.05.08
주성분 분석 - PCA  (0) 2018.05.08
네트워크 분석 개요  (0) 2018.05.08
네트워크 분석 - igraph  (0) 2018.05.08
 

> head(iris)

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species

1          5.1         3.5          1.4         0.2  setosa

2          4.9         3.0          1.4         0.2  setosa

3          4.7         3.2          1.3         0.2  setosa

4          4.6         3.1          1.5         0.2  setosa

5          5.0         3.6          1.4         0.2  setosa

6          5.4         3.9          1.7         0.4  setosa

> cor(iris[1:4]) #상관계수 확인

             Sepal.Length Sepal.Width Petal.Length Petal.Width

Sepal.Length    1.0000000  -0.1175698    0.8717538   0.8179411

Sepal.Width    -0.1175698   1.0000000   -0.4284401  -0.3661259

Petal.Length    0.8717538  -0.4284401    1.0000000   0.9628654

Petal.Width     0.8179411  -0.3661259    0.9628654   1.0000000

> log.ir<-log(iris[,1:4]) #데이터가 편향되어 있으므로 log변환 해주기

> ir.species<-iris[,5] #species y변수

> #주성분 분석

> ir.pca<-prcomp(log.ir, center=T, scale.=T)

> print(ir.pca)

Standard deviations (1, .., p=4):

[1] 1.7124583 0.9523797 0.3647029 0.1656840

 

Rotation (n x k) = (4 x 4):

                    PC1         PC2        PC3         PC4

Sepal.Length  0.5038236 -0.45499872  0.7088547  0.19147575

Sepal.Width  -0.3023682 -0.88914419 -0.3311628 -0.09125405

Petal.Length  0.5767881 -0.03378802 -0.2192793 -0.78618732

Petal.Width   0.5674952 -0.03545628 -0.5829003  0.58044745

> plot(ir.pca, type="l")

> 꺾이는데 부분을 elbow point라고 하며,

Error: unexpected symbol in " "

> # 위의 주성분을 주로 선택하여 사용함


> summary(ir.pca)

Importance of components:

                          PC1    PC2     PC3     PC4

Standard deviation     1.7125 0.9524 0.36470 0.16568

Proportion of Variance 0.7331 0.2268 0.03325 0.00686

Cumulative Proportion  0.7331 0.9599 0.99314 1.00000

> #PC1 Cumulative~ 데이터를 보면 PC1 73% 설명 가능하고

> #PC2까지 추가되면 95%까지 설명가능한

>

> #원래 데이터와 선형계수를 메트릭스 곱으로 선형조합에 맞게 만들기

> #ir.pca$rotation 선혀계수 있음

> PRC<-as.matrix(log.ir) %*% ir.pca$rotation

> head(PRC)

            PC1       PC2      PC3        PC4

[1,] -0.2772209 -1.809493 1.604387 -1.0010840

[2,] -0.2507663 -1.654229 1.627078 -0.9946772

[3,] -0.3340210 -1.690148 1.592416 -0.9502831

[4,] -0.2527176 -1.656968 1.556306 -1.0640079

[5,] -0.2957159 -1.825531 1.581020 -1.0074464

[6,]  0.2242011 -1.962854 1.162457 -0.7503219

>

> train1 <- cbind(ir.species,as.data.frame(PRC))

> train1[,1] <- as.factor(train1[,1])

> colnames(train1)[1] <- "label"

>

> head(train1)

   label        PC1       PC2      PC3        PC4

1 setosa -0.2772209 -1.809493 1.604387 -1.0010840

2 setosa -0.2507663 -1.654229 1.627078 -0.9946772

3 setosa -0.3340210 -1.690148 1.592416 -0.9502831

4 setosa -0.2527176 -1.656968 1.556306 -1.0640079

5 setosa -0.2957159 -1.825531 1.581020 -1.0074464

6 setosa  0.2242011 -1.962854 1.162457 -0.7503219

>

> #회귀분석

> fit1 <- lm(label~PC1+PC2, data=train1)

Warning messages:

1: In model.response(mf, "numeric") :

  요인형 종속변수의 type = "numeric" 사용은 무시될 것입니다

2: In Ops.factor(y, z$residuals) : ‘-’ not meaningful for factors

> fit1

 

Call:

lm(formula = label ~ PC1 + PC2, data = train1)

 

Coefficients:

(Intercept)          PC1          PC2 

     0.6696       0.7680      -0.2548 

 

> # 회귀모델의 예측력이 좋은지 확인하기 위해 predict함수로 예측해

> fit1_pred <- predict(fit1,newdata = train1)

> fit1_pred

        1         2         3         4         5         6         7

0.9177087 0.8984698 0.8436802 0.8976691 0.9075902 1.3418786 1.0463684

        8         9        10        11        12        13        14

0.9390723 0.8445396 0.6210744 0.9772913 0.9476893 0.5797361 0.4155148

       15        16        17        18        19        20        21

0.9120119 1.3118574 1.2207336 1.0980907 1.2412319 1.1287785 1.0342953

       22        23        24        25        26        27        28

1.2569135 0.7137137 1.4133590 1.0252950 0.9689303 1.2765822 0.9586297

       29        30        31        32        33        34        35

0.9276385 0.9374478 0.9482156 1.2861381 0.6493632 0.9546398 0.9294394

       36        37        38        39        40        41        42

0.8386486 0.9222122 0.5890660 0.8108801 0.9490303 1.0546664 1.0040768

       43        44        45        46        47        48        49

0.8105124 1.4567990 1.3635121 1.0684832 0.9775414 0.8663319 0.9678917

       50        51        52        53        54        55        56

0.9080860 2.4900652 2.4560586 2.5325228 2.2648798 2.4745413 2.3349098

       57        58        59        60        61        62        63

2.4963131 2.0029576 2.4183566 2.2572967 2.0407272 2.3843643 2.1921680

       64        65        66        67        68        69        70

2.4214215 2.2250403 2.4384336 2.3892785 2.1851043 2.4422283 2.1877138

       71        72        73        74        75        76        77

2.5254085 2.3158257 2.4880022 2.3530434 2.3724269 2.4310584 2.4857568

       78        79        80        81        82        83        84

2.5827240 2.4241655 2.1051215 2.1671554 2.1127110 2.2436308 2.5098066

       85        86        87        88        89        90        91

2.3709906 2.4519709 2.4989128 2.3762102 2.2835777 2.2644047 2.2716131

       92        93        94        95        96        97        98

2.4115164 2.2552790 2.0133592 2.2950601 2.2677511 2.3035534 2.3564617

       99       100       101       102       103       104       105

2.0222024 2.2928712 2.8051324 2.5692110 2.7806345 2.6285684 2.7492116

      106       107       108       109       110       111       112

2.8654869 2.3788516 2.7558419 2.6762160 2.8792490 2.6483604 2.6360837

      113       114       115       116       117       118       119

2.7272214 2.5747804 2.6729336 2.7201117 2.6359540 2.8982001 2.9334209

      120       121       122       123       124       125       126

2.4733191 2.7907960 2.5561109 2.8575388 2.5686743 2.7353583 2.7263118

      127       128       129       130       131       132       133

2.5511097 2.5518512 2.7052657 2.6589710 2.7723682 2.8480064 2.7259613

      134       135       136       137       138       139       140

2.5054224 2.5011639 2.8769550 2.7556452 2.6279707 2.5342278 2.7260895

      141       142       143       144       145       146       147

2.7871266 2.7407486 2.5692110 2.7990284 2.8129241 2.7349133 2.6022894

      148       149       150

2.6574971 2.7122422 2.5531536

>

> b <- round(fit1_pred) #반올림 함수

>

> b[b==0 | b==1] <- "setosa"

> b[b==2] <- "Versicolor"

> b[b==3] <- "Virginica"

>

> a <- ir.species

> table(b,a)

            a

b            setosa versicolor virginica

  setosa         50          0         0

  Versicolor      0         46         2

  Virginica       0          4        48

>

> #setosa : 50단위 50단위 예측

> #versicolor : 50단위 46단위 예측

> #virginica : 50단위 48단위 예측

 


출처 : https://m.blog.naver.com/PostView.nhn?blogId=leedk1110&logNo=220783514855&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

'programing > R studio' 카테고리의 다른 글

상관계수 - cor(), 다중공선성  (0) 2018.05.08
attach()와 detach()  (0) 2018.05.08
네트워크 분석 개요  (0) 2018.05.08
네트워크 분석 - igraph  (0) 2018.05.08
facet_wrap()  (0) 2018.05.07

네트워크는 그래프를 바탕으로하며, 그래프는 점(node, vertex, point)과 가지(edge, arc, line)로 표현된다.

네트워크는 그래프의 가지에 특정한 정량적인 값들을 대응시킨 가중 그래프에 해당한다.

네트워크로 구성되는 각 지점 간의 최소 경로를 찾는 최적화 문제, 친구 관계, 협업 관계, 인터넷 연결망 구조, 웹과 같은 미디어 연결망, 질병 전파, 분자 그래프 등으로 표현되는 다양한 사회 및 자연 현상을 파악하는데 응용 된다.


네트워크 분석 및 시각화 패키지

igraph, statnet, RSiena


statnet은 sna, network, ergm등 네트워크 분석 관련 패키지를 포함


지표

연결정도 : 각 노드가 어느 정도로 많은 관계를 맺고 있는지

근접 : 한 점이 다른 모든 점들에 얼마나 가까운가

중개 : 연결망에서 한 노드가 다른 노드들 사이에 위치한 정도


각 지표는 중심성과 중심화 관점으로 설명됨

중심성 : 네트워크를 구성하는 각각의 노드가 전체 연결망에서 어느 정도 중심에 위치하는가를 나타내는 지표(어느 노드가 가장 중요한지)

중심화 : 네트워크 전체 연결망 형태가 어느 정도 중앙에 집중되어 있는지를 나타내는 지표


밀도 : 중심화와 같이 네트워크의 전체 특성을 나타내는 지표로 전체 노드가 서로 간에 얼마나 많은 관게를 맺고 있는가를 알려줌

'programing > R studio' 카테고리의 다른 글

attach()와 detach()  (0) 2018.05.08
주성분 분석 - PCA  (0) 2018.05.08
네트워크 분석 - igraph  (0) 2018.05.08
facet_wrap()  (0) 2018.05.07
reshape2 - melt()  (0) 2018.05.07

vertex 꼭짓점, 정점

vertices 'vertex'의 복수형



> #네트워크 만들기

> install.packages("igraph")

Error in install.packages : Updating loaded packages

> library(igraph)

>

> g_star<-graph(edges=NULL, n=NULL, directed=FALSE) #방향성, 노드, 에지가 없는 igraph 생성 그래프(초기화)

> g_star<-g_star+vertex("A", shape="circle", size=30, color="yellow") #A라는 노드(모양:, 크기:30, :노랑) 추가

> g_star<-g_star+vertices("B", "C", "D", "E", "F", shape="circle", size=20, color="red")

> g_star<-g_star+edge("A", "B") #edge

> g_star<-g_star+edges("A","C", "A","D", "A","E", "A", "F")

> plot(g_star)




> #네트워크 내의 노드 (점의 갯수)

> vcount(g_star)

[1] 6

> gorder(g_star)

[1] 6

>

> #노드 연결된 에지의 (선의 갯수)

> ecount(g_star)

[1] 5

> gsize(g_star) 

[1] 5

>

> g_Y<-graph(edges=NULL, n=NULL, directed=FALSE)

> g_Y<-g_Y+vertices("A", "B",  "C", "D", "E", "F", shape="circle", size=30)

> g_Y<-g_Y+edges("A","B","A","C", "A","D", "D","E", "E", "F")

> plot(g_Y)

 



https://blog.naver.com/1stwook/220671991938



> #연결정도

> degree(g_star, normalized = FALSE) #A 5개의 노드와 연결되어 있음

A B C D E F

5 1 1 1 1 1

 

> degree(g_star, normalized = TRUE) #정규화된 연결 중심성, 노드에 연결된 에지의 , normalized 표준화 여부, TRUE -> 연결 가능한  수로 나눈 값을 출력
  A   B   C   D   E   F 
1.0 0.2 0.2 0.2 0.2 0.2 

 

tmax<-centr_degree_tmax(g_star) #이론적 연결 정도 중심화 최댓값
> centralization.degree(g_star, normalized = FALSE)$centralization/tmax #정규화된 연결 정도 중심화 측정
[1] 1

 

> #근접 중심성
> closeness(g_star, normalized=FALSE) #A 근접중심성이 가장 
        A         B         C         D         E         F 
0.2000000 0.1111111 0.1111111 0.1111111 0.1111111 0.1111111 
> closeness(g_star, normalized=TRUE) # 노드의 정규화된 근접 중심성
        A         B         C         D         E         F 
1.0000000 0.5555556 0.5555556 0.5555556 0.5555556 0.5555556 
> tmax<-centralization.closeness.tmax(g_star) #이론적인 근접 중심화의 최대값
> centralization.closeness(g_star, normalized=FALSE)$centralization/tmax #정규화된 근접 중심화

[1] 1


'programing > R studio' 카테고리의 다른 글

주성분 분석 - PCA  (0) 2018.05.08
네트워크 분석 개요  (0) 2018.05.08
facet_wrap()  (0) 2018.05.07
reshape2 - melt()  (0) 2018.05.07
%in% 과 match(), slice()  (0) 2018.05.07

+ Recent posts