有一些小故障的位置:
- 你沒有給我們一個重複的例子:例如見http://tinyurl.com/reproducible-000 ...
- 你可能想
read.csv
而不是read.table
- 我不知道是什麼
quartz=(title...)
在做什麼。也許quartz(title=...)
?在任何情況下,使用plot()
應該使用attach
往往是一個壞主意
- 使用
lines
,而不是curve
添加一個新的(例如)預測的數據設置爲一個情節自動打開一個新的圖形窗口
- 。對於線性迴歸的具體情況(見下一點),您可以使用
abline
。
- 迄今爲止最重要的是:你在做什麼這裏不 logistic迴歸 - 它使用
glm
,以適應普通線性模型(最小二乘迴歸),也可通過lm()
更容易實現。邏輯迴歸將使用family=binomial
而不是family=gaussian
。此外,logistic迴歸是用於二元響應變量,所以它不可能適合中央奧克蘭的人口造型......我懷疑你是在混淆一個邏輯迴歸和後勤增長曲線 ...
下面是一些修改代碼:
dat <- read.csv("/Path/PopulationGrowth.csv")
with(dat,plot(Year,CentralOakland,xlab="Year",ylab="Population",
main="Central Oakland Population vs. Year"))
g <- lm(CentralOakland~Year,data=dat)
abline(g)
## OR
yearvec <- seq(min(Year),max(Year),length=51)
lines(yearvec,predict(g,newdata=data.frame(Year=yearvec),type="response"))
在另一方面,也許這是你真正想做的事(你沒有給我們的數據,所以我去了維基百科,得到了一些... )
## from http://en.wikipedia.org/wiki/Oakland,_California
dat <- structure(list(year = c(1860L, 1870L, 1880L, 1890L, 1900L, 1910L,
1920L, 1930L, 1940L, 1950L, 1960L, 1970L, 1980L, 1990L, 2000L,
2010L), pop = c(1543L, 10500L, 34555L, 48682L, 66960L, 150174L,
216261L, 284063L, 302163L, 384575L, 367548L, 361561L, 339337L,
372242L, 399484L, 390724L)), .Names = c("year", "pop"),
class = "data.frame", row.names = c(NA,-16L))
配件:
## SSlogis() is a "self-starting" logistic
m1 <- nls(pop~SSlogis(year,asym,xmid,scal),
data=dat)
繪圖:
par(las=1,bty="l",mar=c(5,6,2,2)+0.1) ## graphics tweaks
with(dat,plot(pop~year,ylab=""))
## add y-label separately
mtext("population",side=2,las=0,line=4)
yearvec <- 1860:2010
lines(yearvec,predict(m1,newdata=data.frame(year=yearvec)))
應該不是你的迴歸公式是'CentralOakland〜Year'(與變量來預測左側) ? –
謝謝,我沒有意識到這一點。 – H3lue