Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-26 Thread Jeff Newmiller
I think you are going to have to be more specific than "having some trouble". 
Your plot used lka as the x-axis.

FWIW note that

lm(ruotsi.pist ~ mies + koulu + clka + koulu*clka, data=dta)

is the same as

lm(ruotsi.pist ~ mies + koulu*clka, data=dta)
-- 
Sent from my phone. Please excuse my brevity.

On September 26, 2016 9:41:57 AM PDT, Matti Viljamaa  wrote:
>
>> On 26 Sep 2016, at 19:41, Matti Viljamaa  wrote:
>> 
>> Thank you.
>> 
>> However, I’m having some trouble converting your code to use clka,
>because the model I was using was:
>> 
>> fit2 <- lm(ruotsi.pist ~ mies + koulu + clka + koulu*clka, data=dta)
>
>I mean, not to use clka to replace lka. But to use the above fit2,
>rather than your fit2.
>
>>> On 25 Sep 2016, at 21:23, Jeff Newmiller 
>wrote:
>>> 
>>> This illustrates why you need to post a reproducible example. You
>have a number of confounding factors in your code.
>>> 
>>> First, "data" is a commonly-used function... avoid using it for
>variable names.
>>> 
>>> Second, using the attach function this way leads to confusion...
>best to forget this function until you start building packages.
>>> 
>>> Third, clka is linearly dependent on lka, so having them both in the
>regression is not possible. In this case lm has chosen to ignore clka
>so that bs("clka") is NA.
>>> 
>>> Fourth, curve expects you to give it a function, and instead you
>have given it a vector.
>>> 
>>> Fifth, you are plotting versus lka, but attempting to vary clka in
>the curve call.
>>> 
>>> There are a number of directions you could go with this to get a
>working output... below is my version.
>>> 
>>> dta <- read.table(
>"http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";,
>header=TRUE )
>>> fit2 <- lm( ruotsi.pist ~ mies + koulu*lka, data=dta )
>>> bs <- coef( fit2 )
>>> rpBylka <- function( lka ) {
>>> kouluB <- factor( "B", levels = levels( dta$koulu ) )
>>> newdta <- expand.grid( mies=0, koulu=kouluB, lka=lka )
>>> predict( fit2, newdata = newdta )
>>> }
>>> dtaKouluB <- subset( dta, koulu == "B" )
>>> varitB <- dtaKouluB$mies
>>> varitB[ varitB == 0 ] <- 2
>>> plot( dtaKouluB$lka
>>>   , dtaKouluB$ruotsi.pist
>>>   , col=varitB
>>>   , pch=16
>>>   , xlab='lka'
>>>   , ylab='ruotsi.pist'
>>>   , main='Lukio B'
>>>   )
>>> curve( rpBylka, from = min( dta$lka ), max( dta$lka ), add=TRUE,
>col="red" )
>>> 
>>> On Sun, 25 Sep 2016, Matti Viljamaa wrote:
>>> 
 
> On 25 Sep 2016, at 19:37, Matti Viljamaa 
>wrote:
> 
> Okay here?s a pretty short code to reproduce it:
> 
> data <-
>read.table("http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";,
>header=TRUE)
 
 data$clka <- I(data$lka - mean(data$lka))
 
> attach(data)
> 
> fit2 <- lm(ruotsi.pist ~ mies + koulu + lka + koulu*clka)
> 
> bs <- coef(fit2)
> 
> varitB <- c(data[koulu == 'B',]$mies)
> varitB[varitB == 0] = 2
> plot(data[data$koulu == 'B',]$lka, data[koulu ==
>'B',]$ruotsi.pist, col=varitB, pch=16, xlab='', ylab='', main='Lukio
>B?)
> 
>
>curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
>from=min(lka), to=max(lka), add=TRUE, col='red')
> 
> 
>> On 25 Sep 2016, at 19:24, Jeff Newmiller
> wrote:
>> 
>> Go directly to C. Do not pass go, do not collect $200.
>> 
>> You think curve does something, but you are missing what it
>actually does. Since you don't seem to be learning from reading ?curve
>or from our responses, you need to give us an example you can learn
>from.
>> --
>> Sent from my phone. Please excuse my brevity.
>> 
>> On September 25, 2016 9:04:09 AM PDT, mviljamaa
> wrote:
>>> On 2016-09-25 18:52, Jeff Newmiller wrote:
 You seem to be confused about what curve is doing vs. what you
>are
 doing.
>>> 
>>> But my x-range in curve()'s parameters from and to should be the
>entire
>>> 
>>> lka vector, since they are from=min(lka) and to=max(lka). Then
>why does
>>> 
>>> this not span the entire of lka? Because of duplicate entries or
>what?
>>> 
>>> It seems like I cannot use curve(), since my x-axis must be
>exactly lka
>>> 
>>> for the function to plot the y value for every lka value.
>>> 
 A) Compute the points you want to plot and put them into 2
>vectors.
 Then figure out how to plot those vectors. Then (perhaps)
>consider
 putting that all into one line of code again.
 
 B) The predict function is the preferred way to compute points.
>It
>>> may
 be educational for you to do the computations by hand at first,
>but
>>> in
 the long run using predict will help you avoid problems getting
>the
 equations right in multiple places in your script.
 
 C) Learn what makes an example reproducible (e.g. [1] or [2]),
>and
>>> ask
 your questions with reproducible code and data so we can give
>you
 concrete resp

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-26 Thread Greg Snow
If your goal is to visualize the predicted curve from an lm fit (or
other model fit) then you may want to look at the Predict.Plot and
TkPredict functions from the TeachingDemos package.




On Sun, Sep 25, 2016 at 7:01 AM, Matti Viljamaa  wrote:
> I’m trying to plot regression lines using curve()
>
> The way I do it is:
>
> bs <- coef(fit2)
>
> and then for example:
>
> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
>  from=min(lka), to=max(lka), add=TRUE, col='red')
>
> This above code runs into error:
>
> Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] 
> *  :
>   'expr' did not evaluate to an object of length 'n'
> In addition: Warning message:
> In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  :
>   longer object length is not a multiple of shorter object length
>
> Which I’ve investigated might be related to the lengths of the different 
> objects being multiplied or summed.
> Taking length(g$x) or length(g$y) of
>
> g <- curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x, 
> from=min(lka), to=max(lka), add=TRUE, col='red')
>
> returns 101.
>
> However length(lka) is 375. But perhaps these being different is not the 
> problem?
>
> I however do see that the whole range of lka is not plotted, for some reason. 
> So how can I be sure
> that it passes through all x-values in lka? And i.e. that the lengths of 
> objects inside curve() are correct?
>
> What can I do?
> __
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.



