【问题标题】:R:how to calculate poblational standard deviation and mean [closed]R:如何计算 poblational 标准差和平均值
【发布时间】:2017-10-15 04:42:53
【问题描述】:

我正在寻找计算 R 中总体标准差的步骤,我发现了这个:

sqrt((n-1)/n) * sd(x) # pop
    ## [1] 0.8936971

    sd(x) # sample
    ## [1] 0.8981994

问题是我完全迷路了,不知道如何将公式外推到我的数据中:

YEAR
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013



 GDP
7696034.9
8690254.3
9424601.9
10520792.8
11399472.2
12256863.6
12072541.6
13266857.9
14527336.9
15599270.7
16078959.8

你能帮帮我吗?

【问题讨论】:

  • 为什么您认为您的数据有问题?
  • 我不明白你的问题是什么意思?您已经添加了公式,然后您不能将其与您的数据一起使用!
  • 我非常怀疑标准差的概念是否适用于您的情况,看来您需要一个线性模型,例如fit <- lm(GDP ~ YEAR); plot(YEAR, GDP); abline(fit, col = "red")

标签: r


【解决方案1】:

这是你想要的吗?

y <- c(2003, 2004, 2005, 2006, 2007,2008,2009,2010, 2011,2012,2013)

> n <- length(y)
> sqrt((n-1)/n)*sd(y)
[1] 3.162278

> GDP <- c( 7696034.9, 8690254.3, 9424601.9, 10520792.8, 11399472.2,12256863.6,12072541.6,13266857.9,14527336.9,15599270.7,16078959.8)
> m <- length(GDP)
> sqrt((m-1)/m)*sd(GDP)
[1] 2633634

【讨论】:

    【解决方案2】:

    您可以将数据存储在数据框df

    然后使用

    sd(df$GDP)
    

    【讨论】:

      【解决方案3】:

      试试这个:

      My_list <- list(YEAR, GDP)
      my_sd <- sapply(My_list, function (x) sd(x))
      my_sd
      [1] 3.316625e+00 2.762179e+06
      

      你也可以使用这个:

      > My_sd_pop <- sapply(My_list, function (x) {sqrt((length(x)-1) /length(x)) * sd(x)})
      > My_sd_pop
      [1] 3.162278e+00 2.633634e+06
      

      【讨论】: