.csv 데이터에서 근사 곡선을 유도합니다.

9914 단어 R

일의 발단



리모트 수업은 편합니다만, 과제가 많다. 그러니까 별로 하나의 과제에 시간을 들이고 싶지 않아요.

대학의 과제 「인구동태의 수리 모델을 만들 수 있다(수식으로 나타내라)」
나 「귀찮아.....유케, R!」

...라는 느낌으로 R을 사용하여 인구 동태의 근사 곡선을 도출해 보았습니다. 매우 간단합니다.

환경



macOS Catalina 10.15.4
R Studio (Version 1.2.5042)

아, 그리고, tidyverse를 사용하므로 넣어 주세요.

준비한 데이터



나고야시의 월별 인구 동태를 취급합니다. 고맙게도 나고야시의 인구동태는 .csv에서 다운로드할 수 있습니다. 했어!
뭐, 다운로드해 보면 여러가지 데이터가 포함되어 있으므로, 시의 인구의 데이터만을 추출해, 아래와 같이 새로운 .csv를 만듭니다. n은 2012년 1월 이후의 월 수입니다.

이 .csv를 사용합니다.

시도에 그래프로 사용



make_graph.r
library(tidyverse)

filename <- file.choose()    
data <- read.csv(filename,header=T)

graph = ggplot(data, aes(x=n, y=Population)) + geom_line(col="black") + labs(title="Population of Nagoya City")

plot(graph)

움직일 때는 R Studio의 Source를 클릭하고 거기에서 .csv를 선택하십시오.

이런 식으로 그래프를 할 수 있습니다.


근사 곡선을 내려 봅니다.



자, 본제입니다. 아까의 그래프로부터, 「뭐, 3차 함수로 해 두면 좋은 느낌이 될까」라고 생각했으므로, 3차 곡선으로 근사해 갑니다.

approximateline.r
library(tidyverse)

filename <- file.choose()    
data <- read.csv(filename,header=T)

graph = ggplot(data, aes(x=n, y=Population)) + geom_line(col="black") + labs(title="Population of Nagoya City")

x = data[,1]
y = data[,2]

approximated = nls(y ~ a * x^3 + b * x^2 + c * x + d, start=c(a=0, b=0, c=0, d=0))
summary(approximated)

predict.c = predict(approximated)
approximate = data.frame(predict.c)
approximate$num = data[,1]

coef = coefficients(approximated)

approximateline = geom_line(aes(approximate$num, approximate$predict.c), col="red")
plot(graph + approximateline)

print(coef[1])
print(coef[2])
print(coef[3])
print(coef[4])


콘솔에는 아래와 같이 계수(a, b, c, d의 값)가 출력됩니다.

쉬웠어요.

좋은 웹페이지 즐겨찾기