[R] interpolation

David Winsemius dwinsemius at comcast.net
Mon Jan 11 18:19:03 CET 2010


On Jan 11, 2010, at 11:49 AM, René Mayer wrote:

> My problem is that x values increas with y

x is mostly decreasing in the order you presented:

plot(x, type="l")

> until some point then the pattern
> reverses. The whole line

which line?

> is a kind of U-shape with a right-buttom to middel-top diagonal at  
> the end of it (a look at the plot

The starting values of x are the ones at the "top" of the plot you  
suggested.

> makes it clearer). The interpolation (approx, spline) makes a zick- 
> zack aut of it. What I need is to interpolate some points

which points? ... and as a function of what? You plotted x as a  
function of y. Are you interested in an approximation of the last 9  
points where the mathematical definition of a "function" of one  
variable in terms of one other variable might have meaning. At most  
other points you don't really have a function (unless you make a two  
dimensional parametric function of z)  because there are two values of  
x for each value of y.

Your question asked for an approximation of y as a function of x over  
a range (1:600) where that is not particularly sensible.. If you want  
segments over that range success might be possible, but you need to  
clarify what you want and how the program is supposed to figure out  
which leg of the segment you desire when there are two possible values  
of y.

-- David


> and to preserve the shape.
>
> thanks in andvance
> René
>
>
> Zitat von "David Winsemius" <dwinsemius at comcast.net>:
>
>>
>> On Jan 11, 2010, at 7:44 AM, René Mayer wrote:
>>
>>> Dear R-users,
>>> I have a complex line by xy-values (ordered by z).
>>> And I would like to get interpolated y-values on the positions of  
>>> x = 0:600.
>>> How do I get the correct points?
>>>
>>> x 
>>> = 
>>> c 
>>> (790,790,790,790,790,786,783,778,778,766,763,761,761,761,715,628,521,350,160,134,134,129,108,101,93,111,161,249,288,243,139,45,7 
>>> )
>>>
>>> y 
>>> = 
>>> c 
>>> (606,606,606,606,606,612,617,627,627,640,641,641,641,641,689,772,877,1048,1240,1272,1272,1258,1242,1239,1239,1214,1122,959,770,479,273,133,45 
>>> )
>>>
>>> z 
>>> = 
>>> c 
>>> (0,29,58,87,116,145,174,203,232,261,290,319,348,377,406,435,464,493,522,551,580,609,638,667,696,725,754,783,812,841,870,899,928 
>>> )
>>>
>>>
>>> plot(y,x,type="b")
>>
>> That would plot x as a function of y (the reverse of the usual  
>> convention. Is that what you want. If so, then the statement that  
>> these are ordered by z is misleading. Ordering by z would suggest  
>> that each series is a function of z. What sort of interpolation do  
>> you want and in how many dimensions?
>>
>>>
>>> # this fails ?????
>>> lines(approx(y,x),col="blue") # with xout = c(0:600)
>>>
>>> thanks in advance,
>>> René
>>>
>>>
>>>
>>> -- 
>>> Dr. rer. nat. Dipl.-Psych. René Mayer
>>>
>>> Dresden University of Technology
>>> Department of Psychology
>>> Zellescher Weg 17
>>> D-01062 Dresden
>>>
>>> Tel.: +49-351-4633-4568
>>>
>>> Email: mayer at psychologie.tu-dresden.de
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>> David Winsemius, MD
>> Heritage Laboratories
>> West Hartford, CT
>>
>>
>

David Winsemius, MD
Heritage Laboratories
West Hartford, CT



More information about the R-help mailing list