R: вычисление начального наклона из графика - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть кривая, полученная с помощью кода ниже в R/Sweave:

 \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-перехват, отличный от нуля).

Большое спасибо ...

1 Ответ

2 голосов
/ 04 декабря 2011

Ваш график имеет пять точек: одну в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...