당신은 단순히 데이터 크기를 조정 (코드를 실행할 때 기계 정확도 내에서 정확한 값 만 값을 얻을 수 있다는 것을 ... 우리가 희망 할 수있는 모든이다 참고).
n <- 100
x <- rnorm(n)
x <- (x - mean(x))/sd(x)
mean(x) # 0, up to machine precision
sd(x) # 1
또한 균일-간격 포인트 을 가지고 ppoints
를 사용할 수있다 (당신은 여전히하지만, 재조정해야한다).
x <- qnorm(ppoints(n))
x <- (x - mean(x))/sd(x)
mean(x)
sd(x)
더 높은 차원에서 변환은 조금 더 까다 롭습니다. x
이 평균 제로 및 분산 인 단위 벡터 인 경우 다음에 C %*% x
은 가우시안이며 평균은 0이며 분산 행렬은 V = CC'
입니다. C
은 Cholesky 변환 V
입니다. 은 (대칭, 양의 준결 정) 행렬에 대한 제곱근의 아날로그로 볼 수 있습니다.
이러한 변환 중 실제로 두 가지가 필요합니다. 첫 번째로 식별에 분산을 설정하고 두 번째로 원하는 값으로 설정합니다.
# Desired variance matrix
V <- matrix(c(1,.2,.2, .2,1,.2, .2,.2,1), 3, 3)
# Random data
n <- 100
k <- 3
x <- matrix(rnorm(k*n), nc=3)
# Set the mean to 0, and the variance to the identity
x <- t(t(x) - colMeans(x))
colMeans(x) # 0
C1 <- chol(var(x))
x <- x %*% solve(C1)
var(x) # identity matrix
# Set the variance to the desired value
C2 <- chol(V)
x <- x %*% C2
var(x) - V # zero
샘플 평균이 모집단 평균과 정확히 같아지기를 원하십니까? 나는 그것이 가능한지 의심 스럽다. – Nishanth
R 또는 python에서 이것을 수행하는 방법을 묻는 중입니까? 아니면 둘 중 하나? 선형 변환을 사용하여 생성 된 데이터에 평균 및 표준 편차를 적용하도록 할 수 있습니다. – Dason
또한 Gaussian 케이스에 대해서만 관심이 있습니까? 아니면 일반적으로 모든 배포판에 적용하고 싶습니까? – Dason