Dear all, please would you advise : do python and R have different ways to compute the standard deviation (sd) ? for example, in python, starting with : a = np.array([[1,2,3], [4,5,6], [7,8,9]]) print(a.std(axis=1)) ### per row : [0.81649658 0.81649658 0.81649658] print(a.std(axis=0)) ### per column : [2.44948974 2.44948974 2.44948974] # and in R : z <- matrix(c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow=T) # z# [,1] [,2] [,3]#[1,] 1 2 3#[2,] 4 5 6#[3,] 7 8 9 # apply(z, 1, sd) sd(z[1,]) #1 sd(z[2,]) #1 sd(z[3,]) #1 # apply(z, 2, sd) sd(z[,1]) #3 sd(z[,2]) #3 sd(z[,3]) #3 [[alternative HTML version deleted]]
Hello, This has to do with what kind of variance estimator is being used. R uses the unbiased estimator and Python the MLE one. var1 <- function(x){ n <- length(x) (sum(x^2) - sum(x)^2/n)/(n - 1) } var2 <- function(x){ n <- length(x) (sum(x^2) - sum(x)^2/n)/n } sd1 <- function(x) sqrt(var1(x)) sd2 <- function(x) sqrt(var2(x)) z <- matrix(c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow=T) apply(z, 1, sd1) # R apply(z, 1, sd2) # Python apply(z, 2, sd1) # R apply(z, 2, sd2) # Python Hope this helps, Rui Barradas ?s 11:27 de 24/05/19, Bogdan Tanasa escreveu:> Dear all, please would you advise : > > do python and R have different ways to compute the standard deviation (sd) ? > > for example, in python, starting with : > > a = np.array([[1,2,3], [4,5,6], [7,8,9]]) > print(a.std(axis=1)) ### per row : [0.81649658 0.81649658 0.81649658] > print(a.std(axis=0)) ### per column : [2.44948974 2.44948974 2.44948974] > > # and in R : > > > > z <- matrix(c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow=T) > # z# [,1] [,2] [,3]#[1,] 1 2 3#[2,] 4 5 6#[3,] 7 8 9 > # apply(z, 1, sd) > sd(z[1,]) #1 > sd(z[2,]) #1 > sd(z[3,]) #1 > # apply(z, 2, sd) > sd(z[,1]) #3 > sd(z[,2]) #3 > sd(z[,3]) #3 > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Dear Rui, thank you very much ! On Fri, May 24, 2019 at 4:35 AM Rui Barradas <ruipbarradas at sapo.pt> wrote:> Hello, > > This has to do with what kind of variance estimator is being used. > R uses the unbiased estimator and Python the MLE one. > > > > var1 <- function(x){ > n <- length(x) > (sum(x^2) - sum(x)^2/n)/(n - 1) > } > var2 <- function(x){ > n <- length(x) > (sum(x^2) - sum(x)^2/n)/n > } > > sd1 <- function(x) sqrt(var1(x)) > sd2 <- function(x) sqrt(var2(x)) > > z <- matrix(c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow=T) > > apply(z, 1, sd1) # R > apply(z, 1, sd2) # Python > > apply(z, 2, sd1) # R > apply(z, 2, sd2) # Python > > > Hope this helps, > > Rui Barradas > > ?s 11:27 de 24/05/19, Bogdan Tanasa escreveu: > > Dear all, please would you advise : > > > > do python and R have different ways to compute the standard deviation > (sd) ? > > > > for example, in python, starting with : > > > > a = np.array([[1,2,3], [4,5,6], [7,8,9]]) > > print(a.std(axis=1)) ### per row : [0.81649658 0.81649658 0.81649658] > > print(a.std(axis=0)) ### per column : [2.44948974 2.44948974 2.44948974] > > > > # and in R : > > > > > > > > z <- matrix(c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow=T) > > # z# [,1] [,2] [,3]#[1,] 1 2 3#[2,] 4 5 6#[3,] 7 8 9 > > # apply(z, 1, sd) > > sd(z[1,]) #1 > > sd(z[2,]) #1 > > sd(z[3,]) #1 > > # apply(z, 2, sd) > > sd(z[,1]) #3 > > sd(z[,2]) #3 > > sd(z[,3]) #3 > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > >[[alternative HTML version deleted]]