wtd.t.test 関数がどのパッケージからのものかを指定しないので、「weights」パッケージの関数を使用すると仮定します。ドキュメントによると、最初の 2 つの引数は 2 つのグループのデータであり、3 番目と 4 番目の引数は 2 つのグループの観測値の重みです。4 番目の引数が指定されていない場合、指定された重みが両方のグループに使用されます。これは、あなたが書いたコードが、Ya1 の加重平均が sec1 の加重平均と異なるかどうかをテストしていることを意味します。これはあなたがやりたいことのようには見えません。あなたのユースケースには lm の方が適していると思います:
# Make some example data
sec1 <- factor(sample(0:1, replace=TRUE, size=700))
Ya1 <- rnorm(700) + as.numeric(sec1)
weights1T <- 1.4^(rnorm(700))
# Use lm() to perform a weighted t-test
summary(lm(Ya1 ~ sec1, weights=weights1T))
与える:
> summary(lm(Ya1 ~ sec1, weights=weights1T))
Call:
lm(formula = Ya1 ~ sec1, weights = weights1T)
Weighted Residuals:
Min 1Q Median 3Q Max
-3.1921 -0.6672 -0.0374 0.7025 4.4411
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.92035 0.05376 17.12 <2e-16 ***
sec11 1.11120 0.07874 14.11 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.061 on 698 degrees of freedom
Multiple R-squared: 0.222, Adjusted R-squared: 0.2209
F-statistic: 199.1 on 1 and 698 DF, p-value: < 2.2e-16
本当に を使いたい場合はwtd.t.test
、次のようにします。
library(weights)
ysplit <- split(Ya1, sec1)
wsplit <- split(weights1T, sec1)
wtd.t.test(y1split[[1]], y1split[[2]], w1split[[1]], w1split[[2]])
とほぼ同じ答えが得られますlm()
:
> wtd.t.test(x=ysplit[[1]], y=ysplit[[2]],
+ weight=wsplit[[1]], weighty=wsplit[[2]])
$test
[1] "Two Sample Weighted T-Test (Welch)"
$coefficients
t.value df p.value
-13.50571 697.25403 0.00000
$additional
Difference Mean.x Mean.y Std. Err
-1.00357229 1.04628894 2.04986124 0.07430724
Warning message:
In wtd.t.test(y1split[[1]], y1split[[2]], w1split[[1]], w1split[[2]]) :
Treating data for x and y separately because they are of different lengths