2012-07-19 47 views
5

Nếu tôi có một tập hợp các điểm trong R được tuyến tính tôi có thể làm như sau để vẽ các điểm, phù hợp với một dòng họ, sau đó hiển thị dòng:Lắp đường cong logarit trong R

x=c(61,610,1037,2074,3050,4087,5002,6100,7015) 
y=c(0.401244, 0.844381, 1.18922, 1.93864, 2.76673, 3.52449, 4.21855, 5.04368, 5.80071) 

plot(x,y)  
Estimate = lm(y ~ x)  
abline(Estimate) 

Bây giờ, nếu tôi có một tập hợp các điểm trông giống như một đường cong phù hợp logarit là thích hợp hơn như sau:

x=c(61,610,1037,2074,3050,4087,5002,6100,7015)   
y=c(0.974206,1.16716,1.19879,1.28192,1.30739,1.32019,1.35494,1.36941,1.37505) 

tôi biết tôi có thể nhận được phù hợp hồi quy chuẩn chống lại các bản ghi của các giá trị x như sau:

logEstimate = lm(y ~ log(x)) 

Nhưng sau đó làm cách nào để chuyển đổi logEstimate đó trở lại tỷ lệ bình thường và vẽ đường cong với đường cong tuyến tính của tôi từ trước đó?

Trả lời

10

Hmmm, tôi không hoàn toàn chắc chắn ý của bạn là gì "vẽ đường cong với đường cong tuyến tính của tôi từ trước".

d <- data.frame(x,y) ## need to use data in a data.frame for predict() 
logEstimate <- lm(y~log(x),data=d) 

Dưới đây là ba cách để có được giá trị dự đoán:

(1) Sử dụng predict:

plot(x,y) 
xvec <- seq(0,7000,length=101) 
logpred <- predict(logEstimate,newdata=data.frame(x=xvec)) 
lines(xvec,logpred) 

(2) Giải nén các giá trị hệ số số:

coef(logEstimate) 
## (Intercept)  log(x) 
## 0.6183839 0.0856404 
curve(0.61838+0.08564*log(x),add=TRUE,col=2) 

(3) Sử dụng phép thuật with() (bạn cần dấu ngoặc kép xung quanh tên ước tính thông số b) ecause chúng chứa ngoặc)

with(as.list(coef(logEstimate)), 
     curve(`(Intercept)`+`log(x)`*log(x),add=TRUE,col=4)) 

Có lẽ những gì bạn muốn là

est1 <- predict(lm(y~x,data=d),newdata=data.frame(x=xvec)) 
plot(est1,logpred) 

... mặc dù tôi không chắc chắn lý do tại sao ...

+0

Cảm ơn bạn rất nhiều. Cách thứ hai của bạn, với hàm đường cong, là chính xác những gì tôi muốn.Chính xác những gì làm khung dữ liệu làm và những gì dự đoán làm gì? Tôi đã không nhận được nhiều từ những gì các chức năng help() nói với tôi. – user52291

+1

đặt dữ liệu trong một khung dữ liệu làm cho công việc trong tương lai với đối tượng được trang bị (dự đoán, v.v.) đơn giản hơn vì nó giúp cho R dễ dàng định vị các biến đầu vào. dự đoán 'predict định()' ... –

8

Tôi không chắc chắn chính xác những gì bạn có ý nghĩa hoặc ... nhưng tôi đoán có một chút khác biệt. Tôi nghĩ rằng bạn muốn phù hợp với hai mô hình để những điểm, một tuyến tính, và một đăng nhập. Sau đó, bạn muốn vẽ các điểm và hình thức chức năng của cả hai mô hình. Dưới đây là mã cho rằng:

x=c(61,610,1037,2074,3050,4087,5002,6100,7015) 
y=c(0.974206,1.16716,1.19879,1.28192,1.30739,1.32019,1.35494,1.36941,1.37505) 

Estimate = lm(y ~ x) 
logEstimate = lm(y ~ log(x)) 

plot(x,predict(Estimate),type='l',col='blue') 
lines(x,predict(logEstimate),col='red') 
points(x,y) 

enter image description here


Trả lời câu hỏi thứ hai của bạn trong các bình luận, hồi quy tuyến tính không luôn luôn trả về một kết hợp tuyến tính các nhân tố ảnh của bạn, nhưng điều đó không có thiết có nghĩa là nó là một đường thẳng. Hãy suy nghĩ về những gì chuyển đổi log của bạn thực sự có nghĩa là: Nếu bạn phù hợp,

y = log(x) 

đó là giống như phù hợp

exp(y) = x 

Có nghĩa là như x tăng tuyến tính, sau đó y sẽ thay đổi theo cấp số nhân, mà rõ ràng là không phải là 'đường thẳng'. Tuy nhiên, nếu bạn đã biến trục x của bạn trên thang log, thì đường hiển thị sẽ thẳng.

+1

chỉ cần lưu ý rằng nếu bạn muốn có một đường cong lôgarit trơn tru, bạn cần sử dụng dạng dự đoán 'newdata' ... và kết quả sẽ là lạ nếu dữ liệu của bạn không xảy ra tăng thứ tự 'x' ... (nhưng ý tưởng cơ bản là âm thanh) –

+0

Đồng ý. Tôi nghĩ rằng tôi sẽ đi cho sự đơn giản trên chính xác, nhưng bạn là hoàn toàn chính xác. – nograpes

+0

Cảm ơn. Điều này mang lại cho tôi những gì tôi muốn cũng (mặc dù không trơn tru như với các chức năng đường cong). Tôi hơi bối rối vì tôi nghĩ lm luôn luôn trả về một dòng. Điều gì về mã của bạn tạo nên đường cong và không hiển thị đường? – user52291

Các vấn đề liên quan