Hi, I was able to read the file after saving it as .csv. It seems to work without any errors.
dat1<-read.csv("Book2.csv", header=T) ###same as previous lst1 <- lapply(paste("r",1:334,sep="."),function(x) cbind(dat1[,c(1:3)],dat1[x])) lst2 <- lapply(lst1,function(x) {colnames(x)[4] <-"r";x} ) sapply(lst2,function(x) sum(!!rowSums(is.na(x)))) library(zoo) res1 <- do.call(rbind,lapply(lst2,function(x) rollapply(x,width=32,FUN=function(z) {z1 <- as.data.frame(z); if(!sum(!!rowSums(is.na(z1)))) {l1 <-lm(r~F.1+F.2+F.3,data=z1); c(coef(l1), pval=summary(l1)$coef[,4], rsquare=summary(l1)$r.squared) } else rep(NA,9)},by.column=FALSE,align="right"))) row.names(res1) <- rep(paste("r",1:334,sep="."),each=123) dim(res1) #[1] 41082 9 #vif library(car) res2 <- do.call(rbind,lapply(lst2,function(x) rollapply(x,width=32,FUN=function(z) {z1 <- as.data.frame(z); if(!sum(!!rowSums(is.na(z1)))) {l1 <-lm(r~F.1+F.2+F.3,data=z1); vif(l1) } else rep(NA,3)},by.column=FALSE,align="right"))) row.names(res2) <- rep(paste("r",1:334,sep="."),each=123) dim(res2) #[1] 41082 3 #DW statistic: lst3 <- lapply(lst2,function(x) rollapply(x,width=32,FUN=function(z) {z1 <- as.data.frame(z); if(!sum(!!rowSums(is.na(z1)))) {l1 <-lm(r~F.1+F.2+F.3,data=z1); durbinWatsonTest(l1) } else rep(NA,4)},by.column=FALSE,align="right")) res3 <- do.call(rbind,lapply(lst3,function(x) x[,-4])) row.names(res3) <- rep(paste("r",1:334,sep="."),each=123) dim(res3) #[1] 41082 3 ##ncvTest() f4 <- function(meanmod, dta, varmod) { assign(".dta", dta, envir=.GlobalEnv) assign(".meanmod", meanmod, envir=.GlobalEnv) m1 <- lm(.meanmod, .dta) ans <- ncvTest(m1, varmod) remove(".dta", envir=.GlobalEnv) remove(".meanmod", envir=.GlobalEnv) ans } lst4 <- lapply(lst2,function(x) rollapply(x,width=32,FUN=function(z) {z1 <- as.data.frame(z); if(!sum(!!rowSums(is.na(z1)))) {l1 <-f4(r~.,z1) } else NA},by.column=FALSE,align="right")) names(lst4) <- paste("r",1:334,sep=".") length(lst4) #[1] 334 ###jarque.bera.test library(tseries) res5 <- do.call(rbind,lapply(lst2,function(x) rollapply(x,width=32,FUN=function(z) {z1 <- as.data.frame(z); if(!sum(!!rowSums(is.na(z1)))) {l1 <-lm(r~F.1+F.2+F.3,data=z1); resid <- residuals(l1); unlist(jarque.bera.test(resid)[1:3]) } else rep(NA,3)},by.column=FALSE,align="right"))) dim(res5) #[1] 41082 3 A.K. On Saturday, November 30, 2013 1:44 PM, nooldor <nool...@gmail.com> wrote: here is in .xlsx should be easy to open and eventually find&replace commas according to you excel settings (or maybe it will do it automatically) On 30 November 2013 19:15, arun <smartpink...@yahoo.com> wrote: I tried that, but: > > > >dat1<-read.table("Book2.csv", head=T, sep=";", dec=",") >> str(dat1) >'data.frame': 154 obs. of 1 variable: > >Then I changed to: >dat1<-read.table("Book2.csv", head=T, sep="\t", dec=",") >> str(dat1) >'data.frame': 154 obs. of 661 variables: >Both of them are wrong as the number of variables should be 337. >A.K. > > > > > > > >On Saturday, November 30, 2013 12:53 PM, nooldor <nool...@gmail.com> wrote: > >Thank you, > >I got your reply. I am just testing your script. I will let you know how is it >soon. > >.csv could be problematic as commas are used as dec separator (Eastern Europe >excel settings) ... I read it in R with this: >dat1<-read.table("Book2.csv", head=T, sep=";", dec=",") > >Thank you very much !!! > >T.S. > > > > >On 30 November 2013 18:39, arun <smartpink...@yahoo.com> wrote: > >I couldn't read the "Book.csv" as the format is completely messed up. Anyway, >I hope the solution works on your dataset. >> >> >> >> >> >> >> >> >> >> >>On Saturday, November 30, 2013 10:34 AM, nooldor <nool...@gmail.com> wrote: >> >> >>ok. >> >> >>> dat1<-read.table("Book2.csv", head=T, sep=";", dec=",") > colnames(dat1) <- >>> c(paste("F",1:3,sep="."),paste("r",1:2,sep=".")) > lst1 <- >>> lapply(paste("r",1:2,sep="."),function(x) cbind(dat1[,c(1:3)],dat1[x])) > >>> lst2 <- lapply(lst1,function(x) {colnames(x)[4] <-"r";x} ) > >>> sum(!!rowSums(is.na(lst2[[1]]))) [1] 57 > #[1] 40 > sapply(lst2,function(x) >>> sum(!!rowSums(is.na(x)))) [1] 57 0 > #[1] 40 46 >>in att you have the data file >> >> >> >> >> >> >>On 30 November 2013 16:22, arun <smartpink...@yahoo.com> wrote: >> >>Hi, >>>The first point is not that clear. >>> >>>Could you show the expected results in this case? >>> >>>set.seed(432) >>>dat1 <- as.data.frame(matrix(sample(c(1:10,NA),154*5,replace=TRUE),ncol=5)) >>> colnames(dat1) <- c(paste("F",1:3,sep="."),paste("r",1:2,sep=".")) >>>lst1 <- lapply(paste("r",1:2,sep="."),function(x) >>>cbind(dat1[,c(1:3)],dat1[x])) >>> >>> >>> lst2 <- lapply(lst1,function(x) {colnames(x)[4] <-"r";x} ) >>> sum(!!rowSums(is.na(lst2[[1]]))) >>>#[1] 40 >>> sapply(lst2,function(x) sum(!!rowSums(is.na(x)))) >>>#[1] 40 46 >>> >>> >>>A.K. >>> >>> >>> >>>On Saturday, November 30, 2013 10:09 AM, nooldor <nool...@gmail.com> wrote: >>> >>>Hi, >>> >>>Thanks for reply! >>> >>> >>>Three things: >>>1. >>>I did not write that some of the data has more then 31 NA in the column and >>>then it is not possible to run lm() >>> >>>Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 >>>(non-NA) casesIn this case program should return "NA" symbol and go further, >>>in the case when length of the observations is shorter then 31 program >>>should always return "NA" but go further . >>> >>> >>> >>>2. in your result matrix there are only 4 columns (for estimates of the >>>coefficients), is it possible to put there 4 more columns with p-values and >>>one column with R squared >>> >>> >>>3. basic statistical test for the regressions: >>> >>>inflation factors can be captured by: >>>res2 <- do.call(rbind,lapply(lst2,function(x) >>>rollapply(x,width=32,FUN=function(z) >>> vif(lm(r~ >>>F.1+F.2+F.3,data=as.data.frame(z))),by.column=FALSE,align="right"))) >>> >>>and DW statistic: >>>res3 <- do.call(rbind,lapply(lst2,function(x) >>>rollapply(x,width=32,FUN=function(z) >>> durbinWatsonTest(lm(r~ >>>F.1+F.2+F.3,data=as.data.frame(z))),by.column=FALSE,align="right"))) >>> >>> >>>3a)is that right? >>> >>>3b) how to do and have in user-friendly form durbinWatsonTest for more then >>>1 lag? >>> >>>3c) how to apply: jarque.bera.test from library(tseries) and ncvTest from >>>library(car) ??? >>> >>> >>> >>> >>> >>> >>>Pozdrowienia, >>> >>>Tomasz Schabek >>> >>> >>>On 30 November 2013 07:42, arun <smartpink...@yahoo.com> wrote: >>> >>>Hi, >>>>The link seems to be not working. From the description, it looks like: >>>>set.seed(432) >>>>dat1 <- as.data.frame(matrix(sample(200,154*337,replace=TRUE),ncol=337)) >>>> colnames(dat1) <- c(paste("F",1:3,sep="."),paste("r",1:334,sep=".")) >>>>lst1 <- lapply(paste("r",1:334,sep="."),function(x) >>>>cbind(dat1[,c(1:3)],dat1[x])) >>>> >>>> lst2 <- lapply(lst1,function(x) {colnames(x)[4] <-"r";x} ) >>>>library(zoo) >>>> >>>>res <- do.call(rbind,lapply(lst2,function(x) >>>>rollapply(x,width=32,FUN=function(z) coef(lm(r~ >>>>F.1+F.2+F.3,data=as.data.frame(z))),by.column=FALSE,align="right"))) >>>> >>>>row.names(res) <- rep(paste("r",1:334,sep="."),each=123) >>>> dim(res) >>>>#[1] 41082 4 >>>> >>>>coef(lm(r.1~F.1+F.2+F.3,data=dat1[1:32,]) ) >>>>#(Intercept) F.1 F.2 F.3 >>>>#109.9168150 -0.1705361 -0.1028231 0.2027911 >>>>coef(lm(r.1~F.1+F.2+F.3,data=dat1[2:33,]) ) >>>>#(Intercept) F.1 F.2 F.3 >>>>#119.3718949 -0.1660709 -0.2059830 0.1338608 >>>>res[1:2,] >>>># (Intercept) F.1 F.2 F.3 >>>>#r.1 109.9168 -0.1705361 -0.1028231 0.2027911 >>>>#r.1 119.3719 -0.1660709 -0.2059830 0.1338608 >>>> >>>>A.K. >>>> >>>> >>>> >>>> >>>> >>>> >>>>On Friday, November 29, 2013 6:43 PM, nooldor <nool...@gmail.com> wrote: >>>>Hi all! >>>> >>>> >>>>I am just starting my adventure with R, so excuse me naive questions. >>>> >>>>My data look like that: >>>> >>>><http://r.789695.n4.nabble.com/file/n4681391/data_descr_img.jpg> >>>> >>>>I have 3 independent variables (F.1, F.2 and F.3) and 334 other variables >>>>(r.1, r.2, ... r.334) - each one of these will be dependent variable in my >>>>regression. >>>> >>>>Total span of the time is 154 observations. But I would like to have rolling >>>>window regression with length of 31 observations. >>>> >>>>I would like to run script like that: >>>> >>>>summary(lm(r.1~F.1+F.2+F.3, data=data)) >>>>vif(lm(r.1~F.1+F.2+F.3, data=data)) >>>> >>>>But for each of 334 (r.1 to r.334) dependent variables separately and with >>>>rolling-window of the length 31obs. >>>> >>>>Id est: >>>>summary(lm(r.1~F.1+F.2+F.3, data=data)) would be run 123 (154 total obs - >>>>31. for the first regression) times for rolling-fixed period of 31 obs. >>>> >>>>The next regression would be: >>>>summary(lm(r.2~F.1+F.2+F.3, data=data)) also 123 times ... and so on till >>>>summary(lm(r.334~F.1+F.2+F.3, data=data)) >>>> >>>>It means it would be 123 x 334 regressions (=41082 regressions) >>>> >>>>I would like to save results (summary + vif test) of all those 41082 >>>>regressions in one read-user-friendly file like this given by e.g command >>>>capture.output() >>>> >>>>Could you help with it? >>>> >>>>Regards, >>>> >>>>T.S. >>>> >>>> [[alternative HTML version deleted]] >>>> >>>>______________________________________________ >>>>R-help@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. >>>> >>>> >>> >> > ______________________________________________ R-help@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.