Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中进行加权T检验?_R_Statistics_Weighted_T Test - Fatal编程技术网

如何在R中进行加权T检验?

如何在R中进行加权T检验?,r,statistics,weighted,t-test,R,Statistics,Weighted,T Test,我有df1: PopDens Score1 Group 93.53455 17.985288 B 137.13861 10.549394 A 35.98619 13.392857 A 89.69800 8.644537 B 16.27796 29.591635 A 25.33346 21.081301 F 89.69800 2.644537 C 46.27796 29.591635 A 25.33346 5.081301 B

我有df1:

PopDens     Score1   Group
93.53455  17.985288   B
137.13861 10.549394   A
35.98619  13.392857   A
89.69800   8.644537   B
16.27796  29.591635   A
25.33346  21.081301   F
89.69800   2.644537   C
46.27796  29.591635   A
25.33346   5.081301   B
36.27796  29.591635   A
 1.33346   9.081301   B
我想在组
a
和组
B
之间进行t检验,观察
score1
的平均值差异

但是,我希望对分析进行加权,以便具有较大的
PopDens
的行在分析中具有更强的权重。例如,我不希望最后一行在分析中具有与第二行相同的权重,因为人口密度非常不同


这是怎么做到的

下面更像是我的想法和快速搜索的小结。我以前从未使用过加权t检验,只使用过线性回归中的权重

加权t检验的定义并不明确。问题在于如何使用权重来估计误差,因为这是t检验的基础。你可以看看这个,也许线性回归中的权重

因此,您的数据:

df = structure(list(PopDens = c(93.53455, 137.13861, 35.98619, 89.698, 
16.27796, 25.33346, 89.698, 46.27796, 25.33346, 36.27796, 1.33346
), Score1 = c(17.985288, 10.549394, 13.392857, 8.644537, 29.591635, 
21.081301, 2.644537, 29.591635, 5.081301, 29.591635, 9.081301
), Group = structure(c(2L, 1L, 1L, 2L, 1L, 4L, 3L, 1L, 2L, 1L, 
2L), .Label = c("A", "B", "C", "F"), class = "factor")), class = "data.frame", row.names = c(NA, 
-11L))
我们仅在A和B上定义子集:

df = subset(df,Group %in% c("A","B"))
我们可以比较t检验和lm的结果:

coefficients(summary(lm(Score1~ Group,data=df)))
             Estimate Std. Error   t value     Pr(>|t|)
(Intercept)  22.54343   3.653195  6.170881 0.0004580837
GroupB      -12.34532   5.479793 -2.252882 0.0589470215

t.test(df$Score1[df$Group=="B"],df$Score1[df$Group=="A"],data=df)

    Welch Two Sample t-test

data:  df$Score1[df$Group == "B"] and df$Score1[df$Group == "A"]
t = -2.404, df = 6.463, p-value = 0.05007
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -24.695931765   0.005282865
sample estimates:
mean of x mean of y 
 10.19811  22.54343
对于B和a的差异效应,你得到了一个p值0.0589470215。对于t检验0.05007,它没有大的不同

现在,对于加权线性回归:

coefficients(summary(lm(Score1~ Group,data=df,weight=df$PopDens)))
             Estimate Std. Error    t value   Pr(>|t|)
(Intercept) 17.845885   3.780246  4.7208269 0.00215547
GroupB      -5.466244   5.727617 -0.9543663 0.37168503
您可以看到,系数的估计是不同的。。更倾向于重量更高的样品

对于包装重量中提供的加权t检验:

library(weights)
wtd.t.test(x=df$Score1[df$Group=="A"],y=df$Score1[df$Group=="B"],
weight=df$Score1[df$Group=="A"],weighty=df$Score1[df$Group=="B"],samedata=FALSE)
$test
[1] "Two Sample Weighted T-Test (Welch)"

$coefficients
   t.value         df    p.value 
2.90701563 6.97938063 0.02283172 

$additional
Difference     Mean.x     Mean.y   Std. Err 
 13.468496  25.884728  12.416232   4.633101 

显然,这是加权t检验中的频率权重,但我不确定。如果您喜欢使用此选项,最好详细阅读代码,因为它没有很好的文档记录如何计算标准错误等。

这很好。在wtd.t.测试中,如果A组有400人,B组有600人,那么总体重为100。应用于A组的权重是40%,应用于B组的权重是60%,还是只是保证A组的权重是100%,B组的权重是100%,而不是跨组的权重?好的,在代码中,他们使用wtd.mean,即总和(权重*x)/总和(权重)。他们分别为小组做这项工作。所以是后者,A中的权重是100%,B中的权重是100%,有没有一种快速或简单的方法可以改变这一点?我如何在不同的组中加权?代码中没有选项,你需要计算出如何实现这种加权的数学。。。快速猜测是将两组中的最小或最大wieght调整为相同