Вы думаете в терминах R, и это часто бесполезно в Stata (точно так же, как парень из Stata не может понять, как сделать by ... : regress
в R; каждый пакет имеет свою собственную парадигму и свои сильные стороны) .
Нет объектов для добавления столбцов. Может быть, вы скажете немного больше о том, что вам в конечном итоге нужно сделать с вашими p-значениями, чтобы найти подходящее решение, которому ваши сотрудники Stata сочувствуют.
Если вы действительно хотите добавить новый столбец (generate
новую переменную, говоря Stata), то вы можете посмотреть на tabulate
и его возвращаемые значения:
clear
input x y f1 f2
0 0 5 10
0 1 7 12
1 0 3 8
1 1 9 5
end
Я предполагаю, что ваш A B C D
обозначает две двоичные переменные, а числа являются частотами в данных. Вы должны clear
памяти, так как Stata думает об одном наборе данных за один раз.
Тогда вы могли бы tabulate
результаты и generate
новые переменные, содержащие p-значения, хотя это было бы большой тратой памяти на создание переменных, содержащих постоянное значение:
tabulate x y [fw=f1], exact
return list
generate p1 = r(p_exact)
tabulate x y [fw=f2], exact
generate p2 = r(p_exact)
Здесь [fw=variable]
- это способ задания весов частот; Я набрал return list
, чтобы узнать, какую информацию хранит Stata в результате процедуры. ЭТО объектоподобная вещь, с которой работает Стата. R возвращает результаты теста в компоненте fisher.test()$p.value
, а Stata создает возвращаемые значения, r(component)
для простых команд и e(component)
для команд оценки.
Если вы хотите получить циклическое решение (если у вас много наборов), вы можете сделать это:
forvalues k=1/2 {
tabulate x y [fw=f`k'], exact
generate p`k' = r(p_exact)
}
Это способность к написанию сценариев, в которой Stata, IMHO, намного сильнее, чем R (хотя можно утверждать, что это очень грязная уловка программирования). Локальный макрос k
принимает значения от 1 до 2, и этот макрос заменяется на `` k'` повсюду в фигурной скобке.
Кроме того, вы можете хранить результаты в краткосрочной памяти Stata как скаляры:
tabulate x y [fw=f1], exact
scalar p1 = r(p_exact)
tabulate x y [fw=f2], exact
scalar p2 = r(p_exact)
Однако скаляры не связаны с набором данных, поэтому вы не можете сохранить их с помощью
данные.
Непосредственные команды, такие как cci
, предлагаемые здесь также вернули бы значения, которые вы можете получить аналогичным образом.
HTH, Стас