[R] Manipulating data, and performing repeated simple regressions, not multiple regression
David Winsemius
dwinsemius at comcast.net
Mon Feb 1 16:18:37 CET 2010
On Feb 1, 2010, at 6:29 AM, Guy Green wrote:
>
> I have a simple table of data:
>
> Result Var1 Var2 Var3
> 1 0.10 0.78 0.12 0.38
> 2 0.20 0.66 0.39 0.12
> 3 0.10 0.83 0.09 0.52
> 4 0.15 0.41 0.63 0.95
> 5 0.60 0.88 0.91 0.86
> 6 -0.02 0.14 0.69 0.94
>
> I am trying to achieve two things:
>
> 1) Manipulate this data so that I have the "Result" data unchanged,
> and all
> the other data (the Var1, Var2 & Var3 columns) squared. I can
> achieve this
> (see code below), but I then can't use the output in the way I expect.
>
> 2) I want to get as outputs the separate regressions of Var1 to
> Result, Var2
> to Result, etc. I.e. separate single-variable regressions, NOT a
> multiple
> regression.
>
> The code I have so far (with the simple data above in this attached
> file
> "sample-regression.txt")
> http://n4.nabble.com/file/n1458694/sample-regression.txt
> sample-regression.txt is:
>
>
> Read_data=read.table("C:/sample-regression.txt", head = T)
> Resultnew=Read_data[,1]
> Varsquared = Read_data[,-1]^2
> reg_data=cbind(Resultnew,Varsquared)
> #If I look at the output of this (reg_data), it looks how I want it
> to look.
> #However, I can't use it: when I perform even a regular multiple
> regression
> on it, I get the error message:
Why not instead:
linreg=lm(Result ~ Var1^2 + Var2^2 + Var3^2,
data= Read_data)
> # Error in model.frame.default(formula = Resultnew ~ Var1 + Var2 +
> Var3,
> :
> # 'data' must be a data.frame, not a matrix or an array
> #e.g.:
> linreg=lm(Resultnew~Var1+Var2+Var3, data=reg_data)
>
> So: 1) is there a better way to calculate the squared data, so that
> I can
> use the output more flexibly, and 2) can I perform the calculation
> not as a
> multiple regression, but to get separate regressions.
linreg[[1]] <- lm(Result ~ Var1^2, data= Read_data)
linreg[[2]] <- lm(Result ~ Var2^2, data= Read_data)
linreg[[3]] <- lm(Result ~ Var3^2, data= Read_data)
lapply(linreg, coef)
>
> Ideally the output should be something like:
>
> Var1 0.4394
> Var2 0.4463
> var3 0.0631
>
> (These are the actual regression coefficients, if done separately,
> on the
> data after the Var columns have been squared.)
>
> Thanks,
>
> Guy
> --
> View this message in context: http://n4.nabble.com/Manipulating-data-and-performing-repeated-simple-regressions-not-multiple-regression-tp1458694p1458694.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list