2017-01-19 3 views
2

scale을 사용하여 데이터를 정규화했습니다.정규화 된 값에서 데이터를 다시 변환하십시오.

pp.pmhouravg cc.cmhouravg ss.sdhouravg nn.ndhouravg 
1 -0.1504657 0.8893812 0.9702219 0.8259116 
2 0.9290599 0.6183329 0.1404438 1.4645030 
3 -1.0397516 0.4311897 0.3672155 -0.3284185 
4 -0.4206285 0.4949885 0.6506801 -1.3452993 
5 -0.8044848 -0.7512149 -1.8438082 -0.4889786 
6 1.4862706 -1.6826775 -0.2847531 -0.1277183 
attr(,"scaled:center") 
pp.pmhouravg cc.cmhouravg ss.sdhouravg nn.ndhouravg 
    107.83081  74.30177  46.42045  36.12879 
attr(,"scaled:scale") 
pp.pmhouravg cc.cmhouravg ss.sdhouravg nn.ndhouravg 
    6.729949 19.592842  2.939815  6.228196 

가 어떻게 다시 정상화 후 데이터를 변환 할 수 있습니다 : 예 데이터

structure(list(pp.pmhouravg = c(106.8181818182, 114.0833333333, 
100.8333333333, 105, 102.4166666667, 117.8333333333), cc.cmhouravg = c(91.7272727273, 
86.4166666667, 82.75, 84, 59.5833333333, 41.3333333333), ss.sdhouravg = c(49.2727272727, 
46.8333333333, 47.5, 48.3333333333, 41, 45.5833333333), nn.ndhouravg = c(41.2727272727, 
45.25, 34.0833333333, 27.75, 33.0833333333, 35.3333333333)), .Names = c("pp.pmhouravg", 
"cc.cmhouravg", "ss.sdhouravg", "nn.ndhouravg"), row.names = c(NA, 
6L), class = "data.frame") 

아래에 표시하고 난 다음 정규화 된 데이터를 가지고

scale(df, center = T, scale = T) 

을 사용 정상화하는 것입니다.

b <- attr(sx, "scaled:scale") 
a <- attr(sx, "scaled:center") 
rx <- sx * rep(b, each = nrow(sx)) + rep(a, each = nrow(sx)) 

:

+0

가있을 도움 [backtransform 스케일()을 플롯 (http://stackoverflow.com/questions/10287545/backtransform-scale-for-plotting) –

답변

2

x 원래 데이터를하고 sx가 조정 하나 (데이터 프레임 또는 매트릭스 될 수있다), 당신이 할 수있는 (scale 매트릭스를 반환으로, 행렬이어야 함)하자 "디 스케일 된"데이터 rx은 당연히 매트릭스이기도합니다. sx은 매트릭스입니다. 우리가 (scale()과 정확히 같은 결과를 가질 것이다) 너무 우리 자신에 Z 점수-정상화를 시도 할 수

data.frame(rx) 
1

개념적으로 명확하고 원래의 행렬을 얻을 : 당신은 단순히 수행하여 그것을 데이터 프레임을 만들 수 있습니다 백업 :

# save the mean and sd 
mu <- colMeans(df)  
sd <- sapply(df, sd) 

scaled <- t((t(as.matrix(df)) - mu)/sd) # z-score-normalize 
all(scaled == scale(df, center = T, scale = T)) # check the scaled matrix is same as obtained from scale() 
#[1] TRUE 

orig <- t(t(scaled)*sd + mu) # get the original matrix back 
all.equal(as.matrix(df), orig) 
#[1] TRUE