2013-06-26 5 views
67

मैं मिश्रित प्रभाव मॉडल का अनुमान लगाने के लिए lme4 पैकेज में lmer() का उपयोग कर रहा हूं। यह अच्छी तरह से काम करता है, लेकिन अब मैं अनुमान प्रक्रिया की एक निश्चित संख्या के लिए अनुमान प्रक्रिया को चलाने के लिए चाहता हूं, फिर अंतिम अनुमान प्रक्रिया द्वारा गणना के अनुसार प्रारंभ मान निर्दिष्ट करके प्रक्रिया को फिर से शुरू करें।पहले अनुमानित मानों के साथ मिश्रित प्रभाव मॉडल अनुमान को पुनरारंभ करें

?lmer के लिए मदद के अनुसार यह संभव है, तर्क की स्थापना द्वारा:

  • start - इन नई शुरुआत मान रहे हैं, और मदद के अनुसार एक एक फिट से स्लॉट ST में मूल्य निकाल सकते हैं मॉडल और इन का उपयोग करें, यानी का उपयोग [email protected]
  • maxiter - control

तो करने के लिए एक तर्क के रूप में नामित किया गया आपूर्ति, उदाहरण के लिए, लगता है मुझे iris डेटा का उपयोग कर एक lme फिट करने के लिए चाहते हैं, एक यह कोशिश कर सकते हैं:

library(lme4) 

# Fit model with limited number of iterations 

frm <- "Sepal.Length ~ Sepal.Width | Species" 

x <- lmer(frm, data=iris, 
      verbose=TRUE, control=list(maxIter=1), model=FALSE) 

# Capture starting values for next set of iterations 
start <- list([email protected]) 

# Update model 
twoStep <- lmer(frm, data=iris, 
      verbose=TRUE, control=list(maxIter=100), model=TRUE, 
      start=start) 

यह काम करता है। आउटपुट पर एक नज़र डालें, जहां पहला कॉलम आरईएमएल है, यानि यादृच्छिक प्रभाव अधिकतम संभावना है। सूचना विशेष रूप से है कि मॉडल 2 मैचों में REML जहां मॉडल 1 समाप्त हो जाता है:

> x <- lmer(frm, data=iris, 
+   verbose=TRUE, control=list(maxIter=1), model=FALSE) 
    0:  264.60572: 0.230940 0.0747853 0.00000 
    1:  204.22878: 0.518239 1.01025 0.205835 
    1:  204.22878: 0.518239 1.01025 0.205835 

> # Capture starting values for next set of iterations 
> start <- list([email protected]) 

> # Update model 
> twoStep <- lmer(frm, data=iris, 
+   verbose=TRUE, control=list(maxIter=100), model=TRUE, 
+   start=start) 
    0:  204.22878: 0.518239 1.01025 0.205835 
    1:  201.51667: 0.610272 2.00277 0.286049 
    2:  201.46706: 0.849203 1.94906 0.358809 
    3:  201.44614: 0.932371 1.88581 0.482423 
    4:  201.39421: 1.00909 1.71078 0.871824 
    5:  201.36543: 1.00643 1.60453 1.01663 
    6:  201.31066: 1.00208 1.35520 1.27524 
    7:  201.28458: 1.08227 1.22335 1.35147 
    8:  201.24330: 1.50333 0.679759 1.31698 
    9:  201.11881: 1.95760 0.329767 0.936047 

हालांकि, जब मैं maxIters का मान अलग है यह काम नहीं करता:

x <- lmer(frm, data=iris, 
      verbose=TRUE, control=list(maxIter=3), model=FALSE) 
start <- list([email protected]) 
twoStep <- lmer(frm, data=iris, 
       verbose=TRUE, control=list(maxIter=100), model=TRUE, 
       start=start) 

सूचना है कि REML मूल्य पुनरारंभ 264 पर, यानी शुरुआत:

> x <- lmer(frm, data=iris, 
+   verbose=TRUE, control=list(maxIter=3), model=FALSE) 
    0:  264.60572: 0.230940 0.0747853 0.00000 
    1:  204.22878: 0.518238 1.01025 0.205835 
    2:  201.94075: 0.00000 1.51757 -1.18259 
    3:  201.71473: 0.00000 1.69036 -1.89803 
    3:  201.71473: 0.00000 1.69036 -1.89803 

> # Capture starting values for next set of iterations 
> start <- list([email protected]) 

> # Update model 
> twoStep <- lmer(frm, data=iris, 
+   verbose=TRUE, control=list(maxIter=100), model=TRUE, 
+   start=start) 
    0:  264.60572: 0.230940 0.0747853 0.00000 
    1:  204.22878: 0.518238 1.01025 0.205835 
    2:  201.94075: 0.00000 1.51757 -1.18259 
    3:  201.71473: 0.00000 1.69036 -1.89803 
    4:  201.64641: 0.00000 1.82159 -2.44144 
    5:  201.63698: 0.00000 1.88282 -2.69497 
    6:  201.63649: 0.00000 1.89924 -2.76298 
    7:  201.63649: 4.22291e-08 1.90086 -2.76969 
    8:  201.63649: 4.22291e-08 1.90086 -2.76969 

प्रश्न: मैं पहले से फिट मॉडल से प्राप्त प्रारंभ मूल्यों के साथ lmer() विश्वसनीय रूप से पुनरारंभ कैसे कर सकता हूं?


सत्र जानकारी:

packageVersion("lme4") 
[1] ‘0.999999.2’ 
+1

यह एक बग की संभावना है; 'lme4' की 'स्टार्ट' कार्यक्षमता का बहुत अच्छी तरह से उपयोग नहीं किया गया है, इसलिए मुझे यकीन है कि इस तरह के कई मुद्दे हैं। विकास संस्करण की बजाय स्थिर का उपयोग करने की आपकी आवश्यकता कितनी मजबूत है? मैं इसे देख लूंगा, लेकिन हम स्थिर संस्करण पर हमारे अधिकांश डिबगिंग करने की उम्मीद कर रहे हैं ... –

+0

@ बेनबॉल्कर मैं या तो देव या टेस्ट कोड का उपयोग कर सकता हूं, क्योंकि मैं इस समय कुछ प्रयोग चला रहा हूं। मैं मदद कर सकता हूं, अगर आप मुझे बताते हैं कि देव शाखा कहां मिलें। – Andrie

+0

यह गिथब पर है: 'पुस्तकालय (devtools); install_github ("lme4", उपयोगकर्ता = "lme4") '। इस संस्करण में विचलन फ़ंक्शन निकालने और इसे अपने स्वयं के अनुकूलन में उपयोग करना आसान है, यदि आप अधिक नियंत्रण चाहते हैं तो आप पसंद कर सकते हैं। वैकल्पिक रूप से, 'स्टार्ट' प्रयोग को आज़माएं और मुझे https://github.com/lme4/lme4/issues पर बताएं यदि आपको कुछ काम नहीं मिल रहा है ... –

उत्तर

3

यह lme4 में इस बात की पुष्टि बग था और टिप्पणियों के अनुसार

मैं github.com/lme4/lme4 पर एक मुद्दा प्रवेश करने के बाद/मुद्दों/55 - एंड्री जुलाई 2 '13 15:42

यह अब हल्का के लिए तय किया जाना चाहिए (हालांकि ग्लमर के लिए नहीं, जो थोड़ा सा है ickier)। - बेन बोल्कर जुलाई 14

यह तब था जब संस्करण < 0.99999911-6 था; 2112 सितंबर 2013 से lme4 on CRAN के संस्करण> 1.0-4 संस्करण हैं।

संबंधित मुद्दे