1st Step Import ข้อมูล
Step 2 "สำราจ และ เช็คความถูกต้องของข้อมูลก่อนว่า
- ตัวแปรมีกี่ตัว
- ข้อมูลครบมั้ย ถูกต้องมั้ย
- ข้อมูลกระจายตัวแบบ normal distribution มั้ย"
describe / des
ใช้สำหรับดูโครงสร้างของข้อมูล ชนิดของข้อมูล และ label ของชื่อตัวแปร
obs = จำนวน rows
var = จำนวน column
summarize / sum
ใช้สำหรับแสดงค่าเฉลี่ย, standard deviation หรือ min, max ของตัวแปร
mdesc
ใช้สำหรับดูข้อมูลที่ missing
หมายเหตุ : ถ้าไม่มี ต้อง install โดยใช้คำสั่ง ssc install mdesc -> รอจนแสดง คำว่า installation complete.
Step 3 : วิธีดูว่าข้อมูลเป็น normal distribution มั้ย
histogram *variable*
หรือ hist. *variable*
เช่น hist age : สร้าง histogram ของ variable age
วิธีเช็คว่า กราฟเป็น normal distribution มั้ย มี 2 วิธี
2SD < mean
ใส่สูตร hist age , normal แล้วดู กราฟ
hist age
hist age , normal
แถม
disp *คำนวน บวก ลบ คูณ หาร เลข*
เช่น disp 10/10 = 1
- sum age , detail
แจกแจง
วิธีเช็คว่า กราฟเป็น normal distribution มั้ย
2SD < mean
จากตัวอย่างเป็น normal curve เพราะ 2(6.29) < 26.26
ถ้าจะหา median , IQR
median = Percentile 50% = 25
IRQ = Percentile 25% - 75% = 22 - 30
สรุป median (IQR) = 25 (22-30)
- swilk age
วิธีเช็ค normal distribution อีกวิธีหนึ่ง
Prob>z: 0.00031. = p-value
ถ้า น้อยกว่า 0.05 แสดงว่าเป็น normal distribution
- tab *variable*
ตารางแจกแจงความถี่ ของ variable ต่างๆ
เช่น tab nation (แจกแจงความถี่ของ variable nation)
- recode *variable*
min / criteria1 = "category_1"
criteria1 / criteria2 = "category_2"
criteria3 / max = "category_3"
, gen("name of new column")
ตัวอย่าง. recode age min/19=0 20/34=1 35/max=2, gen(newww)
สร้าง category ใน column age โดย
แบ่งเป็น กลุ่ม คือ min ถึง 19 ให้อยู่กลุ่ม 0
20 ถึง 34 ให้อยู่กลุ่ม 1
35 ถึง max ให้อยู่กลุ่ม 0
แล้วสร้าง column ใหม่ ชื่อ "neww"
ต้องระวัง
ข้อมูลที่เป็น ทศนิยม เช่น 29.99934
ถ้าเราจัด category 0-29 , 30-36 โปรแกรมจะงง ไม่สามารถจัดกลุ่มได้ ดังนั้น ต้องใส่สูตร เป็น
category 0 - 29.99999 , 30-36.99999 ตามจำนวนหลักทศนิยมของ raw data
สร้าง Column ใหม่ จากข้อมูลเดิม
gen bmi=weight/(height/100)^2
แจกแจงความถี่ของข้อมูลเป็นจำนวนและร้อยละ โดยจำแนกตามกลุ่ม
คำสั่ง
tab "ตัวแปรลักษณะ" "ตัวแปรระบุกลุ่ม"
จะไม่คิด % ให้
tab "ตัวแปรลักษณะ" "ตัวแปรระบุกลุ่ม", column
คิด % ให้ ใน column
tab "ตัวแปรลักษณะ" "ตัวแปรระบุกลุ่ม", column exact
exact = Fisher’s exact test (การหาค่า p-value ในตัวแปร ≥Two independent Groups , Small sample size)
tab "ตัวแปรลักษณะ" "ตัวแปรระบุกลุ่ม", row
คิด % ให้ ใน row
tab "ตัวแปรลักษณะ" "ตัวแปรระบุกลุ่ม", col chi exact
ถ้าอยากหาค่า p-value ( Pr )
ตัวอย่าง
tab gender group, column exact
tab "ตัวแปรลักษณะ" "ตัวแปรระบุกลุ่ม", col chi2
Pr = 0.510
ทั้ง 2 กลุ่ม ต่างกัน แต่ ไม่มีนัยสำคัญทางสติติ
sum age if group == 0
tabstat age,by(group) stat(n mean sd median p25 p75 min max)
replace
คำสั่ง
One-way ANOVA = "oneway" เช่น oneway gestation group_1, bon
หากต้องการ เอา Data table ไปใช้งาน
1. Select. ข้อมูลที่ต้องการ
2. คลิกขวา Copy table
Save Do file
คลิกขวาที่ window History > Save all
2. Save Do file ใส่นามสกุล .do
ถ้าต้องการใส่ Note
// สำหรับ บรรทัดเดียว
สำหรับ หลายบรรทัด
/*
*/
. graph hbox age
T-test
ไว้ใช้เปรียบเทียบ ตัวเลข 2 กลุ่มว่าตัวแปรมันอิสระต่อกันหรือไม่
ใช้กรณีที่เป็น Normal distribution เท่านั้น
ถ้าไม่กระจายแบบ normal ต้องใช้ ranksum แทน ตัวอย่าง สูตร ranksum lengthstay,by(storder)
ใช้ได้แค่ 2 ตัวแปร (t = two)
แปรผล ถ้า เปรียบเทียบแบบไม่มีทิศทาง เช่น เพศ จะเอา Ha=diff != 0 ถ้าน้อยกว่า 0.05 ถือว่ามีนัยสำคัญ
0.89 = ทั้ง 2 กลุ่ม แตกต่างกัน แต่ไม่มีนัยสำคัญทางสถิติ
hist age,normal by(group)
tab atward group, col chi exact
P-value ใช้ค่าของ Pr
จะใช้ P-value ของ Fisher'exact เมื่อ N เยอะๆ
กรณี นี้จะใช้ p-value = < 0.001 แม้ว่าแท้จริงแล้ว P-value จะเท่ากับ 0.000 แต่ไม่มีใครเขาเขียนโอ้อวดกัน
rename gender female
เปลี่ยนชื่อ variable from gender to female
ranksum lengthstay,by(storder)
Sigbank
หากข้อมูล มีความสัมพันธ์กันเช่น คน คนเดีนวกันแล้ววัดค่า ก่อนทำ หลังทำ แสดงว่าตัวแปร ไม่อิสระต่อกัน ต้องใช้ "Paired t test"
สูตร ttest varname1 == varname2
ทดสอบความแตกต่างของ proportion ด้วย McNemar test
mcc
Correlation สหสัมพันธ์
มีค่าตั้งแต่ -1 ถึง 1 ถ้าเข้าใกล้ 0 แสดงว่าไม่มีความสัมพันธ์กัน
ขั้นตอนการสร้างกราฟ Correlation
Menu : Graphics > Toway graph > Create > ใส่ค่าเข้าไป > submit
corr gestation birthweight
. twoway (scatter birthweight gestation)
การสร้างกราฟ Regression
(กราฟของ correlation)
. regress birthweight gestation
regress birthweight gestation
y = a+(b)x
a = 124.0412 = _cons (ค่าคงที่)
b = 70.91153
สิ่งที่ต้องการสร้าง ให้แสดงในกราฟ จะแสดงที่ Pilot definition เป็น list
การหา Risk / Comparison of demographic
แยกก่อนว่างานวิจัยเรา เป็น Cohort หรือ Case-control
Cohort study ให้หา risk-ratio , odd ratio
Case-control ให้หา odd ratio
แต่ถ้า งานวิจัยมีตัวแปร แค่ 2 ตัว ใช้ CC หรือ CS พอ อย่าเยอะะะ
cs *x* *y*
x = var_case
y = var_exposed
CS = Cohort study
จะแสดงผล risk-ratio
เช่น cs ill spinach
cc *x* *y*
x = var_case
y = var_exposed
CC = Case-control
จะแสดงผล odds ratio
เช่น cc hxpreviouspph pph
กรณีมีตัวแปร หลายตัว (มากกว่า 2) ต้องมาคิดเพิ่มมาว่า มันมีความสัมพันธ์กันจริงๆมั้ย จะใช้ CC หรือ CS ไม่ได้ จึงต้องใช้ คำสั่งใหม่แทน คือ logistic
โดยสูตรนี้จะ adjust Odd ratio ต่างๆ ให้เอามาเปรียบเทียบกันได้
logistic y, x1,x2,x3,x4,x5
เช่น logistic ill vanilla bakedham spinach mashedpotato cabbages jello rolls brownbread milk coffee water cakes fruitsalad chocolate
หากค่า x ใดๆ เป็นข้อมูลแบบ category ที่มากกว่า 2 กลุ่ม , ต้องใส่ " i. " หน้าตัวแปร x ด้วย เช่น i.agegroup
logistic pph agegroup
logistic pph i.agegroup
เมื่อ i.agegroup จะทำให้ได้ Odd ratio มาซึ่ง เกิดจาก Odd ที่เราสนใจ / reference odd เช่น
agegroup = 0 , 1 , 2
reference odd คือค่าที่ agegroup = 0
(จะเป็นกลุ่มที่มี incidence ต่ำ หรือ กลุ่มคนปกติ ที่ไม่ค่อยมีอุบัติการเกิดโรค)
ผลที่ได้จะได้
odd ratio 1 = odd of agegroup(1) / odd of agegroup (0)
odd ratio 2 = odd of agegroup(2) / odd of agegroup (0)
กรณี ต้องการระบุ reference odd ให้ใส่ b เช่น
logistic pph ib1.agegroup
b = base ต้องใส่
ib1 = ใช้ reference base agegroup = 1
P>|z| = p-value
logistic pph i.agegroup i.nation nulliparous inadequateANC hxpreviouspph hxdeliver3500 hxinstrument i.bmigr fh36
กรณี มีตัวแปรเวลามาร่วมด้วย
เช่นเหตุการณ์บางอย่างเช่น วันที่เกิดท้องเสีย บางคน เกิดวันที่ 3 บางคนเกิดวันที่ 6 จะบอกว่า ความรุนแรงเท่ากัน ก็อาจจะไม่ถูกเท่าที่ควร
จึงต้องเอาเวลามาคำนวณด้วย
ต้องใช้สูตร
ir var_case var_exposed var_time
แปรผล
มีโอกาสเกิดเหตุการณ์ = 0.0001159*100*365.25
= 4.2332475 ครั้ง/100คน/ปี
มีอัตราการเกิดเหตุการณ์ (Incident rate ratio) = 4.441478 เท่า
poisson regression for incidence rate ratio
poisson remove noliving needchild notagree spot headache dizzy nausea palpitation papule ,exp(day) irr
สูตรนี้ปรับอิทธิพลซึ่งกันและกันแล้ว
Survival time graph
ตั้งค่า stset timevar เช่น stset followup laststat
โปรแกรมจะสร้าง column ขึ้นมา อย่างไปยุ่งกับมัน
พิมพ์คำสั่ง sts graph
stset day remove
sts graph ,hazard
sts graph ,by(papule)
diagt diag_var test_var
ใช้หา
Sensitivity
specificity
odd ratio
likelihood ratio
กรณีข้อมูล ที่ไม่ใช่ True / False เช่น ในที่นี้ เป็น grade tumor
จะต้องจัดกลุ่มให้เป็น True / False ให้ได้ เช่น
grade 1 = true , 2-5 = false
grade 1-2 = true , 3-5 = false
grade 1-3 = true , 4-5 = false เป็นต้น
จะเห็นว่ามีหลายเกณฑ์ แล้วเอามาดูว่า เกณฑ์ไหนดีสุด
ในความเป็นจริง เราจะดูทุกเกณฑ์ ในการวิเคราะห์ แต่ละ test
เป็นที่มาของคำว่า ROC
ใช้สูตร roctab ref_var class_var
ตัวอย่าง roctab patho fna,detail graph
roctab patho fna ,detail graph
จุดแต่ละจุด คือ แต่ละเกณฑ์ ในภาพมี 6 จุด = 6 เกณฑ์ เช่น จุดที่ 1 คือ cutpoint ≥1
จุดประสงค์ จะเอา cut-off ไหน ขึ้นอยู่กับบริบท
ว่าต้องการจะ rule in หรือ rule out หรือ balance พอๆกัน
stci = median survival time
.sts test gender
P-value = 0.0037
แปลว่า มีหลักฐานทางสถิติว่าแตกต่างกัน
stcox i.stage,base
stcox ib3.stage,base