Функция кривой не рисует функцию? - PullRequest
0 голосов
/ 30 ноября 2018

Я не понимаю, почему кривая функции не отображается в моем коде.

данные:

 EVAnnualWorldSales<-structure(list(Country = structure(c(21L, 21L, 21L, 21L, 21L, 
 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L), .Label = c("Australia", 
 "Brazil", "Canada", "Chile", "China", "Finland", "France", "Germany", 
 "India", "Japan", "Korea", "Mexico", "Netherlands", "New Zealand", 
 "Norway", "Others", "Portugal", "South Africa", "Sweden", "Thailand", 
 "Total", "United Kingdom", "United States"), class = "factor"), 
     Year = c(2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 
     2013, 2014, 2015, 2016, 2017), TotalSales = c(1.89, 2.23, 
     2.69, 5.15, 7.48, 14.26, 61.33, 179.03, 381.3, 703.65, 1239.45, 
     1982.04, 3109.05)), row.names = c(NA, -13L), .Names = c("Country", 
 "Year", "TotalSales"), class = "data.frame")

Код (функция cuve выполняет рисование линии):

EVAnnualWorldSales<-EV_temp
EV.ss <- nls(TotalSales ~ SSlogis(Year, phi1, phi2, phi3), data = EVAnnualWorldSales)
summary(EV.ss)
alpha <- coef(EV.ss)  #extracting coefficients
plot(TotalSales ~ Year, data = EVAnnualWorldSales, main = "Logistic Growth Model of EV Sales", 
 xlab = "Year", ylab = "Sales", xlim = c(2004, 2050), ylim = c(0, 11000))  # 
curve(alpha[1]/(1 + exp(-(x - alpha[2])/alpha[3])), add = T, col = "blue")  # Fitted model

enter image description here

B Код (функция cuve здесь не рисует линию):

y <- EVAnnualWorldSales$TotalSales/11000
x_yrs <- EVAnnualWorldSales$Year-2004
    my_model <- nls(y ~ 1/(1+exp(a*x_yrs +b)),start=list(a=-0.5,b=-0.5))
plot(EVAnnualWorldSales$Year,y*11000)
Years<-seq(2005, 2050, 1)-2004
alpha <- coef(my_model)
curve((1/(1+exp(alpha[1]*x +alpha[2])))*11000, add = T, col = "blue") 

enter image description here

Почему кривая работает в кодеблок А, а не блок Б?

1 Ответ

0 голосов
/ 30 ноября 2018

Извините, это было простое решение, просто я его не видел.

Измените код на: plot (x_yrs, y * 11000)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...