2012-04-05 15 views
12

R kullanarak, iki değişken arasındaki doğrusal bir ilişkiyi çizmek istiyorum, ancak takılı olan hattın sadece veri aralığının içinde olmasını istiyorum.Belirli bir aralık içinde verilen çizgi çizdir R

Örneğin, aşağıdaki koda sahip olursam, satırın yalnızca x ve y değerlerinden 1: 10 olmasını isterim (bu satır, varsayılan olarak bu satır veri aralıklarının dışına taşmaktadır). Bunun yerine abline() kullanarak

x <- 1:10 
y <- 1:10 
plot(x,y) 
abline(lm(y~x)) 

cevap

13

, (a) ile donatılmış bir model kaydetmek, (b) ile donatılmış, x = 1 'e tekabül y-değerleri ve X = 10, ve daha sonra (c) için lines() kullanımı bulmak için predict.lm() kullanımı iki nokta arasında bir çizgi ekleyin:

f <- lm(y~x) 
X <- c(1, 10) 
Y <- predict(f, newdata=data.frame(x=X)) 

plot(x,y) 
lines(x=X, y=Y) 
8

Bunu tahmin kullanarak yapabilirsiniz. (? Bakınız tahmin) lines veya predict kullanmanın yanı sıra

Sen x özgü değerler üzerinde tahmin edebilirsiniz

x<-1:10 
y<-1:10 
plot(x,y) 
new <- data.frame(x = seq(1, 5, 0.5)) 
lines(new$x, predict(lm(y~x), new)) 

enter image description here

17

segments ayrıca abline ile clip işlevini kullanabilirsiniz:

x <- 1:10 
y <- 1:10 
plot(x,y) 
clip(1,10, -100, 100) 
abline(lm(y~x)) 
+3

+1, çünkü herhangi bir satırla çalıştığı için, abline(), kesmeksizin kullanılmasını() kullanmadan. Bu şekilde, örneğin, bir arsa kenarına kadar uzanan, ancak sadece bir tarafa, örneğin sağa, sola değil. – pfifas

2

Plotrix l

x <- 1:10 
y <- 1:10 
plot(x,y) 
ablineclip(lm(y~x),x1=1,x2=5) 
0

alternatif segments fonksiyonu (doc here) kullanmaktır: ibrary sadece bunun için ablineclip() işlevi vardır.

Satırı tahmin ettiğinizi ve a ve b eğimine sahip olduğunuzu varsayalım. Bu nedenle, takılı olduğunuz işlev y = a + bx'dur.

Şimdi, x0 ve x1 arasındaki x çizgisini göstermek istediğinizi varsayalım.

# inputs 

a <- 0.5 
b <- 2 

x0 <- 1 
x1 <- 5 

# graph 

plot(c(0,5), c(0,5), type = "n", xlab = "", ylab = "", bty='l') 
segments(x0, a+b*x0, x1, a+b*x1) 

Basitçe senin seçmenin olanlarlaa, b, x0, x1değerlerini değiştirin: Ardından, aşağıdaki kod satırı çizer. sayıların keyfi çifti için bir çizgi çizmek isteyen bu soruya gelenler benim gibi olanlar için


enter image description here

(değil belirli bir gerileme uygun olanlar), aşağıdaki kod ne ihtiyaç vardır :

plot(c(0,5), c(0,5), type = "n", xlab = "", ylab = "", bty='l') 
segments(x0, yo, x1, y1) 

Basitçe senin seçmenin olanlarlax0, y0, x1, y1değerlerini değiştirin.