

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 xvalues in lka? And i.e. that the lengths of objects inside curve() are correct?
What can I do?
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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/xvalues.
> On 25 Sep 2016, at 16:01, Matti Viljamaa < [hidden email]> 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 xvalues in lka? And i.e. that the lengths of objects inside curve() are correct?
>
> What can I do?
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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/xvalues.
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 < [hidden email]> 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 xvalues in lka? And i.e. that the lengths of objects inside curve() are correct?
>>
>> What can I do?
>
> ______________________________________________
> [hidden email] mailing list  To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/rhelp> PLEASE do read the posting guide http://www.Rproject.org/postingguide.html> and provide commented, minimal, selfcontained, reproducible code.
>
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


On 20160925 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/xvalues.
>
> 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 < [hidden email]> 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 xvalues in lka? And i.e. that the lengths
>>> of objects inside curve() are correct?
>>>
>>> What can I do?
>>
>> ______________________________________________
>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/rhelp>> PLEASE do read the posting guide
>> http://www.Rproject.org/postingguide.html>> and provide commented, minimal, selfcontained, reproducible code.
>>
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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://advr.had.co.nz/Reproducibility.html[2] http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample
Sent from my phone. Please excuse my brevity.
On September 25, 2016 8:36:49 AM PDT, mviljamaa < [hidden email]> wrote:
>On 20160925 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/xvalues.
>>
>> 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 < [hidden email]>
>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 xvalues in lka? And i.e. that the
>lengths
>>>> of objects inside curve() are correct?
>>>>
>>>> What can I do?
>>>
>>> ______________________________________________
>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>> PLEASE do read the posting guide
>>> http://www.Rproject.org/postingguide.html>>> and provide commented, minimal, selfcontained, reproducible code.
>>>
>
>______________________________________________
> [hidden email] mailing list  To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/rhelp>PLEASE do read the posting guide
> http://www.Rproject.org/postingguide.html>and provide commented, minimal, selfcontained, reproducible code.
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


On 20160925 18:52, Jeff Newmiller wrote:
> You seem to be confused about what curve is doing vs. what you are
> doing.
But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html> [2]
> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample> 
> Sent from my phone. Please excuse my brevity.
>
> On September 25, 2016 8:36:49 AM PDT, mviljamaa < [hidden email]>
> wrote:
>> On 20160925 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/xvalues.
>>>
>>> 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 < [hidden email]>
>> 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 xvalues in lka? And i.e. that the
>> lengths
>>>>> of objects inside curve() are correct?
>>>>>
>>>>> What can I do?
>>>>
>>>> ______________________________________________
>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>> PLEASE do read the posting guide
>>>> http://www.Rproject.org/postingguide.html>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>
>>
>> ______________________________________________
>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/rhelp>> PLEASE do read the posting guide
>> http://www.Rproject.org/postingguide.html>> and provide commented, minimal, selfcontained, reproducible code.
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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 < [hidden email]> wrote:
>On 20160925 18:52, Jeff Newmiller wrote:
>> You seem to be confused about what curve is doing vs. what you are
>> doing.
>
>But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html>> [2]
>>
> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample>> 
>> Sent from my phone. Please excuse my brevity.
>>
>> On September 25, 2016 8:36:49 AM PDT, mviljamaa < [hidden email]>
>> wrote:
>>> On 20160925 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/xvalues.
>>>>
>>>> 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 < [hidden email]>
>>> 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 xvalues in lka? And i.e. that the
>>> lengths
>>>>>> of objects inside curve() are correct?
>>>>>>
>>>>>> What can I do?
>>>>>
>>>>> ______________________________________________
>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>> PLEASE do read the posting guide
>>>>> http://www.Rproject.org/postingguide.html>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>>
>>>
>>> ______________________________________________
>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>> PLEASE do read the posting guide
>>> http://www.Rproject.org/postingguide.html>>> and provide commented, minimal, selfcontained, reproducible code.
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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 < [hidden email]> 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 < [hidden email]> wrote:
>> On 20160925 18:52, Jeff Newmiller wrote:
>>> You seem to be confused about what curve is doing vs. what you are
>>> doing.
>>
>> But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html>>> [2]
>>>
>> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample>>> 
>>> Sent from my phone. Please excuse my brevity.
>>>
>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa < [hidden email]>
>>> wrote:
>>>> On 20160925 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/xvalues.
>>>>>
>>>>> 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 < [hidden email]>
>>>> 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 xvalues in lka? And i.e. that the
>>>> lengths
>>>>>>> of objects inside curve() are correct?
>>>>>>>
>>>>>>> What can I do?
>>>>>>
>>>>>> ______________________________________________
>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>> PLEASE do read the posting guide
>>>>>> http://www.Rproject.org/postingguide.html>>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>>>
>>>>
>>>> ______________________________________________
>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>> PLEASE do read the posting guide
>>>> http://www.Rproject.org/postingguide.html>>>> and provide commented, minimal, selfcontained, reproducible code.
>
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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 < [hidden email]> 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 < [hidden email]>
>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 < [hidden email]>
>wrote:
>>> On 20160925 18:52, Jeff Newmiller wrote:
>>>> You seem to be confused about what curve is doing vs. what you are
>>>> doing.
>>>
>>> But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html>>>> [2]
>>>>
>>>
> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample>>>> 
>>>> Sent from my phone. Please excuse my brevity.
>>>>
>>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa
>< [hidden email]>
>>>> wrote:
>>>>> On 20160925 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/xvalues.
>>>>>>
>>>>>> 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 < [hidden email]>
>>>>> 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 xvalues in lka? And i.e. that the
>>>>> lengths
>>>>>>>> of objects inside curve() are correct?
>>>>>>>>
>>>>>>>> What can I do?
>>>>>>>
>>>>>>> ______________________________________________
>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more,
>see
>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>> PLEASE do read the posting guide
>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>> and provide commented, minimal, selfcontained, reproducible
>code.
>>>>>>>
>>>>>
>>>>> ______________________________________________
>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>> PLEASE do read the posting guide
>>>>> http://www.Rproject.org/postingguide.html>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


