क्या फॉर्मूला या विश्लेषण के डेटा का अनुकरण करने के लिए एक सामान्य तरीका उपलब्ध है?


16

एक प्रयोगात्मक डिजाइन डेटा फ्रेम से डेटा का डे नोवो सिमुलेशन।
आर पर ध्यान देने के साथ (हालांकि अन्य भाषा समाधान महान होगा)।

एक प्रयोग या सर्वेक्षण तैयार करने में, डेटा का अनुकरण और इस सिम्युलेटेड डेटा पर एक विश्लेषण का आयोजन डिजाइन के फायदे और कमजोरियों के बारे में भयानक जानकारी प्रदान कर सकता है।

इस तरह का दृष्टिकोण सांख्यिकीय परीक्षणों की समझ और उचित उपयोग के लिए भी आवश्यक हो सकता है।

हालाँकि, यह प्रक्रिया कुछ हद तक थकाऊ होती है और कई लोग प्रयोग या सर्वेक्षण में इस महत्वपूर्ण कदम को छोड़ देते हैं।

सांख्यिकीय मॉडल और परीक्षण में डेटा का अनुकरण करने के लिए आवश्यक अधिकांश जानकारी होती है (एक धारणा या वितरण का स्पष्ट विवरण सहित)।

एक विश्लेषण मॉडल (और इसकी संबद्ध मान्यताओं जैसे। सामान्यता और संतुलन), एक कारक के स्तर और महत्व का एक उपाय (जैसे कि पी-मान) को देखते हुए, मैं सिम्युलेटेड डेटा (आदर्श रूप से सामान्यीकृत फ़ंक्शन के साथ) प्राप्त करना चाहूंगा प्रिंट (), पूर्वानुमान (), अनुकरण ()।

क्या ऐसा सामान्यीकृत सिमुलेशन ढांचा संभव है?

यदि हां, तो क्या वर्तमान में ऐसा ढांचा उपलब्ध है?

उदाहरण के लिए, मैं एक समारोह, जैसे:

 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")))

अर्थात, का एक सामान्यीकृत संस्करण:

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)}

या

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")))

या

  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")))

जो एक पूर्ण संगत data.frame बनाएगा

विशिष्ट कार्यों के संभावित उदाहरण (कृपया संपादित करें)
- arima.sim

फ़ंक्शन मॉडल की प्रतिक्रिया के बिना, कारक स्तरों का डेटा.फ्रेम बनाने के लिए मौजूद है:
उदा। conf.design
http://cran.r-project.org/web/views/ExperimentalDesign.html


ध्यान में रखने वाली एक बात यह है कि आपको एक त्रुटि वितरण निर्दिष्ट करने की आवश्यकता है। इसके अलावा, मैं आपके "p.values" या "F_value" सूचियों का पूरी तरह से पालन नहीं करता हूं; क्या विचार है कि एफ एंड पी के नमूने वितरण सूचीबद्ध संख्याओं पर केंद्रित हैं?
गूँज - मोनिका

@ गंग, वितरण को परीक्षण में माना जाता है (यहां दोनों सामान्यता मानते हैं या मुझे ग्लम जैसी चीज का उपयोग करना होगा)।
इटियेन लो-डेकेरी

परीक्षण निश्चित रूप से एक विशिष्ट वितरण मान करता है, लेकिन इसका मतलब यह नहीं है कि डेटा वास्तव में है कि रास्ते में उत्पन्न किया गया। आप विभिन्न प्रयोजनों (जैसे, सिमुलेशन अध्ययन, मजबूती, आदि) के लिए वितरण के किसी भी संख्या से डेटा उत्पन्न कर सकते हैं।
गूँग - मोनिका

@gung, मैंने यह स्पष्ट करने के लिए अपने प्रश्न को संपादित करने की कोशिश की है कि मैं एक डेटा सेट बनाना चाहता हूं जो परीक्षण या मॉडल की अपेक्षाओं से मेल खाता हो। मैं एक सिमुलेशन अध्ययन के लिए या एक मजबूती अध्ययन के लिए कुछ नहीं देख रहा हूं, लेकिन एक प्रयोगात्मक डिजाइन का सूखा-रन प्रदान करने के लिए।
इटियेन लो-डेकेरी

जवाबों:


