2011-12-03 153 views
1
y<-c(0.0100,2.3984,11.0256,4.0272,0.2408,0.0200); 
x<-c(1,3,5,7,9,11); 
d<-data.frame(x,y) 
myLm<-lm(x~y**2,data=d) 
plot(d) 
lines(x,lm(y ~ I(log(x)) + x,data=d)$fitted.values) 
lines(x,lm(y ~ I(x**2) + x,data=d)$fitted.values) % not quite right, smooth plz 

它應該是平滑的繪圖,錯了什麼。繪製R中線性迴歸的非線性圖

enter image description here

助手問題

  1. What algorithm is used in linear regression?
  2. Explain least squares plotting with Ones -matrix
+0

什麼是 「儘管如此,點或合規性」 呢? –

+1

他編輯了多次帖子,改變了他的話等AndresT和我昨天試圖幫助,但是,問題的條款不斷變化。 –

回答

9

您需要predict爲了插入擬合點之間的預測。

d <- data.frame(x=seq(1,11,by=2), 
       y=c(0.0100,2.3984,11.0256,4.0272,0.2408,0.0200)) 
lm1 <-lm(y ~ log(x)+x, data=d) 
lm2 <-lm(y ~ I(x^2)+x, data=d) 
xvec <- seq(0,12,length=101) 
plot(d) 
lines(xvec,predict(lm1,data.frame(x=xvec))) 
lines(xvec,predict(lm2,data.frame(x=xvec))) 

enter image description here

+0

是的,在他最後編輯完所有他想要的是拋物線之後,在x軸點序列上的預測()是正確的答案。請注意,他的第一次適合仍然是y的函數。好吧。我確信他會在我提到的時候更新它。 –

+0

如果我有多個變量,而不是隻有一個自變量,我該怎麼辦? –

+0

@FrankWANG:你應該發佈一個新的問題,引用這個問題,並給出適當的細節(例如可重現的問題:http://tinyurl.com/reproducible-000)。簡而言之,你必須在(1)產生曲面圖之間作出決定; (2)用除了一個保持在指定值的一個預測因子來繪製一個或多個預測線(或子圖)。 –

2

類似:

plot(d)  
abline(lm(x~y**2,data=d), col="black") 

會使它(如果線性的,由道路所隱含的問題是先問)

對於你在找什麼,我認爲:

lines(smooth.spline(x, y)) 

可能工作德克的暗示。

+0

也許不太像,因爲他正在擬合一個線性模型,他的迴歸方是平方的。 –

+0

@DirkEddelbuettel剛編輯過。 Txs – aatrujillob

2

您應該花一些時間參與程序隨附的「An Introduction R」手冊中的「附錄A:示例會話」。但這裏是一個開始

R> y<-c(0.0100,2.3984,11.0256,4.0272,0.2408,0.0200); 
R> x<-c(1,3,5,7,9,11); 
R> d<-data.frame(x,y) 
R> myLm<-lm(x~y**2,data=d) 
R> myLm 

Call: 
lm(formula = x ~ y^2, data = d) 

Coefficients: 
(Intercept)   y 
     6.434  -0.147 

,我們可以繪製這是(在那裏我現在修正爲您的x角色的不同尋常的反轉和y):

R> plot(d) 
R> lines(d$y,fitted(myLm)) 

enter image description here

+0

... err二次迴歸,這是線性的。 – hhh

+2

就是這樣:你正在擬合一個*線性模型*來對你的變量進行非線性變換。你可以創建'x2 < - x^2',然後迴歸'y〜x2'並將其繪製在'(y,x2)'空間中。如果你想要*非線性迴歸*,你需要一個不同的函數,比如'nls()'。或樣條線。或添加劑模型。或者,或者,或者... –

+0

現在看問題,現在清楚了。沒有模糊的句子,只有一個清晰的圖片 - 得到了我想要實現的目標? – hhh

6

強制GGPLOT2方法:

library(ggplot2) 
qplot(x,y)+stat_smooth(method="lm", formula="y~poly(x,2)", se=FALSE) 

enter image description here

+0

是否有可能在同一張照片中有很多情節?這顯然是一些不同的環境,所以我不能使用樣式'plot(1:10,1:10); (1:10,1:10 * 2)等等。 – hhh

+1

是的,只需添加額外的圖層或美學,例如:'dfr < - data.frame(x = rep(1:10,2),y = c 1:10,(1:10)^ 2),式= C(REP( 「線性」,10),代表( 「平方」,10))); qplot(x,y,data = dfr,geom =「line」,color = type)' – James

+1

ggplot2使用網格圖形系統而不是基本圖形系統,所以命令和範例不同,請參見http://had.co .NZ/GGPLOT2 / – James