t。检验中位数和置信区间

时间:2018-07-31 14:34:54

标签: r statistics median

我有一个包含一列薪水的数据框。我想计算在中值附近97%的置信区间。 t.test计算平均值而不是中位数。 你知道我该怎么做吗? 这是我列上t.test的输出:

import pandas as pd

data = pd.DataFrame([[['foo', 'bar']],
                    [['bar', 'baz']]], columns=['list_column'])
print(data)
  list_column
0  [foo, bar]
1  [bar, baz]

filtered_data = data.loc[
    lambda df: df.list_column.apply(
        lambda l: 'foo' in l
    )
]
print(filtered_data)
  list_column
0  [foo, bar]

尽管中位数是:

t.test(d3$REMUNERATION)
One Sample t-test
data:  d3$REMUNERATION
t = 26.131, df = 93, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
37235.65 43360.56
sample estimates:
mean of x 
40298.1 

谢谢

1 个答案:

答案 0 :(得分:0)

如果数据配对,则可以进行简单的符号检验,这实际上是一个二项式检验。您会看到其中一个对的样本大于另一个对的样本对,并测试成功/失败率。

set.seed(1)

x2 <- runif(30, 0.5, 2)^2
y2 <- runif(30, 0.5, 2)^2 + 0.5

bino <- x2 < y2

binom.test(sum(bino), length(bino), conf.level=0.97)

如果数据未配对,则可以执行Mann-Whitney检验,这是对等级的检验。您会看到一个种群中的样本数量大于另一种群中的样本数量,反之。

x <- c(80, 83, 189, 104, 145, 138, 191, 164, 73, 146, 124, 181)*1000
y <- c(115, 88, 90, 74, 121, 133, 97, 101, 81)*1000

wilcox.test(x, y, conf.int=TRUE, conf.level=0.97)

Mann-Whitney测试还有一个成对的变体,称为Wilcoxon符号秩检验,它可以替代简单的符号测试。

wilcox.test(x2, y2, paired=TRUE, conf.int=TRUE, conf.level=0.97)

Wilcoxon假设中位数左右对称,简单的符号检验则不然。要记住的事情。另外,如果要将Mann-Whitney检验解释为中位数的差异,则还必须假设两个总体具有相同的形状,而只是位置发生了移位。


一种根本不同的方法是引导中位数的差异。
天真的实现:

set.seed(1)
rr <- replicate(
  1e3, 
  median(sample(x, length(x), replace=TRUE)) -
  median(sample(y, length(y), replace=TRUE))
)

rr <- jitter(rr, 50)
plot(density(rr))
qu <- quantile(rr, probs=c((1-0.97)/2, 1 - (1-0.97)/2))
abline(v=qu, col="blue")

enter image description here