2016-09-22 10 views
0

Я пытаюсь запустить независимый тестовый t-тест с весами, рассчитанными с помощью оценки склонности. Y - переменная результата (непрерывная переменная), а сек - переменная группировки, имеющая две категории (код 0 и 1). Я использовал следующую команду:Независимый образец T-теста после взвешивания

  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 не учитывает веса. Как я могу справиться с этой проблемой?

+2

вы должны указать, какой пакет вы используете, потому что 'wtd.t.test' не находится в базовой статистике – C8H10N4O2

ответ

0

Мне кажется, что результаты прямо перед вами.

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

Mean.x и Mean.y дают вам среднее значение для первой и второй группы (то, что вы вызываете группу 0 и 1, или Ya1 и sec1 в коде).

Difference явно Mean.x минус Mean.y

0

Вы не указали какой пакет wtd.t.test функция приходит, поэтому я предполагаю, что с помощью функции из пакета «весов». Согласно документации, первые два аргумента - это данные из двух групп, а 3-й и 4-й аргументы - веса для наблюдений в двух группах. Если 4-й аргумент не указан, данные веса будут использоваться для обеих групп. Это означает, что код, который вы написали, это проверка того, отличается ли взвешенное среднее от Ya1 от взвешенного среднего значения sec1. Это не похоже на то, что вы хотите сделать. Я думаю, что лм лучше подходит для случая использования:

# 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