New in 
Таблици с описателна статистика
Лесно създайте таблица 1 с новата команда dtable. Отчитайте описателната статистика. Сравнете статистическите данни за различните групи. Експортирайте в Word, Excel, PDF, HTML и др.
Преглед
Когато публикувате работата си, обикновено включвате таблица с описателна статистика, известна като „Таблица 1“; тя предоставя на читателя известна информация за извадката ви. Например може да искате да представите някои демографски данни, като например средна възраст и среден доход. Може също така да сравните тези характеристики по групи, като региони или професионални области.
В Stata 18 можете да използвате dtable, за да създадете тези и много други варианти на „Таблица 1“ и да ги експортирате в много формати. Например, можем да създадем таблица и да я експортираме в Excel:

Акценти
-
Създайте таблица в стил „Таблица 1“ със следното:
-
Обобщаваща статистика за непрекъснати и категорични променливи
-
Обобщени статистически данни за групи от вашите данни
-
Тестова статистика за сравняване на групите по обобщена статистика
-
Коригирана за изследването тестова статистика
-
Статистически данни, претеглени чрез проучване
-
-
Персонализиране на таблицата
-
Добавяне на заглавие с персонализиран стил на шрифта
-
Добавяне на бележки с персонализиран стил на шрифта
-
Персонализиране на статистическите данни за извадките, формата, заглавието на колоната и др.
-
-
Експортиране на таблицата
-
Word®
-
Excel®
-
PDF
-
HTML
-
LaTeX
-
И още
-
Таблица 1-Excel
Или можем да създадем таблица и да я експортираме в HTML,

Таблица 1-HTML
Слово,

Таблица 1-HTML
или PDF.

