2011-12-03 24 views
0

我具有由下面的代碼所產生的曲線計算的初始斜率:R:在從<code>R/Sweave</code>的曲線圖

\documentclass[a4paper,12pt]{article} 
\usepackage{Sweave} %%%%%% 
\SweaveOpts{eps=TRUE} 

\begin{document} 

<<echo=FALSE, results=hide>>= 
test.frame<-data.frame(ratio= c(0.0, 144.321, 159.407, 178.413, 202.557), value= c(0, 0.84, 0.8925, 0.945, 0.9975)) 
@ 


<<echo=FALSE,results=hide,eval=TRUE>>= 
postscript('doudou.eps', 
      width=7, height=6, 
      colormodel="cmyk", 
      family = "ComputerModern", 
      horizontal = FALSE, 
      onefile=FALSE, 
      paper = "special", 
      encoding = "TeXtext.enc", 
      pagecentre=FALSE) 

with(test.frame,plot(ratio, value, ylab= "Hello", 
           xlab="Wonderful", 
           type="o",   
           bty="o",   
           lty="solid",  
           lwd=3,    
           pch=1,    
           xaxp=c(0, 200, 4), 
           xlim=c(0,200), 
           yaxt = "n",   
           main=" My curve")) 

axis(2,seq(0,1, by=0.5), las=2,cex=3,cex.lab=2,cex.axis=1.5,cex.main=2) 

dev.off() 
@ 

\begin{figure}[htbp] 
\begin{center} 
\includegraphics[width=0.8\textwidth]{doudou.eps} 
\end{figure} 


\end{document} 

該曲線具有x = +\sqrt(y)行爲。我需要從曲線的第一個點開始繪製與初始曲線斜率相切的最大斜率。如何使用R來計算參數,以便我得到線的方程?

一個近似解決方案是找到一條最佳擬合線,但數據集的初始點(0,0)不構成擬合線的一部分(我們得到的是非零的y截距)。

非常感謝......

+4

這個問題是不相關的Sweave。請將其降至最小的自包含R樣品。 –

+0

除了Dieter的評論:「初始斜率」和「最大斜率」是什麼意思?如果你只是想找到一個強制原點的線性擬合,請閱讀'lm()'的幫助文件。 –

+2

我喜歡你在學習Sweave時花費的時間,但請注意Sweave只是R和LaTeX的組合。如果您僅對R代碼有疑問,最好只在問題中提供R代碼。要從noweb文檔(Rnw; snw)中獲取這些文件,你可以像運行Sweave一樣運行Stangle。請參閱R.中的'?Stangle'。 –

回答

2

你的圖有五點:一個在0和144和203之間的四個,所以我不認爲你可以說很多有關行爲接近0

test.frame<-data.frame(ratio= c(0.0, 144.321, 159.407, 178.413, 202.557), 
         value= c(0, 0.84, 0.8925, 0.945, 0.9975)) 
with(test.frame,plot(ratio, value, ylab= "Hello", xlab="Wonderful", type="o", 
        bty="o", lty="solid", lwd=3, pch=1, xaxp=c(0, 200, 4), 
        xlim=c(0,200), yaxt = "n", main=" My curve")) 
axis(2,seq(0,1, by=0.5), las=2,cex=3,cex.lab=2,cex.axis=1.5,cex.main=2) 

enter image description here

你可以得到第一段的斜率與

> with(test.frame, (value[2]-value[1])/(ratio[2]-ratio[1])) 
[1] 0.005820359 

或者你可以把一條線僅限於通過原點去了所有的點與

> with(test.frame, lm(value ~ ratio - 1)) 
Coefficients: 
    ratio 
0.005325 

或者你可以把你的平方根函數,我認爲(但我不知道),你可能打算要

> with(test.frame, lm(value ~ sqrt(ratio) - 1)) 
Coefficients: 
sqrt(ratio) 
    0.07037 

但在這種情況下,注意,y = 0.07 sqrt(x)的切線的斜率是無窮的,在0

+0

@ Henry。感謝您的明確陳述和答覆。從不同的角度學習總是很好的。 1放下 – yCalleecharan