10

वास्तव में एक S3 जेनेरिक है simulateजो डेटा फ्रेम (या अन्य सूची) को भी लौटाता है जो आप चाहते हैं। प्रकार

?simulate  

इसमें पहले से ही वर्ग lm (glm के लिए या आपके aov उदाहरण के लिए भी काम करता है) और glm.nb (MASS में) के तरीके हैं। अब आप simulateवस्तुओं के अन्य वर्गों के लिए S3 विधियाँ लिख सकते हैं , उदाहरण के लिए lme4 से वस्तुओं के लिए। आप जांच कर सकते हैं कि कौन सी कक्षाएं टाइप करके हैं

getAnywhere("simulate.class"), getAnywhere("simulate")  

या

getS3method("simulate","class"), methods(simulate) 

अनुकरण करना बहुत अच्छा होगा यदि इसके लिए "एक फिट मॉडल का प्रतिनिधित्व करने वाली वस्तु" की आवश्यकता नहीं होती है जो स्वयं पहले से ही डेटा या सिम्युलेटेड डेटा की आवश्यकता होती है।
इटियेन लो-डेकेरी

>getAnywhere("simulate.class") no object named ‘simulate.class’ was found >getS3method("simulate","class") Error in getS3method("simulate", "class") : S3 method 'simulate.class' not found
इटियेन लो-डेकेरी

2
सभी हमेशा 0 प्रतिक्रिया, मान, और वांछित पैरामीटर मान के साथ फिट में गुणांक को प्रतिस्थापित करने के साथ एक प्रारंभिक सज्जित वस्तु का निर्माण कर सकते हैं। फिर 'सिम्युलेट' का उपयोग करके नकली प्रतिक्रियाएं प्राप्त की जा सकती हैं।
NRH

यह सच है। [प्रयोगात्मक डिज़ाइन कार्य] ( cran.r-project.org/web/views/ExperimentalDesign.html ) दृश्य में डमी चर सेटअप बनाने के लिए कई पैकेज हैं। अनुकरण और प्रयोगात्मक डिजाइन कार्यों को एकीकृत महान होगा!
एटिएन लो-डेकेरी

कुछ अनुकरण कार्य केवल डेटा को ही उपयुक्त नहीं बनाते हैं: आंकड़े.stackexchange.com/questions/11233/…
Etienne Low-

6

आर के लिए पैकेज simfunमें एक नया फ़ंक्शन कहा जाता है TeachingDemos(यह वर्तमान में केवल आर-फोर्ज पर विकास संस्करण में है , यह सीआरएएन पर होने से पहले थोड़ी देर होगा)। यह सिमुलेशन करने के लिए कार्यों को बनाने में मदद करना है।

इच्छित उपयोगों में से एक यह है कि एक शिक्षक इसका उपयोग करेगा simfunएक समारोह बनाने और इसे छात्रों को वितरित करने के लिए फ़ंक्शन (संभवतः एक विकल्प के रूप में किसी बिंदु पर एक वेब इंटरफ़ेस है)। छात्र तब प्रायोगिक डिजाइन का प्रतिनिधित्व करने वाले कारकों का एक डेटा फ्रेम बनाएंगे, इस डेटा फ़्रेम को बनाए गए फ़ंक्शन में पास करेंगे और शिक्षक द्वारा निर्धारित मापदंडों और त्रुटि वितरण के अनुसार सिम्युलेटेड प्रतिक्रिया के अतिरिक्त कॉलम के साथ डेटा फ़्रेम लौटाएंगे। , तो छात्र डेटा का विश्लेषण कर सकता है। यह शिक्षक को "सच्चा" संबंध स्थापित करने की अनुमति देता है, लेकिन छात्रों को वास्तविक प्रयोग करने की तुलना में बहुत कम समय में "सत्य" प्राप्त करने के तरीकों का पता लगाने के लिए कई अलग-अलग प्रयोगात्मक डिजाइनों की कोशिश करने की अनुमति देता है और शिक्षक की तुलना में कम काम की आवश्यकता होती है। विभिन्न संभव डिजाइनों का प्रतिनिधित्व करने वाले विभिन्न नमूना डेटासेट का एक गुच्छा बनाएं या खोजें।