-- 
Gregory (Greg) L. Snow Ph.D.
538...@gmail.com

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-26 Thread Matti Viljamaa

> On 26 Sep 2016, at 19:41, Matti Viljamaa  wrote:
> 
> Thank you.
> 
> However, I’m having some trouble converting your code to use clka, because 
> the model I was using was:
> 
> fit2 <- lm(ruotsi.pist ~ mies + koulu + clka + koulu*clka, data=dta)

I mean, not to use clka to replace lka. But to use the above fit2, rather than 
your fit2.

>> On 25 Sep 2016, at 21:23, Jeff Newmiller  wrote:
>> 
>> This illustrates why you need to post a reproducible example. You have a 
>> number of confounding factors in your code.
>> 
>> First, "data" is a commonly-used function... avoid using it for variable 
>> names.
>> 
>> Second, using the attach function this way leads to confusion... best to 
>> forget this function until you start building packages.
>> 
>> Third, clka is linearly dependent on lka, so having them both in the 
>> regression is not possible. In this case lm has chosen to ignore clka so 
>> that bs("clka") is NA.
>> 
>> Fourth, curve expects you to give it a function, and instead you have given 
>> it a vector.
>> 
>> Fifth, you are plotting versus lka, but attempting to vary clka in the curve 
>> call.
>> 
>> There are a number of directions you could go with this to get a working 
>> output... below is my version.
>> 
>> dta <- read.table( 
>> "http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";, header=TRUE )
>> fit2 <- lm( ruotsi.pist ~ mies + koulu*lka, data=dta )
>> bs <- coef( fit2 )
>> rpBylka <- function( lka ) {
>> kouluB <- factor( "B", levels = levels( dta$koulu ) )
>> newdta <- expand.grid( mies=0, koulu=kouluB, lka=lka )
>> predict( fit2, newdata = newdta )
>> }
>> dtaKouluB <- subset( dta, koulu == "B" )
>> varitB <- dtaKouluB$mies
>> varitB[ varitB == 0 ] <- 2
>> plot( dtaKouluB$lka
>>   , dtaKouluB$ruotsi.pist
>>   , col=varitB
>>   , pch=16
>>   , xlab='lka'
>>   , ylab='ruotsi.pist'
>>   , main='Lukio B'
>>   )
>> curve( rpBylka, from = min( dta$lka ), max( dta$lka ), add=TRUE, col="red" )
>> 
>> On Sun, 25 Sep 2016, Matti Viljamaa wrote:
>> 
>>> 
 On 25 Sep 2016, at 19:37, Matti Viljamaa  wrote:
 
 Okay here?s a pretty short code to reproduce it:
 
 data <- 
 read.table("http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";, 
 header=TRUE)
>>> 
>>> data$clka <- I(data$lka - mean(data$lka))
>>> 
 attach(data)
 
 fit2 <- lm(ruotsi.pist ~ mies + koulu + lka + koulu*clka)
 
 bs <- coef(fit2)
 
 varitB <- c(data[koulu == 'B',]$mies)
 varitB[varitB == 0] = 2
 plot(data[data$koulu == 'B',]$lka, data[koulu == 'B',]$ruotsi.pist, 
 col=varitB, pch=16, xlab='', ylab='', main='Lukio B?)
 
 curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
  from=min(lka), to=max(lka), add=TRUE, col='red')
 
 
> On 25 Sep 2016, at 19:24, Jeff Newmiller  wrote:
> 
> Go directly to C. Do not pass go, do not collect $200.
> 
> You think curve does something, but you are missing what it actually 
> does. Since you don't seem to be learning from reading ?curve or from our 
> responses, you need to give us an example you can learn from.
> --
> Sent from my phone. Please excuse my brevity.
> 
> On September 25, 2016 9:04:09 AM PDT, mviljamaa  
> wrote:
>> On 2016-09-25 18:52, Jeff Newmiller wrote:
>>> You seem to be confused about what curve is doing vs. what you are
>>> doing.
>> 
>> But my x-range in curve()'s parameters from and to should be the entire
>> 
>> lka vector, since they are from=min(lka) and to=max(lka). Then why does
>> 
>> this not span the entire of lka? Because of duplicate entries or what?
>> 
>> It seems like I cannot use curve(), since my x-axis must be exactly lka
>> 
>> for the function to plot the y value for every lka value.
>> 
>>> A) Compute the points you want to plot and put them into 2 vectors.
>>> Then figure out how to plot those vectors. Then (perhaps) consider
>>> putting that all into one line of code again.
>>> 
>>> B) The predict function is the preferred way to compute points. It
>> may
>>> be educational for you to do the computations by hand at first, but
>> in
>>> the long run using predict will help you avoid problems getting the
>>> equations right in multiple places in your script.
>>> 
>>> C) Learn what makes an example reproducible (e.g. [1] or [2]), and
>> ask
>>> your questions with reproducible code and data so we can give you
>>> concrete responses.
>>> 
>>> [1] http://adv-r.had.co.nz/Reproducibility.html
>>> [2]
>>> 
>> http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
>>> --
>>> Sent from my phone. Please excuse my brevity.
>>> 
>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa 
>>> wrote:
 On 2016-09-25 18:30, Duncan Murdoch wrote:
> On 25/09/2016 9:10 AM, Matti Viljam

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-26 Thread Matti Viljamaa
Thank you.

However, I’m having some trouble converting your code to use clka, because the 
model I was using was:

fit2 <- lm(ruotsi.pist ~ mies + koulu + clka + koulu*clka, data=dta)


