2011-12-13 10 views
6
> age <- c(23,19,25,10,9,12,11,8) 
> steroid <- c(27.1,22.1,21.9,10.7,7.4,18.8,14.7,5.7) 
> sample <- data.frame(age,steroid) 
> fit2 <- lm(sample$steroid~poly(sample$age,2,raw=TRUE)) 
> fit2 

Call: 
lm(formula = sample$steroid ~ poly(sample$age, 2, raw = TRUE)) 

Coefficients: 
(Intercept)      -27.7225  
poly(sample$age, 2, raw = TRUE)1 5.1819 
poly(sample$age, 2, raw = TRUE)2 -0.1265 


> (newdata=data.frame(age=15)) 
age 
1 15 

> predict(fit2,newdata,interval="predict") 
    fit  lwr  upr 
1 24.558395 17.841337 31.27545 
2 25.077825 17.945550 32.21010 
3 22.781034 15.235782 30.32628 
4 11.449490 5.130638 17.76834 
5 8.670526 2.152853 15.18820 
6 16.248596 9.708411 22.78878 
7 13.975514 7.616779 20.33425 
8 5.638620 -1.398279 12.67552 
Warning message: 
'newdata' had 1 rows but variable(s) found have 8 rows 

predict फ़ंक्शन आयु = 15 के लिए पूर्वानुमान करने में असमर्थ क्यों है?आर: विशिष्ट मूल्य की भविष्यवाणी नहीं कर सकता

उत्तर

15

lm(data$y ~ data$x) के बजाय, lm(y ~ x, data) फॉर्म का उपयोग करें। इससे आपकी समस्या हल हो जानी चाहिए।

संपादित करें: समस्या न केवल lm पर कॉल के साथ है, बल्कि poly(*, raw=TRUE) का उपयोग भी है। यदि आप raw=TRUE बिट हटाते हैं, तो इसे काम करना चाहिए। सुनिश्चित नहीं है कि raw=TRUE यहां क्यों टूटता है।

+0

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

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