我有一个包含一列薪水的数据框。我想计算在中值附近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
谢谢
答案 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")