2013-02-22 14 views
14

IV=time, DV=concentration ile bir dağılım grafiği (çoklu grup GRP) oluşturdum. Çizgiye (0.025,0.05,0.5,0.95,0.975) kuantum regresyon eğrilerini eklemek istedim. Parametrik olmayan kuantum regresyon eğrileri dağılım grafiğe

Ve bu arada

, bu şimdiye dağınık arsa oluşturmak için ne yaptığını: Ben burada oluşturulan veri benim büyük verinin küçük bir alt kümesidir Çünkü

attach(E) ## E is the name I gave to my data 
## Change Group to factor so that may work with levels in the legend 
Group<-as.character(Group) 
Group<-as.factor(Group) 

## Make the colored scatter-plot 
mycolors = c('red','orange','green','cornflowerblue') 
plot(Time,Concentration,main="Template",xlab="Time",ylab="Concentration",pch=18,col=mycolors[Group]) 

## This also works identically 
## with(E,plot(Time,Concentration,col=mycolors[Group],main="Template",xlab="Time",ylab="Concentration",pch=18)) 

## Use identify to identify each point by group number (to check) 
## identify(Time,Concentration,col=mycolors[Group],labels=Group) 
## Press Esc or press Stop to stop identify function 

## Create legend 
## Use locator(n=1,type="o") to find the point to align top left of legend box 
legend('topright',legend=levels(Group),col=mycolors,pch=18,title='Group') 

, yapabileceği gibi görünebilir dikdörtgen bir hiperbole olarak yaklaştırılmalıdır. Ama henüz bağımsız ve bağımlı değişkenlerim arasında matematiksel bir ilişkiyi aramak istemiyorum.

nlrq sanırım quantreg paketinden yanıt olabilir, ancak değişkenlerim arasındaki ilişkiyi bilmediğimde işlevi nasıl kullanacağımı anlamıyorum.

Ben bir bilim makaleden Bu grafiği bulmak ve ben tam grafiğin aynı tür yapmak istiyorum: Yine Goal

, yardımınız için teşekkürler!

Güncelleme

Test.csv benim örnek veri tekrarlanabilir olmadığını işaret edildi. İşte verilerimin bir örneği.

library(evd) 
qcbvnonpar(p=c(0.025,0.05,0.5,0.95,0.975),cbind(TAD,DV),epmar=T,plot=F,add=T) 

Ben de qcbvnonpar :: EVD çalıştı, ancak eğri çok düzgün görünmüyor.

+8

Verdiğiniz yapamıyorsanız Kendi verilerinizden, rastgele sayılardan oluşan bir veri kümesi oluşturmayı deneyin ve sorununuzu gösterin. Ne denediğini bize göster. Bize iyi bir imanın işareti olmanın yanı sıra çalışacak bir şey verir. –

+0

Oh. Özür dilerim - Birkaç rakam yapacağım. Oldukça büyük olabilir. – shirleywu

+0

Bu, veri oluşturmanızda yardımcı olabilir. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

cevap

5

Geçmişte sık rqss ile mücadele ve benim konuların hemen hemen her zaman noktalarının sipariş ile ilgili edilmiştir.

Farklı zaman noktalarında birden fazla ölçümünüz var, bu yüzden farklı uzunluklara sahip oluyorsunuz. Bu benim için çalışıyor:

dat <- read.csv("~/Downloads/Test.csv") 

library(quantreg) 
dat <- plyr::arrange(dat,Time) 
fit<-rqss(Concentration~qss(Time,constraint="N"),tau=0.5,data = dat) 
with(dat,plot(Time,Concentration)) 
lines(unique(dat$Time)[-1],fit$coef[1] + fit$coef[-1]) 

enter image description here

öncesinde modeli gerekli görünmektedir uydurma veri çerçevesini sıralama. Ben @EDi o bu örnek dayalı

Eğer ggplot2 grafiği istediğiniz durumda

+0

Bu çalışır! Çok teşekkür ederim. Siparişin bir sorun olabileceğini bilmiyordum. – shirleywu

8

Belki de spline ve quantile regresyon düzleştirme için quantreg ::: rqss bir göz atın. o kadar güzel bir örnek verileri için üzgünüm :

set.seed(1234) 
period <- 100 
x <- 1:100 
y <- sin(2*pi*x/period) + runif(length(x),-1,1) 


require(quantreg) 
mod <- rqss(y ~ qss(x)) 
mod2 <- rqss(y ~ qss(x), tau=0.75) 
mod3 <- rqss(y ~ qss(x), tau=0.25) 
plot(x, y) 
lines(x[-1], mod$coef[1] + mod$coef[-1], col = 'red') 
lines(x[-1], mod2$coef[1] + mod2$coef[-1], col = 'green') 
lines(x[-1], mod3$coef[1] + mod3$coef[-1], col = 'green') 

enter image description here

+0

+ 1'i rqss() 'için - parametrik olmayanı gerekli ise ve örnek resim spline tabanlı bir uyum olduğunu düşündürüyorsa rqss() 'kesinlikle bakacağım ilk yer. –

+1

Örneğinizle çok güzel çalışıyor, ancak emin değilim, çünkü şunu kontrol ediyorum: xy.coords (x, y) hatası: 'x' ve 'y' uzunlukları farketmez ' benim x ve y aynı n var. Hata ayıklama üzerinde hala çalışıyor: P – shirleywu

+1

Verilerinizi biraz daha kullanabilir misiniz? Yukarıdaki örnek verileriniz açıkça uygun değil. – EDi

2

.... x ve y'u arttırdım, böylece nicelik çizgileri daha az belirsiz olur. Bu artış nedeniyle, bazı aramalarda x yerine unique(x) kullanmam gerekiyor.İşte

set.seed(1234) 
period <- 100 
x <- rep(1:100,each=100) 
y <- 1*sin(2*pi*x/period) + runif(length(x),-1,1) 


require(quantreg) 
mod <- rqss(y ~ qss(x)) 
mod2 <- rqss(y ~ qss(x), tau=0.75) 
mod3 <- rqss(y ~ qss(x), tau=0.25) 

iki parsel şunlardır: Burada

modifiye kurmaca

# @EDi's base graphics example 
plot(x, y) 
lines(unique(x)[-1], mod$coef[1] + mod$coef[-1], col = 'red') 
lines(unique(x)[-1], mod2$coef[1] + mod2$coef[-1], col = 'green') 
lines(unique(x)[-1], mod3$coef[1] + mod3$coef[-1], col = 'green') 

enter image description here

# @swihart's ggplot2 example: 
## get into dataset so that ggplot2 can have some fun: 
qrdf <- data.table(x  = unique(x)[-1], 
        median = mod$coef[1] + mod$coef[-1], 
        qupp = mod2$coef[1] + mod2$coef[-1], 
        qlow = mod3$coef[1] + mod3$coef[-1] 
) 

line_size = 2 
ggplot() + 
    geom_point(aes(x=x, y=y), 
      color="black", alpha=0.5) + 
    ## quantiles: 
    geom_line(data=qrdf,aes(x=x, y=median), 
      color="red", alpha=0.7, size=line_size) + 
    geom_line(data=qrdf,aes(x=x, y=qupp), 
      color="blue", alpha=0.7, size=line_size, lty=1) + 
    geom_line(data=qrdf,aes(x=x, y=qlow), 
      color="blue", alpha=0.7, size=line_size, lty=1) 

enter image description here