1

傾向スコアから計算された重みを使用して、独立したサンプル t 検定を実行しようとしています。Y は結果変数 (連続変数) で、sec は 2 つのカテゴリ (コード 0 と 1) を持つグループ化変数です。次のコマンドを使用しました。

          wtd.t.test(Ya1, sec1, weight=weights1T)

以下の結果が得られた。

         $test
         [1] "Two Sample Weighted T-Test (Welch)"

         $coefficients
           t.value        df   p.value 
         -25.14739 670.43022   0.00000 

         $additional
           Difference       Mean.x       Mean.y     Std. Err 
         -0.496466247  0.003533753  0.500000000  0.019742259 

現在、これらの結果は明確ではありません。両群の平均を知りたいです。上記の結果も、差が (グループ 1 - グループ 0) なのか、(グループ 0 - グループ 1) なのかは明確ではありません。単純な t.test は重みを考慮していません。どうすればこの問題に対処できますか?

4

2 に答える 2

3

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
于 2016-09-22T18:47:45.063 に答える