2: In lsfit(x, y, d^2, intercept = FALSE) : 'X' matrix was collinear
请问该如何改进?这个错误有时候出现,有时候不出现。若能解答,我会给奖励
- n<-50
- dat<-rsn(n,0,1,-1.8)
- dat<-sort(dat)
- f1<-psn(dat,0,1,-1)
- sncdf<-function(x,alpha){
- n<-length(x)
- re<-rep(0,n)
- for(i in 1:n){
- snpdf<-function(x,alpha){
- p1<-dnorm(x,0,1)
- p2<-pnorm(alpha*x,0,1)
- 2*p1*p2
- }
- re[i]<-integrate(snpdf,alpha,lower = -Inf,upper = x[i])$value
- }
- re
- }
- reg<-function(n,alpha){
- m=100
- res<-matrix(0,m,3)
- for(i in 1:m){
- ef<-(1:n-0.5)/n
- da<-rsn(n,0,1,alpha)
- da<-sort(da)
- fit1<-nlrq(ef~sncdf(da,alpha),start=list(alpha=0),tau = 0.5)
- fit1<-summary(fit1)$coefficients
- fit2<-nlrq(ef~sncdf(da,alpha),start=list(alpha=0),tau = 0.75)
- fit2<-summary(fit2)$coefficients
- fit3<-nlrq(ef~sncdf(da,alpha),start=list(alpha=0),tau = 0.85)
- fit3<-summary(fit3)$coefficients
- res[i,]<-c(fit1[1],fit2[1],fit3[1])
- }
- res
- }
- paras<-seq(-5,5,by=0.5)
- paras<-paras[paras!=0]
- nn<-length(paras)
- nres<-matrix(0,nn,6)
- for(i in 1:nn){
- a<-reg(50,paras[i])
- jz<-apply(a,2,mean)
- fc<-apply(a,2,var)
- nres[i,1:3]=abs((jz-paras[i])/paras[i])
- nres[i,4:6]=fc+(jz-paras[i])^2
- print(i)
- }


雷达卡




京公网安备 11010802022788号