simfunसमारोह इसलिए शिक्षक / निर्माता, शिक्षक / निर्माता द्वारा आपूर्ति पैरामीटर या मापदंडों छात्र / उपयोगकर्ता द्वारा suplied एक फिट प्रतिगमन मॉडल पर सिमुलेशन के आधार कर सकते हैं लचीला होना बनाया गया है।

बनाए गए फ़ंक्शन का उपयोग replicateशक्ति, नमूना आकार, प्रभाव आकार आदि का पता लगाने के लिए सिमुलेशन ( कमांड के साथ ) में भी आसानी से किया जा सकता है , हालांकि परिणामस्वरूप सिमुलेशन सिमुलेशन प्रक्रिया को तैयार करने की तुलना में धीमी गति से हो सकता है।

ऐसा लगता है कि आप इस अपवाद के साथ वर्णन करते हैं कि यह डेटा बनाने के लिए पी-वैल्यू नहीं लेता है, लेकिन power.कार्यों या पैकेज pwr.से उपयोग को pwrसाधन और अंतर के बजाय निर्दिष्ट शक्ति और अल्फा के आधार पर सिमुलेशन बनाने के लिए शामिल किया जा सकता है।

यहां सहायता पृष्ठ से एक उदाहरण दिया गया है (ऐसे कई और उदाहरण हैं) जो मानता है कि आप उन विषयों (पुरुष और महिला) की ऊंचाई माप रहे हैं जो शहरों में बसे हैं, जो राज्यों में बसे हैं, एक राज्य के लिए एक यादृच्छिक प्रभाव है SD 1 और शहर के लिए एक यादृच्छिक प्रभाव (राज्य के भीतर) 0.5 के एसडी के साथ फिर "त्रुटि" एसडी 3 है, महिलाओं का अनुकरण 64 इंच का है और पुरुषों का मतलब 69 इंच है (त्रुटि एसडी और साधन यथार्थवादी हैं) यादृच्छिक प्रभाव थोड़े से प्रभावित होते हैं)। simfunसमारोह एक नया कार्य कहा जाता है बनाने के लिए प्रयोग किया जाता हैsimheight , तो एक डेटा फ्रेम राज्य आईडी, शहर आईडी और इस विषय के सेक्स (प्रयोगात्मक डिजाइन या नमूने डिजाइन) के लिए एक कॉलम के साथ बनाया जाता है, यह करने के लिए पारित हो जाता हैsimheight और फिर एक नई डेटा फ्रेम में परिणामी हाइट्स के साथ (अन्य चर के अलावा) जो तब उपयुक्त उपकरणों का उपयोग करके विश्लेषण किया जा सकता है।

# simulate a nested mixed effects model
simheight <- simfun({
  n.city <- length(unique(city))
  n.state <- length(unique(state))
  n <- length(city)
  height <- h[sex] + rnorm(n.state,0,sig.state)[state] + 
    rnorm(n.city,0,sig.city)[city] + rnorm(n,0,sig.e)
}, sig.state=1, sig.city=0.5, sig.e=3, h=c(64,69),
  drop=c('sig.state','sig.city','sig.e','h','n.city','n.state','n'))

tmpdat <- data.frame(state=gl(5,20), city=gl(10,10), 
  sex=gl(2,5,length=100, labels=c('F','M')))
heightdat <- simheight(tmpdat)

मैं आर-फोर्ज पर नए टीचिंगडेमोस को खोजने के लिए प्रतीत नहीं कर सकता हूं?
एटिएन लो-डेकेरी


कोशिश करो install.packages("TeachingDemos", repos="http://R-Forge.R-project.org")। आपको शुरुआत में "http: //" की आवश्यकता है और नहीं ";"।
ग्रेग स्नो

3

टाइपिंग methods(simulate)या getAnywhere("simulate")काम करना चाहिए। यदि पैकेज lme4 लोड किया गया है, तो पूर्व आपको कुछ तरीके देता है:

[1] simulate.lm * simulate.merMod * simulate.negbin * simulate.polr *

एलएम-ऑब्जेक्ट्स का उपयोग एलएम और ग्लम दोनों मॉडल के लिए किया जाता है।


2
धन्यवाद, लेकिन यह @ मोमो के उत्तर की तरह लगता है।
एटिएन लो-डेकेरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.