> On 25 Sep 2016, at 21:23, Jeff Newmiller  wrote:
> 
> This illustrates why you need to post a reproducible example. You have a 
> number of confounding factors in your code.
> 
> First, "data" is a commonly-used function... avoid using it for variable 
> names.
> 
> Second, using the attach function this way leads to confusion... best to 
> forget this function until you start building packages.
> 
> Third, clka is linearly dependent on lka, so having them both in the 
> regression is not possible. In this case lm has chosen to ignore clka so that 
> bs("clka") is NA.
> 
> Fourth, curve expects you to give it a function, and instead you have given 
> it a vector.
> 
> Fifth, you are plotting versus lka, but attempting to vary clka in the curve 
> call.
> 
> There are a number of directions you could go with this to get a working 
> output... below is my version.
> 
> dta <- read.table( 
> "http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";, header=TRUE )
> fit2 <- lm( ruotsi.pist ~ mies + koulu*lka, data=dta )
> bs <- coef( fit2 )
> rpBylka <- function( lka ) {
>  kouluB <- factor( "B", levels = levels( dta$koulu ) )
>  newdta <- expand.grid( mies=0, koulu=kouluB, lka=lka )
>  predict( fit2, newdata = newdta )
> }
> dtaKouluB <- subset( dta, koulu == "B" )
> varitB <- dtaKouluB$mies
> varitB[ varitB == 0 ] <- 2
> plot( dtaKouluB$lka
>, dtaKouluB$ruotsi.pist
>, col=varitB
>, pch=16
>, xlab='lka'
>, ylab='ruotsi.pist'
>, main='Lukio B'
>)
> curve( rpBylka, from = min( dta$lka ), max( dta$lka ), add=TRUE, col="red" )
> 
> On Sun, 25 Sep 2016, Matti Viljamaa wrote:
> 
>> 
>>> On 25 Sep 2016, at 19:37, Matti Viljamaa  wrote:
>>> 
>>> Okay here?s a pretty short code to reproduce it:
>>> 
>>> data <- 
>>> read.table("http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";, 
>>> header=TRUE)
>> 
>> data$clka <- I(data$lka - mean(data$lka))
>> 
>>> attach(data)
>>> 
>>> fit2 <- lm(ruotsi.pist ~ mies + koulu + lka + koulu*clka)
>>> 
>>> bs <- coef(fit2)
>>> 
>>> varitB <- c(data[koulu == 'B',]$mies)
>>> varitB[varitB == 0] = 2
>>> plot(data[data$koulu == 'B',]$lka, data[koulu == 'B',]$ruotsi.pist, 
>>> col=varitB, pch=16, xlab='', ylab='', main='Lukio B?)
>>> 
>>> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
>>>  from=min(lka), to=max(lka), add=TRUE, col='red')
>>> 
>>> 
 On 25 Sep 2016, at 19:24, Jeff Newmiller  wrote:
 
 Go directly to C. Do not pass go, do not collect $200.
 
 You think curve does something, but you are missing what it actually does. 
 Since you don't seem to be learning from reading ?curve or from our 
 responses, you need to give us an example you can learn from.
 --
 Sent from my phone. Please excuse my brevity.
 
 On September 25, 2016 9:04:09 AM PDT, mviljamaa  wrote:
> On 2016-09-25 18:52, Jeff Newmiller wrote:
>> You seem to be confused about what curve is doing vs. what you are
>> doing.
> 
> But my x-range in curve()'s parameters from and to should be the entire
> 
> lka vector, since they are from=min(lka) and to=max(lka). Then why does
> 
> this not span the entire of lka? Because of duplicate entries or what?
> 
> It seems like I cannot use curve(), since my x-axis must be exactly lka
> 
> for the function to plot the y value for every lka value.
> 
>> A) Compute the points you want to plot and put them into 2 vectors.
>> Then figure out how to plot those vectors. Then (perhaps) consider
>> putting that all into one line of code again.
>> 
>> B) The predict function is the preferred way to compute points. It
> may
>> be educational for you to do the computations by hand at first, but
> in
>> the long run using predict will help you avoid problems getting the
>> equations right in multiple places in your script.
>> 
>> C) Learn what makes an example reproducible (e.g. [1] or [2]), and
> ask
>> your questions with reproducible code and data so we can give you
>> concrete responses.
>> 
>> [1] http://adv-r.had.co.nz/Reproducibility.html
>> [2]
>> 
> http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
>> --
>> Sent from my phone. Please excuse my brevity.
>> 
>> On September 25, 2016 8:36:49 AM PDT, mviljamaa 
>> wrote:
>>> On 2016-09-25 18:30, Duncan Murdoch wrote:
 On 25/09/2016 9:10 AM, Matti Viljamaa wrote:
> Writing:
> 
> 
>>> 
> bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka
> 
> i.e. without that being inside curve produces a vector of length
>>> 375.
> 
> So now it seem

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Jeff Newmiller
This illustrates why you need to post a reproducible example. You have a 
number of confounding factors in your code.


First, "data" is a commonly-used function... avoid using it for variable 
names.


Second, using the attach function this way leads to confusion... best to 
forget this function until you start building packages.


Third, clka is linearly dependent on lka, so having them both in the 
regression is not possible. In this case lm has chosen to ignore clka so 
that bs("clka") is NA.


Fourth, curve expects you to give it a function, and instead you have 
given it a vector.


Fifth, you are plotting versus lka, but attempting to vary clka in the 
curve call.


There are a number of directions you could go with this to get a working 
output... below is my version.


dta <- read.table( 
"http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";, header=TRUE )
fit2 <- lm( ruotsi.pist ~ mies + koulu*lka, data=dta )
bs <- coef( fit2 )
rpBylka <- function( lka ) {
  kouluB <- factor( "B", levels = levels( dta$koulu ) )
  newdta <- expand.grid( mies=0, koulu=kouluB, lka=lka )
  predict( fit2, newdata = newdta )
}
dtaKouluB <- subset( dta, koulu == "B" )
varitB <- dtaKouluB$mies
varitB[ varitB == 0 ] <- 2
plot( dtaKouluB$lka
, dtaKouluB$ruotsi.pist
, col=varitB
, pch=16
, xlab='lka'
, ylab='ruotsi.pist'
, main='Lukio B'
)
curve( rpBylka, from = min( dta$lka ), max( dta$lka ), add=TRUE, col="red" )

On Sun, 25 Sep 2016, Matti Viljamaa wrote:




On 25 Sep 2016, at 19:37, Matti Viljamaa  wrote:

Okay here?s a pretty short code to reproduce it:

data <- 
read.table("http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";, 
header=TRUE)


data$clka <- I(data$lka - mean(data$lka))


attach(data)

fit2 <- lm(ruotsi.pist ~ mies + koulu + lka + koulu*clka)

bs <- coef(fit2)

varitB <- c(data[koulu == 'B',]$mies)
varitB[varitB == 0] = 2
plot(data[data$koulu == 'B',]$lka, data[koulu == 'B',]$ruotsi.pist, col=varitB, 
pch=16, xlab='', ylab='', main='Lukio B?)

curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
 from=min(lka), to=max(lka), add=TRUE, col='red')



