2016-07-07 6 views
9

मैं इन आंकड़ों के साथ एक lme मॉडल को चलाने के लिए कोशिश कर रहा हूँ:त्रुटि: ऑब्जेक्ट में अनुपलब्ध मान - लेकिन कोई लापता मूल्यों

tot_nochc=runif(10,1,15) 
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0)) 
age=runif(10,18,75) 
agecu=age^3 
day=factor(c(1,2,2,3,3,NA,NA,4,4,4)) 
dt=as.data.frame(cbind(tot_nochc,cor_partner,agecu,day)) 
attach(dt) 

corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu, 
        random = ~cor_partner+agecu+cor_partner *agecu |day, 
        na.exclude(day)) 

मैं यह त्रुटि कोड प्राप्त:

na.fail.default में

त्रुटि (सूची (cor_partner = c (1L, 1L, 2L, 1L, 1L, 1L,: वस्तु

में लापता मूल्यों मुझे पता है मंच में इसी तरह के सवाल कर रहे हैं रहा हूँ। हालांकि, मैं n मेरा मामला:

  • cor_partner में कोई गुम मूल्य नहीं है;
  • पूरी वस्तु को एक कारक के रूप में कोडित किया गया है (कम से कम वैश्विक पर्यावरण क्या दिखाता है)।

मैं उन NA मूल्यों को na.action के साथ बहिष्कृत कर सकता हूं, लेकिन मुझे पता है कि फ़ंक्शन गुम मूल्य क्यों पढ़ रहा है - यह समझने के लिए कि मेरे डेटा में क्या हो रहा है।

+0

क्या आप डेटा और/या कोड शामिल कर सकते हैं जो हमें एक [पुनरुत्पादित उदाहरण] प्रदान करेगा (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? अन्यथा इस प्रश्न का उत्तर देना मुश्किल होगा ... –

+0

@ बेनबॉल्कर संपादित, धन्यवाद – InverniE

+0

यह मेरे लिए एक टाइपो/थिंको जैसा दिखता है। क्या आप समझा सकते हैं कि 'na.exclude (day)' क्या करना चाहिए? मैं आम तौर पर डेटा फ्रेम में 'दिन' जोड़कर ऐसा करूंगा, फिर ** संलग्न नहीं '**' का उपयोग कर ** ** नहीं, बल्कि 'डेटा' तर्क' सहित 'डेटा' सहित संयुक्त डेटा फ्रेम का उपयोग कर ... ?? –

उत्तर

13

tl; डॉ आप ही बार में पूरा डेटा फ्रेम पर na.exclude() (या जो भी) का उपयोग करने, ताकि शेष टिप्पणियों परिवर्तनीय घटकों में मिलान रहने है ...

set.seed(101) 
tot_nochc=runif(10,1,15) 
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0)) 
age=runif(10,18,75) 
agecu=age^3 
day=factor(c(1,2,2,3,3,NA,NA,4,4,4)) 
## use data.frame() -- *DON'T* cbind() first 
dt=data.frame(tot_nochc,cor_partner,agecu,day) 
## DON'T attach(dt) ... 

अब कोशिश:

library(nlme) 
corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu, 
       random = ~cor_partner+agecu+cor_partner *agecu |day, 
       data=dt, 
       na.action=na.exclude) 

हमें अभिसरण त्रुटियों और चेतावनियां मिलती हैं, लेकिन मुझे लगता है कि अब ऐसा इसलिए है क्योंकि हम इसमें पर्याप्त जानकारी के बिना एक छोटे से बने डेटा सेट का उपयोग कर रहे हैं और कोड के साथ किसी भी अंतर्निहित समस्या के कारण नहीं।

+0

धन्यवाद, यह वास्तविक डेटा पर किसी भी चेतावनी के बिना काम करता है। मैंने सोचा कि na.exclude (दिन) स्वचालित रूप से "दिन" में मान के आधार पर पूरी पंक्ति को बाहर कर देगा, एकल कॉलम मान पर काम नहीं करेगा, इसलिए जानना अच्छा होगा! – InverniE

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