Simulasi data de novo dari kerangka data desain eksperimental.
Dengan fokus pada R (meskipun solusi bahasa lain akan lebih bagus).
Dalam mendesain eksperimen atau survei, mensimulasikan data dan melakukan analisis pada data yang disimulasikan ini dapat memberikan wawasan yang hebat tentang kelebihan dan kelemahan desain.
Pendekatan semacam itu juga dapat menjadi sangat penting untuk memahami dan menggunakan uji statistik secara tepat.
Namun, proses ini cenderung agak menjemukan dan banyak yang dipimpin untuk melewati langkah penting ini dalam percobaan atau survei.
Model dan uji statistik berisi sebagian besar informasi yang diperlukan untuk mensimulasikan data (termasuk asumsi atau pernyataan distribusi yang eksplisit).
Diberikan model analisis (dan asumsi yang terkait misalnya normalitas dan keseimbangan), tingkat faktor dan ukuran signifikansi (seperti nilai-p), saya ingin mendapatkan data simulasi (idealnya dengan fungsi umum seperti cetak (), prediksi (), simulasikan ()).
Apakah kerangka kerja simulasi umum seperti itu mungkin?
Jika demikian, apakah kerangka kerja seperti itu saat ini tersedia?
Contoh, saya ingin fungsi, seperti:
sim(aov(response~factor1+factor2*factor3),
p.values=list(factor1=0.05,
factor2=0.05,
factor3=0.50,
factor2:factor3=0.05),
levels=list(factor1=1:10,
factor2=c("A", "B", "C"),
factor3=c("A", "B", "C")))
yaitu, versi umum dari:
sim.lm<-function(){
library(DoE.base)
design<-fac.design(nlevels=c(10,3,3),
factor.names=c("factor1", "factor2", "factor3"),
replications=3,
randomize=F)
response<-with(design, as.numeric(factor1)+
as.numeric(factor2)+
as.numeric(factor3)+
as.numeric(factor2)*as.numeric(factor3)+
rnorm(length(factor1)))
simulation<-data.frame(design, response)}
ATAU
sim(glm(response~factor1+factor2*factor3, family=poisson),
p.values=list(factor1=0.05,
factor2=0.05,
factor3=0.50,
factor2:factor3=0.05),
levels=list(factor1=1:10,
factor2=c("A", "B", "C"),
factor3=c("A", "B", "C")))
ATAU
library(lme4)
sim(lmer(response~factor1+factor2 + (factor2|factor3)),
F_value=list(factor1=50,
factor2=50),
levels=list(factor1=1:10,
factor2=c("A", "B", "C"),
factor3=c("A", "B", "C")))
yang akan membuat data.frame yang sesuai lengkap
contoh potensial fungsi spesifik (harap sunting sesuka hati)
- arima.sim
fungsi ada untuk membuat data.frame tingkat faktor, tanpa respons yang dimodelkan:
misalnya. conf.design
http://cran.r-project.org/web/views/ExperimentalDesign.html
sumber
Jawaban:
Sebenarnya ada S3 generik
simulate
yang bahkan mengembalikan bingkai data (atau daftar lainnya) yang Anda inginkan. TipeIni memiliki metode untuk kelas lm (berfungsi juga untuk glm atau untuk contoh aov Anda) dan glm.nb (dalam MASS) sudah. Anda sekarang dapat menulis
simulate
metode S3 untuk kelas objek lain, misalnya untuk objek dari lme4. Anda dapat memeriksa kelas mana yang ada metode dengan mengetikatau
sumber
>getAnywhere("simulate.class") no object named ‘simulate.class’ was found
>getS3method("simulate","class") Error in getS3method("simulate", "class") : S3 method 'simulate.class' not found
Ada fungsi baru yang disebut
simfun
dalamTeachingDemos
paket untuk R (saat ini hanya dalam versi pengembangan pada R-forge , itu akan menjadi beberapa saat sebelum ada di CRAN). Ini dimaksudkan untuk membantu menciptakan fungsi untuk melakukan simulasi.Salah satu kegunaan yang dimaksudkan adalah bahwa seorang guru akan menggunakan
simfun
berfungsi untuk membuat fungsi dan mendistribusikannya kepada siswa (mungkin memiliki antarmuka web di beberapa titik sebagai alternatif). Para siswa kemudian akan membuat bingkai data dari faktor-faktor yang mewakili desain eksperimental, meneruskan bingkai data ini ke fungsi yang dibuat dan mendapatkan kembali bingkai data dengan kolom tambahan dari respon yang disimulasikan sesuai dengan parameter dan distribusi kesalahan yang diatur oleh guru. , siswa kemudian dapat menganalisis data. Hal ini memungkinkan guru untuk mengatur hubungan "Benar", tetapi memungkinkan siswa untuk mencoba banyak desain eksperimental yang berbeda untuk mengeksplorasi cara untuk mendapatkan "Kebenaran" dalam waktu yang jauh lebih sedikit daripada melakukan percobaan yang sebenarnya dan membutuhkan lebih sedikit pekerjaan untuk guru daripada untuk membuat atau menemukan sekelompok dataset sampel berbeda yang mewakili berbagai kemungkinan desain.The
simfun
Fungsi dirancang untuk menjadi fleksibel sehingga guru / pencipta dapat mendasarkan simulasi pada model regresi dipasang, parameter yang disediakan oleh guru / pencipta, atau parameter suplied oleh siswa / pengguna.Fungsi yang dibuat juga dapat dengan mudah digunakan dalam simulasi (dengan
replicate
perintah) untuk mengeksplorasi daya, ukuran sampel, ukuran efek, dll. Meskipun simulasi yang dihasilkan mungkin lebih lambat daripada proses pembuatan simulasi secara manual.Ini terlihat seperti apa yang Anda gambarkan dengan pengecualian bahwa tidak diperlukan nilai-p untuk membuat data, tetapi penggunaan
power.
fungsi ataupwr.
daripwr
paket dapat dimasukkan untuk membuat simulasi berdasarkan pada menentukan kekuatan dan alfa daripada cara dan perbedaan.Berikut adalah contoh dari halaman bantuan (ada beberapa contoh lagi) yang mengasumsikan bahwa Anda mengukur ketinggian mata pelajaran (pria dan wanita) yang bersarang di kota-kota yang bersarang di negara bagian, ada efek acak untuk negara dengan SD. 1 dan efek acak untuk kota (dalam negara bagian) dengan SD 0,5 maka "kesalahan" SD adalah 3, perempuan memiliki rata-rata simulasi 64 inci dan laki-laki memiliki rata-rata 69 inci (kesalahan SD dan rata-rata realistis) , efek acak sedikit dibuat-buat). The
simfun
Fungsi ini digunakan untuk membuat fungsi baru yang disebutsimheight
, maka data frame dibuat dengan ID negara, kota ID dan kolom untuk jenis kelamin subjek (desain percobaan atau sampel desain), ini akan dilewatkan kesimheight
dan hasil dalam bingkai data baru dengan ketinggian yang disimulasikan (selain variabel lainnya) yang kemudian dapat dianalisis menggunakan alat yang sesuai.sumber
install.packages("TeachingDemos", repos="http://R-Forge.R-project.org")
. Anda perlu "http: //" di awal dan tidak ada ";".Mengetik
methods(simulate)
ataugetAnywhere("simulate")
harus bekerja. Yang pertama memberi Anda beberapa metode, jika paket lme4 dimuat:[1] simulate.lm * simulate.merMod * simulate.negbin * simulate.polr *
Objek-lm digunakan untuk model lm dan glm.
sumber