On 25 Sep 2016, at 19:24, Jeff Newmiller  wrote:

Go directly to C. Do not pass go, do not collect $200.

You think curve does something, but you are missing what it actually does. 
Since you don't seem to be learning from reading ?curve or from our responses, 
you need to give us an example you can learn from.
--
Sent from my phone. Please excuse my brevity.

On September 25, 2016 9:04:09 AM PDT, mviljamaa  wrote:

On 2016-09-25 18:52, Jeff Newmiller wrote:

You seem to be confused about what curve is doing vs. what you are
doing.


But my x-range in curve()'s parameters from and to should be the entire

lka vector, since they are from=min(lka) and to=max(lka). Then why does

this not span the entire of lka? Because of duplicate entries or what?

It seems like I cannot use curve(), since my x-axis must be exactly lka

for the function to plot the y value for every lka value.


A) Compute the points you want to plot and put them into 2 vectors.
Then figure out how to plot those vectors. Then (perhaps) consider
putting that all into one line of code again.

B) The predict function is the preferred way to compute points. It

may

be educational for you to do the computations by hand at first, but

in

the long run using predict will help you avoid problems getting the
equations right in multiple places in your script.

C) Learn what makes an example reproducible (e.g. [1] or [2]), and

ask

your questions with reproducible code and data so we can give you
concrete responses.

[1] http://adv-r.had.co.nz/Reproducibility.html
[2]


http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example

--
Sent from my phone. Please excuse my brevity.

On September 25, 2016 8:36:49 AM PDT, mviljamaa 
wrote:

On 2016-09-25 18:30, Duncan Murdoch wrote:

On 25/09/2016 9:10 AM, Matti Viljamaa wrote:

Writing:





bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka


i.e. without that being inside curve produces a vector of length

375.


So now it seems that curve() is really skipping some

lka-/x-values.


How could curve() know what the length of lka is?  You're telling

it

to set x to a sequence of values of length 101 (the default) from
min(lka) to max(lka).  You never tell it to set x to lka.

curve() is designed to plot expressions or functions, not vectors.

If

you actually want to plot line segments using your original data,

use

lines().  (You'll likely need to sort your x values into increasing
order if you do that, or you'll get a pretty ugly plot.)

Duncan Murdoch


I know that about curve(), but since this function uses lka as a
parameter, then how should I formulate it for curve so that I don't
get

the error about wrong lengths?




On 25 Sep 2016, at 16:01, Matti Viljamaa 

wrote:


I?m trying to plot regression lines using curve

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Matti Viljamaa

> On 25 Sep 2016, at 19:37, Matti Viljamaa  wrote:
> 
> Okay here’s a pretty short code to reproduce it:
> 
> data <- 
> read.table("http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";, 
> header=TRUE)

data$clka <- I(data$lka - mean(data$lka))

> attach(data)
> 
> fit2 <- lm(ruotsi.pist ~ mies + koulu + lka + koulu*clka)
> 
> bs <- coef(fit2)
> 
> varitB <- c(data[koulu == 'B',]$mies)
> varitB[varitB == 0] = 2
> plot(data[data$koulu == 'B',]$lka, data[koulu == 'B',]$ruotsi.pist, 
> col=varitB, pch=16, xlab='', ylab='', main='Lukio B’)
> 
> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
>  from=min(lka), to=max(lka), add=TRUE, col='red')
> 
> 
>> On 25 Sep 2016, at 19:24, Jeff Newmiller  wrote:
>> 
>> Go directly to C. Do not pass go, do not collect $200.
>> 
>> You think curve does something, but you are missing what it actually does. 
>> Since you don't seem to be learning from reading ?curve or from our 
>> responses, you need to give us an example you can learn from. 
>> -- 
>> Sent from my phone. Please excuse my brevity.
>> 
>> On September 25, 2016 9:04:09 AM PDT, mviljamaa  wrote:
>>> On 2016-09-25 18:52, Jeff Newmiller wrote:
 You seem to be confused about what curve is doing vs. what you are 
 doing.
>>> 
>>> But my x-range in curve()'s parameters from and to should be the entire
>>> 
>>> lka vector, since they are from=min(lka) and to=max(lka). Then why does
>>> 
>>> this not span the entire of lka? Because of duplicate entries or what?
>>> 
>>> It seems like I cannot use curve(), since my x-axis must be exactly lka
>>> 
>>> for the function to plot the y value for every lka value.
>>> 
 A) Compute the points you want to plot and put them into 2 vectors.
 Then figure out how to plot those vectors. Then (perhaps) consider
 putting that all into one line of code again.
 
 B) The predict function is the preferred way to compute points. It
>>> may
 be educational for you to do the computations by hand at first, but
>>> in
 the long run using predict will help you avoid problems getting the
 equations right in multiple places in your script.
 
 C) Learn what makes an example reproducible (e.g. [1] or [2]), and
>>> ask
 your questions with reproducible code and data so we can give you
 concrete responses.
 
 [1] http://adv-r.had.co.nz/Reproducibility.html
 [2]
 
>>> http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
 --
 Sent from my phone. Please excuse my brevity.
 
 On September 25, 2016 8:36:49 AM PDT, mviljamaa  
 wrote:
> On 2016-09-25 18:30, Duncan Murdoch wrote:
>> On 25/09/2016 9:10 AM, Matti Viljamaa wrote:
>>> Writing:
>>> 
>>> 
> 
>>> bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka
>>> 
>>> i.e. without that being inside curve produces a vector of length
> 375.
>>> 
>>> So now it seems that curve() is really skipping some
>>> lka-/x-values.
>> 
>> How could curve() know what the length of lka is?  You're telling
>>> it
>> to set x to a sequence of values of length 101 (the default) from
>> min(lka) to max(lka).  You never tell it to set x to lka.
>> 
>> curve() is designed to plot expressions or functions, not vectors.
> If
>> you actually want to plot line segments using your original data,
>>> use
>> lines().  (You'll likely need to sort your x values into increasing
>> order if you do that, or you'll get a pretty ugly plot.)
>> 
>> Duncan Murdoch
> 
> I know that about curve(), but since this function uses lka as a
> parameter, then how should I formulate it for curve so that I don't 
> get
> 
> the error about wrong lengths?
> 
>>> 
 On 25 Sep 2016, at 16:01, Matti Viljamaa 
> wrote:
 
 I’m trying to plot regression lines using curve()
 
 The way I do it is:
 
 bs <- coef(fit2)
 
 and then for example:
 
 
> 
>>> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
> 
 from=min(lka), to=max(lka), add=TRUE, col='red')
 
 This above code runs into error:
 
 Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"]