Освен това, тъй като dtable е изградена на базата на набора от команди collect, който е предназначен за персонализиране на всякакъв тип таблици, можете да използвате командите collect, за да персонализирате допълнително външния вид на вашите таблици, след като сте ги създали с помощта на dtable.
Нека видим как работи
-> Прост пример
-> Определяне на собствена статистика
-> Допълнително персонализиране с помощта на collect
С dtable създаването на таблица с описателна статистика е толкова лесно, колкото и задаването на променливите, които искате да бъдат включени в таблицата. dtable е проектиран така, че да можете да създавате и експортирате таблица в различни формати с една стъпка. Средните стойности и стандартните отклонения ще бъдат отчетени за непрекъснати променливи, а броят и процентите ще бъдат отчетени за факторни променливи. Ако това е всичко, от което се нуждаете, просто ще посочите името на файла и файловия формат, в който искате да експортирате, и ще сте готови. Но, разбира се, можете да персонализирате таблицата, като включите набор от статистически данни, извършите различни тестове за проверка на равенството между групите, добавите заглавие и бележки и направите други промени.
В примерите по-долу обсъждаме как да създавате, модифицирате и експортирате таблици с описателна статистика.
Пример за събиране
За да започнем, зареждаме данни от Второто национално изследване на здравето и храненето (NHANES II) (McDowell et al. 1981). Искаме обобщена статистика за посочените променливи, но поотделно за всяка категория диабет. Обърнете внимание, че използваме запис на факторни променливи, за да посочим, че полът и расата са категорични променливи. И експортираме таблицата във файла table1.html:
. webuse nhanes2l, clear (Second National Health and Nutrition Examination Survey) . dtable age weight bpsystol i.sex i.race, by(diabetes) export(table1.html, replace)
Diabetes status | Not diabetic Diabetic Total | N 9,850 (95.2%) 499 (4.8%) 10,349 (100.0%) | Age (years) 46.918 (17.193) 60.687 (11.475) 47.582 (17.216) | Weight (kg) 71.658 (15.220) 76.670 (17.175) 71.900 (15.357) | Systolic blood pressure 130.088 (22.759) 146.651 (28.387) 130.887 (23.332) | Sex | Male 4,698 (47.7%) 217 (43.5%) 4,915 (47.5%) | Female 5,152 (52.3%) 282 (56.5%) 5,434 (52.5%) | Race | White 8,659 (87.9%) 404 (81.0%) 9,063 (87.6%) | Black 1,000 (10.2%) 86 (17.2%) 1,086 (10.5%) | Other 191 (1.9%) 9 (1.8%) 200 (1.9%) |
(collection DTable exported to file table1.html)
Ето колко лесно може да се създаде и експортира таблица. Ако предпочитате да експортирате тази таблица в друг формат, например LaTeX или PDF, просто посочете съответното разширение на файла. Въпреки че това е информационна таблица, по-долу ще я персонализираме допълнително.
По подразбиране dtable отчита средни стойности и стандартни отклонения за непрекъснати променливи и брой и проценти за факторни променливи. Можем да видим, че приблизително 95% от нашата извадка не е диабетична, а 5% е. Виждаме също, че средното систолично кръвно налягане за групата на недиабетиците е 130, а средното за групата на диабетиците е 147. Можем да проверим дали средното систолично кръвно налягане се различава в зависимост от диабетния статус. Можем също така да проверим дали полът и диабетният статус са независими. Можем да отчетем тестове, сравняващи всички променливи в групите с диабетен статус. Ние обаче не се интересуваме от сравняване на възрастовия или расовия състав на двете групи, затова потискаме тези тестове за възраст и раса. Потискаме и описателната статистика за цялата извадка, колоната, обозначена като „Общо“:
. dtable age weight bpsystol i.sex i.race, by(diabetes, nototals tests) continuous(age, test(none)) factor(race, test(none)) note: using test regress across levels of diabetes for weight and bpsystol. note: using test pearson across levels of diabetes for sex.
Diabetes status | Not diabetic Diabetic Test | N 9,850 (95.2%) 499 (4.8%) | Age (years) 46.918 (17.193) 60.687 (11.475) | Weight (kg) 71.658 (15.220) 76.670 (17.175) <0.001 | Systolic blood pressure 130.088 (22.759) 146.651 (28.387) <0.001 | Sex | Male 4,698 (47.7%) 217 (43.5%) 0.066 | Female 5,152 (52.3%) 282 (56.5%) | Race | White 8,659 (87.9%) 404 (81.0%) | Black 1,000 (10.2%) 86 (17.2%) | Other 191 (1.9%) 9 (1.8%) |
След това посочваме подварианта place(seplabels), за да поставим честотата за всяка подпроба в етикета на колоната, но на отделен ред. По подразбиране за всяка група се съобщават както честотите, така и процентите, но ние искаме да получим само честотите. Освен това можем да променим начина, по който се показват нашите статистически данни, като използваме опцията sformat(); тук поставяме броячите в скоби. Ще добавим и бележка с общия размер на извадката и ще скрием етикета за променливата by() от заглавието на колоната.
. dtable age weight bpsystol i.sex i.race, by(diabetes, nototals tests) continuous(age, test(none)) factor(race, test(none)) sample(, statistics(freq) place(seplabels)) sformat("(N=%s)" frequency) note(Total sample: N = 10,349) column(by(hide)) note: using test regress across levels of diabetes for weight and bpsystol. note: using test pearson across levels of diabetes for sex.
Not diabetic Diabetic Test |
(N=9,850) (N=499) |
Age (years) 46.918 (17.193) 60.687 (11.475) |
Weight (kg) 71.658 (15.220) 76.670 (17.175) <0.001 |
Systolic blood pressure 130.088 (22.759) 146.651 (28.387) <0.001 |
Sex |
Male 4,698 (47.7%) 217 (43.5%) 0.066 |
Female 5,152 (52.3%) 282 (56.5%) |
Race |
White 8,659 (87.9%) 404 (81.0%) |
Black 1,000 (10.2%) 86 (17.2%) |
Other 191 (1.9%) 9 (1.8%) |
Total sample: N = 10,349
Накрая форматираме средните стойности и стандартните отклонения до два знака след десетичната запетая, добавяме заглавие и експортираме крайната таблица в HTML файл:
. dtable age weight bpsystol i.sex i.race, by(diabetes, nototals tests) continuous(age, test(none)) factor(race, test(none)) sample(, statistics(freq) place(seplabels)) sformat("(N=%s)" frequency) note(Total sample: N = 10,349) column(by(hide)) nformat(%7.2f mean sd) title(Table 1. Demographics) export(table1.html, replace) note: using test regress across levels of diabetes for weight and bpsystol. note: using test pearson across levels of diabetes for sex. Table 1. Demographics
Not diabetic Diabetic Test |
(N=9,850) (N=499) |
Age (years) 46.92 (17.19) 60.69 (11.47) |
Weight (kg) 71.66 (15.22) 76.67 (17.18) <0.001 |
Systolic blood pressure 130.09 (22.76) 146.65 (28.39) <0.001 |
Sex |
Male 4,698 (47.7%) 217 (43.5%) 0.066 |
Female 5,152 (52.3%) 282 (56.5%) |
Race |
White 8,659 (87.9%) 404 (81.0%) |
Black 1,000 (10.2%) 86 (17.2%) |
Other 191 (1.9%) 9 (1.8%) |
Total sample: N = 10,349 (collection DTable exported to file table1.html)
Определяне на собствена статистика
dtable предлага широк набор от статистически данни, които можете да включите в таблицата си, като например коефициент на вариация, средна геометрична стойност, изкривяване и много други. Може обаче да искате да комбинирате статистики в една клетка. Например може да поставите интерквартилния диапазон точно до медианата. С dtable можете да създавате съставни резултати от всяка от поддържаните статистики.
По-долу искаме да сравним някои показатели, свързани със здравето, на лица, които са претърпели инфаркт, с тези, които не са. Искаме средни стойности и стандартни отклонения в една клетка, разделени със знака плюс минус. Освен това искаме междукварталния диапазон да бъде поставен точно до медианата. Определяме всеки от тези съставни резултати и посочваме разделителя. След това посочваме статистическите данни, които искаме за всяка променлива. Също така добавяме опцията svy, така че статистиките да бъдат изчислени, като се използват теглата на изследването.
. dtable, by(heartatk, tests) svy define(meansd = mean sd, delimiter(" ± ")) define(myiqr = p25 p75, delimiter("-")) continuous(age, stat(meansd) test(none)) continuous(bmi, stat(meansd)) continuous(bpsystol tcresult, stat(median myiqr)) note: using test regress across levels of heartatk for bmi, bpsystol, and tcresult.
Prior heart attack |
No heart attack Had heart attack Total Test |
N 113,647,835 (97.0%) 3,483,276 (3.0%) 117,131,111 (100.0%) |
Age (years) 41.695 ± (15.320) 60.491 ± (9.054) 42.254 ± (15.504) |
Body mass index (BMI) 25.235 ± (4.787) 26.604 ± (5.146) 25.276 ± (4.803) <0.001 |
Systolic blood pressure 122.000 110.000-138.000 138.000 122.000-150.000 124.000 110.000-140.000 <0.001 |
Serum cholesterol (mg/dL) 207.000 179.000-241.000 231.000 202.000-267.000 208.000 179.000-242.000 <0.001 |
След това ще форматираме персентилите и медианите до нула знака след десетичната запетая, а междукварталния диапазон ще поставим в скоби. По подразбиране стандартните отклонения се поставят в скоби, но по-долу ще премахнем скобите:
. dtable, by(heartatk, tests) svy define(meansd = mean sd, delimiter(" ± ")) define(myiqr = p25 p75, delimiter("-")) continuous(age, stat(meansd) test(none)) continuous(bmi, stat(meansd)) continuous(bpsystol tcresult, stat(median myiqr)) nformat(%6.0f p25 p75 median) sformat("(%s)" myiqr) nformat(%6.1f mean sd) sformat("%s" sd) note: using test regress across levels of heartatk for bmi, bpsystol, and tcresult.
Prior heart attack |
No heart attack Had heart attack Total Test |
N 113,647,835 (97.0%) 3,483,276 (3.0%) 117,131,111 (100.0%) |
Age (years) 41.7 ± 15.3 60.5 ± 9.1 42.3 ± 15.5 |
Body mass index (BMI) 25.2 ± 4.8 26.6 ± 5.1 25.3 ± 4.8 <0.001 |
Systolic blood pressure 122 (110-138) 138 (122-150) 124 (110-140) <0.001 |
Serum cholesterol (mg/dL) 207 (179-241) 231 (202-267) 208 (179-242) <0.001 |
Накрая премахваме етикета на променливата by(), променяме етикета на колоната „Общо“ и променяме етикета на p-стойностите:
. dtable, by(heartatk, tests) svy define(meansd = mean sd, delimiter(" ± ")) define(myiqr = p25 p75, delimiter("-")) continuous(age, stat(meansd) test(none)) continuous(bmi, stat(meansd)) continuous(bpsystol tcresult, stat(median myiqr)) nformat(%6.0f p25 p75 median) sformat("(%s)" myiqr) nformat(%6.1f mean sd) sformat("%s" sd) column(by(hide) total(All) test(P-value)) note: using test regress across levels of heartatk for bmi, bpsystol, and tcresult.
No heart attack Had heart attack All P-value |
N 113,647,835 (97.0%) 3,483,276 (3.0%) 117,131,111 (100.0%) |
Age (years) 41.7 ± 15.3 60.5 ± 9.1 42.3 ± 15.5 |
Body mass index (BMI) 25.2 ± 4.8 26.6 ± 5.1 25.3 ± 4.8 <0.001 |
Systolic blood pressure 122 (110-138) 138 (122-150) 124 (110-140) <0.001 |
Serum cholesterol (mg/dL) 207 (179-241) 231 (202-267) 208 (179-242) <0.001 |
Допълнително персонализиране с помощта на collect
Въпреки че dtable е проектиран да създава и експортира таблица в една стъпка, можете да персонализирате тези таблици допълнително с набора от команди collect. По-долу променяме цвета на границите и цвета на фона за редуващите се редове в нашата таблица:
. collect style cell border_block[column-header corner], border(top, color(cyan)) . * Change the border color above the corner and column headers to cyan . collect style cell border_block[row-header item], border(bottom, color(cyan)) border(top, color(cyan)) . * Change the border color above and below the results and row headers to cyan . collect style cell cell_type[column-header], font(, bold) . * Make the column headers bold . collect style cell var[_N bmi tcresult], shading(background(cyan)) . /* Change the background color to cyan for the rows corresponding to N, BMI, and cholesterol */
Накрая указваме ширината на колоните да бъде променена така, че да отговаря на съдържанието на таблицата, и експортираме таблицата:
. collect style putdocx, layout(autofitcontents) . collect export table2.docx, replace (collection DTable exported to file table2.docx)
Here is our resulting document:

Таблица 2-Word
Вижте [R] dtable за повече примери за това как можете да създавате таблици с описателна статистика.
Справка
McDowell, A., A. Engel, J. T. Massey и K. Maurer. 1981. Plan and operation of the Second National Health and Nutrition Examination Survey, 1976-1980 (План и провеждане на Второто национално изследване на здравето и храненето, 1976-1980 г.). Vital and Health Statistics 1: 1144.