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.