>>> +
 bs["lka"] *  :
 'expr' did not evaluate to an object of length 'n'
 In addition: Warning message:
 In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"]
>>> *
> :
 longer object length is not a multiple of shorter object length
 
 Which I’ve investigated might be related to the lengths of the
 different objects being multiplied or summed.
 Taking length(g$x) or length(g$y) of
 
 g <-
>>> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x,
> 
 

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Jeff Newmiller
Object clka not found.

Did you test run it in a fresh R environment? 
-- 
Sent from my phone. Please excuse my brevity.

On September 25, 2016 9:37:56 AM PDT, Matti Viljamaa  wrote:
>Okay here’s a pretty short code to reproduce it:
>
>data <-
>read.table("http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";,
>header=TRUE)
>attach(data)
>
>fit2 <- lm(ruotsi.pist ~ mies + koulu + lka + koulu*clka)
>
>bs <- coef(fit2)
>
>varitB <- c(data[koulu == 'B',]$mies)
>varitB[varitB == 0] = 2
>plot(data[data$koulu == 'B',]$lka, data[koulu == 'B',]$ruotsi.pist,
>col=varitB, pch=16, xlab='', ylab='', main='Lukio B’)
>
>curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
>from=min(lka), to=max(lka), add=TRUE, col='red')
>
>
>> On 25 Sep 2016, at 19:24, Jeff Newmiller 
>wrote:
>> 
>> Go directly to C. Do not pass go, do not collect $200.
>> 
>> You think curve does something, but you are missing what it actually
>does. Since you don't seem to be learning from reading ?curve or from
>our responses, you need to give us an example you can learn from. 
>> -- 
>> Sent from my phone. Please excuse my brevity.
>> 
>> On September 25, 2016 9:04:09 AM PDT, mviljamaa 
>wrote:
>>> On 2016-09-25 18:52, Jeff Newmiller wrote:
 You seem to be confused about what curve is doing vs. what you are 
 doing.
>>> 
>>> But my x-range in curve()'s parameters from and to should be the
>entire
>>> 
>>> lka vector, since they are from=min(lka) and to=max(lka). Then why
>does
>>> 
>>> this not span the entire of lka? Because of duplicate entries or
>what?
>>> 
>>> It seems like I cannot use curve(), since my x-axis must be exactly
>lka
>>> 
>>> for the function to plot the y value for every lka value.
>>> 
 A) Compute the points you want to plot and put them into 2 vectors.
 Then figure out how to plot those vectors. Then (perhaps) consider
 putting that all into one line of code again.
 
 B) The predict function is the preferred way to compute points. It
>>> may
 be educational for you to do the computations by hand at first, but
>>> in
 the long run using predict will help you avoid problems getting the
 equations right in multiple places in your script.
 
 C) Learn what makes an example reproducible (e.g. [1] or [2]), and
>>> ask
 your questions with reproducible code and data so we can give you
 concrete responses.
 
 [1] http://adv-r.had.co.nz/Reproducibility.html
 [2]
 
>>>
>http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
 --
 Sent from my phone. Please excuse my brevity.
 
 On September 25, 2016 8:36:49 AM PDT, mviljamaa
> 
 wrote:
> On 2016-09-25 18:30, Duncan Murdoch wrote:
>> On 25/09/2016 9:10 AM, Matti Viljamaa wrote:
>>> Writing:
>>> 
>>> 
> 
>>>
>bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka
>>> 
>>> i.e. without that being inside curve produces a vector of length
> 375.
>>> 
>>> So now it seems that curve() is really skipping some
>>> lka-/x-values.
>> 
>> How could curve() know what the length of lka is?  You're telling
>>> it
>> to set x to a sequence of values of length 101 (the default) from
>> min(lka) to max(lka).  You never tell it to set x to lka.
>> 
>> curve() is designed to plot expressions or functions, not
>vectors.
> If
>> you actually want to plot line segments using your original data,
>>> use
>> lines().  (You'll likely need to sort your x values into
>increasing
>> order if you do that, or you'll get a pretty ugly plot.)
>> 
>> Duncan Murdoch
> 
> I know that about curve(), but since this function uses lka as a
> parameter, then how should I formulate it for curve so that I
>don't 
> get
> 
> the error about wrong lengths?
> 
>>> 
 On 25 Sep 2016, at 16:01, Matti Viljamaa 
> wrote:
 
 I’m trying to plot regression lines using curve()
 
 The way I do it is:
 
 bs <- coef(fit2)
 
 and then for example:
 
 
> 
>>>
>curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
> 
 from=min(lka), to=max(lka), add=TRUE, col='red')
 
 This above code runs into error:
 
 Error in curve(bs["(Intercept)"] + bs["mies"] * 0 +
>bs["kouluB"]
>>> +
 bs["lka"] *  :
 'expr' did not evaluate to an object of length 'n'
 In addition: Warning message:
 In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] +
>bs["lka"]
>>> *
> :
 longer object length is not a multiple of shorter object length
 
 Which I’ve investigated might be related to the lengths of the
 different objects being multiplied or summed.
 Taking length(g$x) or length(g$y) of
 
 g <-