> On 25 Sep 2016, at 19:37, Matti Viljamaa < [hidden email]> 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 < [hidden email]> 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 < [hidden email]> wrote:
>>> On 20160925 18:52, Jeff Newmiller wrote:
>>>> You seem to be confused about what curve is doing vs. what you are
>>>> doing.
>>>
>>> But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html>>>> [2]
>>>>
>>> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample>>>> 
>>>> Sent from my phone. Please excuse my brevity.
>>>>
>>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa < [hidden email]>
>>>> wrote:
>>>>> On 20160925 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/xvalues.
>>>>>>
>>>>>> 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 < [hidden email]>
>>>>> 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 xvalues in lka? And i.e. that the
>>>>> lengths
>>>>>>>> of objects inside curve() are correct?
>>>>>>>>
>>>>>>>> What can I do?
>>>>>>>
>>>>>>> ______________________________________________
>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>> PLEASE do read the posting guide
>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>>>>
>>>>>
>>>>> ______________________________________________
>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>> PLEASE do read the posting guide
>>>>> http://www.Rproject.org/postingguide.html>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>
>
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


This illustrates why you need to post a reproducible example. You have a
number of confounding factors in your code.
First, "data" is a commonlyused 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 < [hidden email]> 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 < [hidden email]> 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 < [hidden email]> wrote:
>>>> On 20160925 18:52, Jeff Newmiller wrote:
>>>>> You seem to be confused about what curve is doing vs. what you are
>>>>> doing.
>>>>
>>>> But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html>>>>> [2]
>>>>>
>>>> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample>>>>> 
>>>>> Sent from my phone. Please excuse my brevity.
>>>>>
>>>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa < [hidden email]>
>>>>> wrote:
>>>>>> On 20160925 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/xvalues.
>>>>>>>
>>>>>>> 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 < [hidden email]>
>>>>>> 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 xvalues in lka? And i.e. that the
>>>>>> lengths
>>>>>>>>> of objects inside curve() are correct?
>>>>>>>>>
>>>>>>>>> What can I do?
>>>>>>>>
>>>>>>>> ______________________________________________
>>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>>> PLEASE do read the posting guide
>>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>>>>>
>>>>>>
>>>>>> ______________________________________________
>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>> PLEASE do read the posting guide
>>>>>> http://www.Rproject.org/postingguide.html>>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>
>>
>
>

Jeff Newmiller The ..... ..... Go Live...
DCN:< [hidden email]> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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 < [hidden email]> 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 commonlyused 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 < [hidden email]> 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 < [hidden email]> 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 < [hidden email]> wrote:
>>>>> On 20160925 18:52, Jeff Newmiller wrote:
>>>>>> You seem to be confused about what curve is doing vs. what you are
>>>>>> doing.
>>>>>
>>>>> But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html>>>>>> [2]
>>>>>>
>>>>> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample>>>>>> 
>>>>>> Sent from my phone. Please excuse my brevity.
>>>>>>
>>>>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa < [hidden email]>
>>>>>> wrote:
>>>>>>> On 20160925 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/xvalues.
>>>>>>>>
>>>>>>>> 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 < [hidden email]>
>>>>>>> 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 xvalues in lka? And i.e. that the
>>>>>>> lengths
>>>>>>>>>> of objects inside curve() are correct?
>>>>>>>>>>
>>>>>>>>>> What can I do?
>>>>>>>>>
>>>>>>>>> ______________________________________________
>>>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>>>> PLEASE do read the posting guide
>>>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>>>>>>
>>>>>>>
>>>>>>> ______________________________________________
>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>> PLEASE do read the posting guide
>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>
>>>
>>
>>
>
> 
> Jeff Newmiller The ..... ..... Go Live...
> DCN:< [hidden email]> Basics: ##.#. ##.#. Live Go...
> Live: OO#.. Dead: OO#.. Playing
> Research Engineer (Solar/Batteries O.O#. #.O#. with
> /Software/Embedded Controllers) .OO#. .OO#. rocks...1k
> 
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


