ลองดึงข้อมูลผู้ติดเชื้อโควิดของไทยจากเว็บมาplotด้วยภาษาWolfram

พอเรารู้วิธีการดึงข้อมูลมาแล้วเราก็สามารถนำไปประยุกต์ในเรื่องต่างๆได้เช่น ลองทำเป็น API แบบง่ายๆสำหรับดูแนวโน้วการระบาด ในตัวอย่าง API ที่ผมลองทำนี้ก็เอาค่า new cases ย้อนหลัง 3 วันมาคูณกันแล้วหารากที่ 3 เพื่อดูค่าเฉลี่ยแบบ exponential แล้วก็ลองหาความชันของค่านี้ดูแบบ 7 วันย้อนหลังว่าแนวโน้มการควบคุมดีขึ้นบ้างไหม ซึ่งแน่นอนเราอยากให้ค่านี้เป็นลบ

cmdstan กับ opencl

หลังจากที่ลง opencl sdk แล้วก็ให้เพิ่มไฟล์ local ในโฟลเดอร์ make ของ cmdstan โดยที่ใน local พิมพ์ตามนี้ครับ

STAN_OPENCL=true
OPENCL_DEVICE_ID=0
OPENCL_PLATFORM_ID=0 

CC = g++
CXXFLAGS += -fpermissive
LDFLAGS_OPENCL= -L"$(AMDAPPSDKROOT)lib\x86_64" -lOpenCL

จากนั้นก็ให้ make ตามปกติครับ

จาก Stan Math Library: OpenCL CPU/GPU Support (mc-stan.org)

สุ่มเลขใน Stan

มีคนถามมาว่าจะรันสุ่มเลขจาก distribution แบบไม่ต้องมีพารามิเตอร์หรือใส่ค่าให้พารามิเตอร์ให้กับ distribution ไปเลยทำยังไงใน Stan

ตัวอย่างcodeนะครับ

### test.stan ##
data {
 real a;
 real b;
 real ab;
 real bb;
}
generated quantities{
  real gm;
  real bt;
  gm = gamma_rng(a,1/b);
  bt = beta_rng(ab,bb);
}



### run the stan code in R
library(cmdstanr)
library(bayesplot)       
library(patchwork)

# the parameters of the distributions are given as the data
data_list <- list(a=1.5,b=0.001,ab=15,bb=1)

#compile the model
mod <- cmdstan_model(test.stan)

#do the sampling
fit <- mod$sample(data = data_list,chains = 1,fixed_param = T)

# draw the histograms
mcmc_hist(fit$draws(c("gm","bt")))

ใช้ neural network ทำ linear regression ง่ายๆใน ภาษา Wolfram

พอดีเมื่อวานมีพูดแนะนำเทคนิค neural network ในที่ทำงาน แล้วมีคนถามว่าใช้ทำ linear regression ได้ไหม ผมก็บอกว่าได้เลยทำให้ดูเป็นตัวอย่าง code ที่แชร์นี้ก็เป็นตัวอย่างที่ผมทำเมื่อวานครับ ซึ่งก็เริ่มด้วยการ generate ข้อมูลที่ดูเหมือนเป็นเส้นตรงมา จากนั้นก็สร้าง neural network โดยใช้ linear layer ที่มี input กับ output ค่าเดียว โดย loss function ที่ใช้คือ mean square จากกนั้นก็ใช้คำสั่ง NetTrain ในการหา weight กับ bias ของ linear layer จากนั้นก็ลอง plot เปรียบเทียบผลที่ได้กับคำสั่ง LinearModelFit

คำสั่ง NetTrain มันก็เหมือนกับ NMinimize กับ FindMinimum ที่จะหาจุดต่ำสุดของ Function ที่เราสนใจซึ่งในกรณีนี้ก็คือ mean square