>>> curve(bs["

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Matti Viljamaa
Okay here’s a pretty short code to reproduce it:

data <- 
read.table("http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt";, 
header=TRUE)
attach(data)

fit2 <- lm(ruotsi.pist ~ mies + koulu + lka + koulu*clka)

bs <- coef(fit2)

varitB <- c(data[koulu == 'B',]$mies)
varitB[varitB == 0] = 2
plot(data[data$koulu == 'B',]$lka, data[koulu == 'B',]$ruotsi.pist, col=varitB, 
pch=16, xlab='', ylab='', main='Lukio B’)

curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
 from=min(lka), to=max(lka), add=TRUE, col='red')


> On 25 Sep 2016, at 19:24, Jeff Newmiller  wrote:
> 
> Go directly to C. Do not pass go, do not collect $200.
> 
> You think curve does something, but you are missing what it actually does. 
> Since you don't seem to be learning from reading ?curve or from our 
> responses, you need to give us an example you can learn from. 
> -- 
> Sent from my phone. Please excuse my brevity.
> 
> On September 25, 2016 9:04:09 AM PDT, mviljamaa  wrote:
>> On 2016-09-25 18:52, Jeff Newmiller wrote:
>>> You seem to be confused about what curve is doing vs. what you are 
>>> doing.
>> 
>> But my x-range in curve()'s parameters from and to should be the entire
>> 
>> lka vector, since they are from=min(lka) and to=max(lka). Then why does
>> 
>> this not span the entire of lka? Because of duplicate entries or what?
>> 
>> It seems like I cannot use curve(), since my x-axis must be exactly lka
>> 
>> for the function to plot the y value for every lka value.
>> 
>>> A) Compute the points you want to plot and put them into 2 vectors.
>>> Then figure out how to plot those vectors. Then (perhaps) consider
>>> putting that all into one line of code again.
>>> 
>>> B) The predict function is the preferred way to compute points. It
>> may
>>> be educational for you to do the computations by hand at first, but
>> in
>>> the long run using predict will help you avoid problems getting the
>>> equations right in multiple places in your script.
>>> 
>>> C) Learn what makes an example reproducible (e.g. [1] or [2]), and
>> ask
>>> your questions with reproducible code and data so we can give you
>>> concrete responses.
>>> 
>>> [1] http://adv-r.had.co.nz/Reproducibility.html
>>> [2]
>>> 
>> http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
>>> --
>>> Sent from my phone. Please excuse my brevity.
>>> 
>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa  
>>> wrote:
 On 2016-09-25 18:30, Duncan Murdoch wrote:
> On 25/09/2016 9:10 AM, Matti Viljamaa wrote:
>> Writing:
>> 
>> 
 
>> bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka
>> 
>> i.e. without that being inside curve produces a vector of length
 375.
>> 
>> So now it seems that curve() is really skipping some
>> lka-/x-values.
> 
> How could curve() know what the length of lka is?  You're telling
>> it
> to set x to a sequence of values of length 101 (the default) from
> min(lka) to max(lka).  You never tell it to set x to lka.
> 
> curve() is designed to plot expressions or functions, not vectors.
 If
> you actually want to plot line segments using your original data,
>> use
> lines().  (You'll likely need to sort your x values into increasing
> order if you do that, or you'll get a pretty ugly plot.)
> 
> Duncan Murdoch
 
 I know that about curve(), but since this function uses lka as a
 parameter, then how should I formulate it for curve so that I don't 
 get
 
 the error about wrong lengths?
 
>> 
>>> On 25 Sep 2016, at 16:01, Matti Viljamaa 
 wrote:
>>> 
>>> I’m trying to plot regression lines using curve()
>>> 
>>> The way I do it is:
>>> 
>>> bs <- coef(fit2)
>>> 
>>> and then for example:
>>> 
>>> 
 
>> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
 
>>> from=min(lka), to=max(lka), add=TRUE, col='red')
>>> 
>>> This above code runs into error:
>>> 
>>> Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"]
>> +
>>> bs["lka"] *  :
>>> 'expr' did not evaluate to an object of length 'n'
>>> In addition: Warning message:
>>> In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"]
>> *
 :
>>> longer object length is not a multiple of shorter object length
>>> 
>>> Which I’ve investigated might be related to the lengths of the
>>> different objects being multiplied or summed.
>>> Taking length(g$x) or length(g$y) of
>>> 
>>> g <-
>> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x,
 
>>> from=min(lka), to=max(lka), add=TRUE, col='red')
>>> 
>>> returns 101.
>>> 
>>> However length(lka) is 375. But perhaps these being different is
 not
>>> the problem?
>>> 
>>> I however do see that the whole range of lka is not p

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Jeff Newmiller
Go directly to C. Do not pass go, do not collect $200.

You think curve does something, but you are missing what it actually does. 
Since you don't seem to be learning from reading ?curve or from our responses, 
you need to give us an example you can learn from. 
-- 
Sent from my phone. Please excuse my brevity.

On September 25, 2016 9:04:09 AM PDT, mviljamaa  wrote:
>On 2016-09-25 18:52, Jeff Newmiller wrote:
>> You seem to be confused about what curve is doing vs. what you are 
>> doing.
>
>But my x-range in curve()'s parameters from and to should be the entire
>
>lka vector, since they are from=min(lka) and to=max(lka). Then why does
>
>this not span the entire of lka? Because of duplicate entries or what?
>
>It seems like I cannot use curve(), since my x-axis must be exactly lka
>
>for the function to plot the y value for every lka value.
>
>> A) Compute the points you want to plot and put them into 2 vectors.
>> Then figure out how to plot those vectors. Then (perhaps) consider
>> putting that all into one line of code again.
>> 
>> B) The predict function is the preferred way to compute points. It
>may
>> be educational for you to do the computations by hand at first, but
>in
>> the long run using predict will help you avoid problems getting the
>> equations right in multiple places in your script.
>> 
>> C) Learn what makes an example reproducible (e.g. [1] or [2]), and
>ask
>> your questions with reproducible code and data so we can give you
>> concrete responses.
>> 
>> [1] http://adv-r.had.co.nz/Reproducibility.html
>> [2]
>>
>http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
>> --
>> Sent from my phone. Please excuse my brevity.
>> 
>> On September 25, 2016 8:36:49 AM PDT, mviljamaa  
>> wrote:
>>> On 2016-09-25 18:30, Duncan Murdoch wrote:
 On 25/09/2016 9:10 AM, Matti Viljamaa wrote:
> Writing:
> 
> 
>>>
>bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka
> 
> i.e. without that being inside curve produces a vector of length
>>> 375.
> 
> So now it seems that curve() is really skipping some
>lka-/x-values.
 
 How could curve() know what the length of lka is?  You're telling
>it
 to set x to a sequence of values of length 101 (the default) from
 min(lka) to max(lka).  You never tell it to set x to lka.
 
 curve() is designed to plot expressions or functions, not vectors.
>>> If
 you actually want to plot line segments using your original data,