> On 26 Sep 2016, at 19:41, Matti Viljamaa < [hidden email]> 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 < [hidden email]> 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 commonlyused 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 < [hidden email]> 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 < [hidden email]> 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 < [hidden email]> wrote:
>>>>>> On 20160925 18:52, Jeff Newmiller wrote:
>>>>>>> You seem to be confused about what curve is doing vs. what you are
>>>>>>> doing.
>>>>>>
>>>>>> But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html>>>>>>> [2]
>>>>>>>
>>>>>> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample>>>>>>> 
>>>>>>> Sent from my phone. Please excuse my brevity.
>>>>>>>
>>>>>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa < [hidden email]>
>>>>>>> wrote:
>>>>>>>> On 20160925 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/xvalues.
>>>>>>>>>
>>>>>>>>> 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 < [hidden email]>
>>>>>>>> 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 xvalues in lka? And i.e. that the
>>>>>>>> lengths
>>>>>>>>>>> of objects inside curve() are correct?
>>>>>>>>>>>
>>>>>>>>>>> What can I do?
>>>>>>>>>>
>>>>>>>>>> ______________________________________________
>>>>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>>>>> PLEASE do read the posting guide
>>>>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>>>>>>>
>>>>>>>>
>>>>>>>> ______________________________________________
>>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more, see
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>>> PLEASE do read the posting guide
>>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>>> and provide commented, minimal, selfcontained, reproducible code.
>>>>>
>>>>
>>>
>>>
>>
>> 
>> Jeff Newmiller The ..... ..... Go Live...
>> DCN:< [hidden email]> Basics: ##.#. ##.#. Live Go...
>> Live: OO#.. Dead: OO#.. Playing
>> Research Engineer (Solar/Batteries O.O#. #.O#. with
>> /Software/Embedded Controllers) .OO#. .OO#. rocks...1k
>> 
>
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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 < [hidden email]> 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 xvalues in lka? And i.e. that the lengths of objects inside curve() are correct?
>
> What can I do?
> ______________________________________________
> [hidden email] mailing list  To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/rhelp> PLEASE do read the posting guide http://www.Rproject.org/postingguide.html> and provide commented, minimal, selfcontained, reproducible code.

Gregory (Greg) L. Snow Ph.D.
[hidden email]
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


I think you are going to have to be more specific than "having some trouble". Your plot used lka as the xaxis.
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 < [hidden email]> wrote:
>
>> On 26 Sep 2016, at 19:41, Matti Viljamaa < [hidden email]> 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 < [hidden email]>
>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 commonlyused 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 < [hidden email]>
>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
>< [hidden email]> 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
>< [hidden email]> wrote:
>>>>>>> On 20160925 18:52, Jeff Newmiller wrote:
>>>>>>>> You seem to be confused about what curve is doing vs. what you
>are
>>>>>>>> doing.
>>>>>>>
>>>>>>> But my xrange 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 xaxis 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://advr.had.co.nz/Reproducibility.html>>>>>>>> [2]
>>>>>>>>
>>>>>>>
> http://stackoverflow.com/questions/5963269/howtomakeagreatrreproducibleexample>>>>>>>> 
>>>>>>>> Sent from my phone. Please excuse my brevity.
>>>>>>>>
>>>>>>>> On September 25, 2016 8:36:49 AM PDT, mviljamaa
>< [hidden email]>
>>>>>>>> wrote:
>>>>>>>>> On 20160925 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/xvalues.
>>>>>>>>>>
>>>>>>>>>> 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
>< [hidden email]>
>>>>>>>>> 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 xvalues in lka? And i.e. that
>the
>>>>>>>>> lengths
>>>>>>>>>>>> of objects inside curve() are correct?
>>>>>>>>>>>>
>>>>>>>>>>>> What can I do?
>>>>>>>>>>>
>>>>>>>>>>> ______________________________________________
>>>>>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and
>more, see
>>>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>>>>>> PLEASE do read the posting guide
>>>>>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>>>>>> and provide commented, minimal, selfcontained, reproducible
>code.
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ______________________________________________
>>>>>>>>> [hidden email] mailing list  To UNSUBSCRIBE and more,
>see
>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>>>>>>>> PLEASE do read the posting guide
>>>>>>>>> http://www.Rproject.org/postingguide.html>>>>>>>>> and provide commented, minimal, selfcontained, reproducible
>code.
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>
>>> Jeff Newmiller The ..... ..... Go
>Live...
>>> DCN:< [hidden email]> Basics: ##.#. ##.#.
>Live Go...
>>> Live: OO#.. Dead: OO#..
>Playing
>>> Research Engineer (Solar/Batteries O.O#. #.O#.
>with
>>> /Software/Embedded Controllers) .OO#. .OO#.
>rocks...1k
>>>
>
>>
______________________________________________
[hidden email] mailing list  To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.

