我对输出产生的系数感到困惑lm
这是我正在使用的数据的副本
(postprocessed.csv)
"","time","value"
"1",1,2.61066016308988
"2",2,3.41246054742996
"3",3,3.8608767964033
"4",4,4.28686048552237
"5",5,4.4923132964825
"6",6,4.50557049744317
"7",7,4.50944447661246
"8",8,4.51097373134893
"9",9,4.48788748823809
"10",10,4.34603985656981
"11",11,4.28677073671406
"12",12,4.20065901625172
"13",13,4.02514194962519
"14",14,3.91360194972916
"15",15,3.85865748409081
"16",16,3.81318053258601
"17",17,3.70380706527433
"18",18,3.61552922363713
"19",19,3.61405310598722
"20",20,3.64591327503384
"21",21,3.70234435835577
"22",22,3.73503970503372
"23",23,3.81003078640584
"24",24,3.88201196162666
"25",25,3.89872518158949
"26",26,3.97432743542362
"27",27,4.2523675144599
"28",28,4.34654855854847
"29",29,4.49276038902684
"30",30,4.67830892029687
"31",31,4.91896819673664
"32",32,5.04350767355202
"33",33,5.09073406942046
"34",34,5.18510849382162
"35",35,5.18353176529036
"36",36,5.2210776270173
"37",37,5.22643491929207
"38",38,5.11137006553725
"39",39,5.01052467981257
"40",40,5.0361056705898
"41",41,5.18149486951409
"42",42,5.36334869132276
"43",43,5.43053620818444
"44",44,5.60001072279525
我使用以下脚本为该数据拟合了一个四阶多项式:
library(ggplot2)
library(matrixStats)
library(forecast)
df_input <- read.csv("postprocessed.csv")
x <- df_input$time
y <- df_input$value
df <- data.frame(x, y)
poly4model <- lm(y~poly(x, degree=4), data=df)
v <- seq(30, 40)
vv <- poly4model$coefficients[1] +
poly4model$coefficients[2] * v +
poly4model$coefficients[3] * (v ^ 2) +
poly4model$coefficients[4] * (v ^ 3) +
poly4model$coefficients[5] * (v ^ 4)
pdf("postprocessed.pdf")
plot(df)
lines(v, vv, col="red", pch=20, lw=3)
dev.off()
我最初尝试使用该predict
函数来执行此操作,但无法使其正常工作,因此使用一些新向量来实现此“解决方法”v
并将vv
数据存储在我尝试绘制的区域中。
最终,我正在尝试这样做:
- 将四阶多项式拟合到数据
- 以一种颜色在数据范围内绘制四阶多项式
- 在从最后一个值到最后一个值 + 10(预测)的范围内以不同的颜色绘制 4 阶多项式
目前我相当确定使用v
并vv
做到这一点不是“最好的方法”,但我认为它应该可以工作。正在发生的事情是我得到了非常大的值。
这是 Desmos 的屏幕截图。我复制并粘贴了相同的系数,如poly4model$coefficients
在控制台中键入所示。但是,一定是出了点问题,因为这个函数与数据完全不同。
我想我已经提供了足够的信息来运行这个简短的脚本。但是我也会添加pdf。