>use
 lines().  (You'll likely need to sort your x values into increasing
 order if you do that, or you'll get a pretty ugly plot.)
 
 Duncan Murdoch
>>> 
>>> I know that about curve(), but since this function uses lka as a
>>> parameter, then how should I formulate it for curve so that I don't 
>>> get
>>> 
>>> the error about wrong lengths?
>>> 
> 
>> On 25 Sep 2016, at 16:01, Matti Viljamaa 
>>> wrote:
>> 
>> I’m trying to plot regression lines using curve()
>> 
>> The way I do it is:
>> 
>> bs <- coef(fit2)
>> 
>> and then for example:
>> 
>> 
>>>
>curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
>>> 
>> from=min(lka), to=max(lka), add=TRUE, col='red')
>> 
>> This above code runs into error:
>> 
>> Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"]
>+
>> bs["lka"] *  :
>>  'expr' did not evaluate to an object of length 'n'
>> In addition: Warning message:
>> In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"]
>*
>>> :
>>  longer object length is not a multiple of shorter object length
>> 
>> Which I’ve investigated might be related to the lengths of the
>> different objects being multiplied or summed.
>> Taking length(g$x) or length(g$y) of
>> 
>> g <-
>curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x,
>>> 
>> from=min(lka), to=max(lka), add=TRUE, col='red')
>> 
>> returns 101.
>> 
>> However length(lka) is 375. But perhaps these being different is
>>> not
>> the problem?
>> 
>> I however do see that the whole range of lka is not plotted, for
>>> some
>> reason. So how can I be sure
>> that it passes through all x-values in lka? And i.e. that the
>>> lengths
>> of objects inside curve() are correct?
>> 
>> What can I do?
> 
> __
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
> 
>>> 
>>> __
>>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread mviljamaa

On 2016-09-25 18:52, Jeff Newmiller wrote:
You seem to be confused about what curve is doing vs. what you are 
doing.


But my x-range in curve()'s parameters from and to should be the entire 
lka vector, since they are from=min(lka) and to=max(lka). Then why does 
this not span the entire of lka? Because of duplicate entries or what?


It seems like I cannot use curve(), since my x-axis must be exactly lka 
for the function to plot the y value for every lka value.



A) Compute the points you want to plot and put them into 2 vectors.
Then figure out how to plot those vectors. Then (perhaps) consider
putting that all into one line of code again.

B) The predict function is the preferred way to compute points. It may
be educational for you to do the computations by hand at first, but in
the long run using predict will help you avoid problems getting the
equations right in multiple places in your script.

C) Learn what makes an example reproducible (e.g. [1] or [2]), and ask
your questions with reproducible code and data so we can give you
concrete responses.

[1] http://adv-r.had.co.nz/Reproducibility.html
[2]
http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
--
Sent from my phone. Please excuse my brevity.

On September 25, 2016 8:36:49 AM PDT, mviljamaa  
wrote:

On 2016-09-25 18:30, Duncan Murdoch wrote:

On 25/09/2016 9:10 AM, Matti Viljamaa wrote:

Writing:



bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka


i.e. without that being inside curve produces a vector of length

375.


So now it seems that curve() is really skipping some lka-/x-values.


How could curve() know what the length of lka is?  You're telling it
to set x to a sequence of values of length 101 (the default) from
min(lka) to max(lka).  You never tell it to set x to lka.

curve() is designed to plot expressions or functions, not vectors.

If

you actually want to plot line segments using your original data, use
lines().  (You'll likely need to sort your x values into increasing
order if you do that, or you'll get a pretty ugly plot.)

Duncan Murdoch


I know that about curve(), but since this function uses lka as a
parameter, then how should I formulate it for curve so that I don't 
get


the error about wrong lengths?




On 25 Sep 2016, at 16:01, Matti Viljamaa 

wrote:


I’m trying to plot regression lines using curve()

The way I do it is:

bs <- coef(fit2)

and then for example:



curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,


from=min(lka), to=max(lka), add=TRUE, col='red')

This above code runs into error:

Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] +
bs["lka"] *  :
 'expr' did not evaluate to an object of length 'n'
In addition: Warning message:
In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *

:

 longer object length is not a multiple of shorter object length

Which I’ve investigated might be related to the lengths of the
different objects being multiplied or summed.
Taking length(g$x) or length(g$y) of

g <- curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x,



from=min(lka), to=max(lka), add=TRUE, col='red')

returns 101.

However length(lka) is 375. But perhaps these being different is

not

the problem?

I however do see that the whole range of lka is not plotted, for

some

reason. So how can I be sure
that it passes through all x-values in lka? And i.e. that the

lengths

of objects inside curve() are correct?

What can I do?


__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.



__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Jeff Newmiller
You seem to be confused about what curve is doing vs. what you are doing. 

A) Compute the points you want to plot and put them into 2 vectors. Then figure 
out how to plot those vectors. Then (perhaps) consider putting that all into 
one line of code again. 

B) The predict function is the preferred way to compute points. It may be 
educational for you to do the computations by hand at first, but in the long 
run using predict will help you avoid problems getting the equations right in 
multiple places in your script. 

C) Learn what makes an example reproducible (e.g. [1] or [2]), and ask your 
questions with reproducible code and data so we can give you concrete 
responses. 

[1] http://adv-r.had.co.nz/Reproducibility.html
[2] 
http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example
-- 
Sent from my phone. Please excuse my brevity.

On September 25, 2016 8:36:49 AM PDT, mviljamaa  wrote:
>On 2016-09-25 18:30, Duncan Murdoch wrote:
>> On 25/09/2016 9:10 AM, Matti Viljamaa wrote:
>>> Writing:
>>> 
>>>
>bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka
>>> 
>>> i.e. without that being inside curve produces a vector of length
>375.
>>> 
>>> So now it seems that curve() is really skipping some lka-/x-values.
>> 
>> How could curve() know what the length of lka is?  You're telling it
>> to set x to a sequence of values of length 101 (the default) from
>> min(lka) to max(lka).  You never tell it to set x to lka.
>> 
>> curve() is designed to plot expressions or functions, not vectors. 
>If
>> you actually want to plot line segments using your original data, use
>> lines().  (You'll likely need to sort your x values into increasing
>> order if you do that, or you'll get a pretty ugly plot.)
>> 
>> Duncan Murdoch
>
>I know that about curve(), but since this function uses lka as a 
>parameter, then how should I formulate it for curve so that I don't get
>
>the error about wrong lengths?
>
>>> 
 On 25 Sep 2016, at 16:01, Matti Viljamaa 
>wrote:
 
 I’m trying to plot regression lines using curve()
 
 The way I do it is:
 
 bs <- coef(fit2)
 
 and then for example:
 

>curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
>
 from=min(lka), to=max(lka), add=TRUE, col='red')
 
 This above code runs into error:
 
 Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + 
 bs["lka"] *  :
  'expr' did not evaluate to an object of length 'n'
 In addition: Warning message:
 In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] * 
>:
  longer object length is not a multiple of shorter object length
 
 Which I’ve investigated might be related to the lengths of the 
 different objects being multiplied or summed.
 Taking length(g$x) or length(g$y) of
 
 g <- curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x,
>
 from=min(lka), to=max(lka), add=TRUE, col='red')
 
 returns 101.
 
 However length(lka) is 375. But perhaps these being different is
>not 
 the problem?
 
 I however do see that the whole range of lka is not plotted, for
>some 
 reason. So how can I be sure
 that it passes through all x-values in lka? And i.e. that the
>lengths 
 of objects inside curve() are correct?
 
 What can I do?
>>> 
>>> __
>>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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.
>>>
>
>__
>R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>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.

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread mviljamaa

On 2016-09-25 18:30, Duncan Murdoch wrote:

On 25/09/2016 9:10 AM, Matti Viljamaa wrote:

Writing:

bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka

i.e. without that being inside curve produces a vector of length 375.

So now it seems that curve() is really skipping some lka-/x-values.


How could curve() know what the length of lka is?  You're telling it
to set x to a sequence of values of length 101 (the default) from
min(lka) to max(lka).  You never tell it to set x to lka.

curve() is designed to plot expressions or functions, not vectors.  If
you actually want to plot line segments using your original data, use
lines().  (You'll likely need to sort your x values into increasing
order if you do that, or you'll get a pretty ugly plot.)

Duncan Murdoch


I know that about curve(), but since this function uses lka as a 
parameter, then how should I formulate it for curve so that I don't get 
the error about wrong lengths?





On 25 Sep 2016, at 16:01, Matti Viljamaa  wrote:

I’m trying to plot regression lines using curve()

The way I do it is:

bs <- coef(fit2)

and then for example:

curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka, 
from=min(lka), to=max(lka), add=TRUE, col='red')


This above code runs into error:

Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + 
bs["lka"] *  :

 'expr' did not evaluate to an object of length 'n'
In addition: Warning message:
In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  :
 longer object length is not a multiple of shorter object length

Which I’ve investigated might be related to the lengths of the 
different objects being multiplied or summed.

Taking length(g$x) or length(g$y) of

g <- curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x, 
from=min(lka), to=max(lka), add=TRUE, col='red')


returns 101.

However length(lka) is 375. But perhaps these being different is not 
the problem?


I however do see that the whole range of lka is not plotted, for some 
reason. So how can I be sure
that it passes through all x-values in lka? And i.e. that the lengths 
of objects inside curve() are correct?


What can I do?


__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.



__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Duncan Murdoch

On 25/09/2016 9:10 AM, Matti Viljamaa wrote:

Writing:

bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka

i.e. without that being inside curve produces a vector of length 375.

So now it seems that curve() is really skipping some lka-/x-values.


How could curve() know what the length of lka is?  You're telling it to 
set x to a sequence of values of length 101 (the default) from min(lka) 
to max(lka).  You never tell it to set x to lka.


curve() is designed to plot expressions or functions, not vectors.  If 
you actually want to plot line segments using your original data, use
lines().  (You'll likely need to sort your x values into increasing 
order if you do that, or you'll get a pretty ugly plot.)


Duncan Murdoch




On 25 Sep 2016, at 16:01, Matti Viljamaa  wrote:

I’m trying to plot regression lines using curve()

The way I do it is:

bs <- coef(fit2)

and then for example:

curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
 from=min(lka), to=max(lka), add=TRUE, col='red')

This above code runs into error:

Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  
:
 'expr' did not evaluate to an object of length 'n'
In addition: Warning message:
In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  :
 longer object length is not a multiple of shorter object length

Which I’ve investigated might be related to the lengths of the different 
objects being multiplied or summed.
Taking length(g$x) or length(g$y) of

g <- curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x, 
from=min(lka), to=max(lka), add=TRUE, col='red')

returns 101.

However length(lka) is 375. But perhaps these being different is not the 
problem?

I however do see that the whole range of lka is not plotted, for some reason. 
So how can I be sure
that it passes through all x-values in lka? And i.e. that the lengths of 
objects inside curve() are correct?

What can I do?


__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.



__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Re: [R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Matti Viljamaa
Writing:

bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka

i.e. without that being inside curve produces a vector of length 375.

So now it seems that curve() is really skipping some lka-/x-values.

> On 25 Sep 2016, at 16:01, Matti Viljamaa  wrote:
> 
> I’m trying to plot regression lines using curve()
> 
> The way I do it is:
> 
> bs <- coef(fit2)
> 
> and then for example:
> 
> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
>  from=min(lka), to=max(lka), add=TRUE, col='red')
> 
> This above code runs into error:
> 
> Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] 
> *  : 
>  'expr' did not evaluate to an object of length 'n'
> In addition: Warning message:
> In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  :
>  longer object length is not a multiple of shorter object length
> 
> Which I’ve investigated might be related to the lengths of the different 
> objects being multiplied or summed.
> Taking length(g$x) or length(g$y) of
> 
> g <- curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x, 
> from=min(lka), to=max(lka), add=TRUE, col='red')
> 
> returns 101.
> 
> However length(lka) is 375. But perhaps these being different is not the 
> problem?
> 
> I however do see that the whole range of lka is not plotted, for some reason. 
> So how can I be sure
> that it passes through all x-values in lka? And i.e. that the lengths of 
> objects inside curve() are correct?
> 
> What can I do?

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

[R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

2016-09-25 Thread Matti Viljamaa
I’m trying to plot regression lines using curve()

The way I do it is:

bs <- coef(fit2)

and then for example:

curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka,
 from=min(lka), to=max(lka), add=TRUE, col='red')

This above code runs into error:

Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  
: 
  'expr' did not evaluate to an object of length 'n'
In addition: Warning message:
In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  :
  longer object length is not a multiple of shorter object length

Which I’ve investigated might be related to the lengths of the different 
objects being multiplied or summed.
Taking length(g$x) or length(g$y) of

g <- curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x, 
from=min(lka), to=max(lka), add=TRUE, col='red')

returns 101.

However length(lka) is 375. But perhaps these being different is not the 
problem?

I however do see that the whole range of lka is not plotted, for some reason. 
So how can I be sure
that it passes through all x-values in lka? And i.e. that the lengths of 
objects inside curve() are correct?

What can I do?
__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.