原本我以以下形式提供数据
m n
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
使用以下代码将其转换为
input<-file('stdin', 'r')
mn <- read.table(input, nrows = 1, as.is = TRUE)
DF <- read.table(input, skip = 0)
m <- mn[[1]]
n <- mn[[2]]
x1<- DF[[1]]
y1<-DF[[2]]
x2<-DF[[3]]
y2<-DF[[4]]
fit1<-lm(x1 ~ poly(y1, 3, raw=TRUE))
fit2<-lm(x2 ~ poly(y2, 3, raw=TRUE))
`
m =当前数据长度
n =可以预测的未来点数
x1= 1 5 9 13
x2= 2 6 10 14
我想针对给定值之后的n个值预测x1 y1 x2 y2的所有值。
我试图适应lm,但是我不确定如何继续处理将来要预测的所有数据点的值,仅求取其他系数就不够了,因为它们都需要可以预测答案 0 :(得分:0)
为了使它运行起来没有错误,需要在第二个read.table上使用skip = 1:
mn <- read.table(text="m n
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16", nrows = 1, as.is = TRUE)
DF <- read.table(text="m n
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16", skip = 1)
m <- mn[[1]]
n <- mn[[2]]
x1<- DF[[1]]
y1<-DF[[2]]
x2<-DF[[3]]
y2<-DF[[4]]
fit1<-lm(x1 ~ poly(y1, 3, raw=TRUE))
fit2<-lm(x2 ~ poly(y2, 3, raw=TRUE))
因此,这些输入数据是完全共线的,您不会期望以二次方或三次方形式出现任何有用的信息。 lm机器实际上已经承认了这一点:
> fit1
Call:
lm(formula = x1 ~ poly(y1, 3, raw = TRUE))
Coefficients:
(Intercept) poly(y1, 3, raw = TRUE)1 poly(y1, 3, raw = TRUE)2
-1 1 0
poly(y1, 3, raw = TRUE)3
0
通常应该使用data参数
> fit3<-lm(x1 ~ poly(y1, 3, raw=TRUE), DF)
>
> fit4<-lm(x2 ~ poly(y2, 3, raw=TRUE), DF)
但是在这种情况下,这似乎并不重要:
> predict(fit1, newdata = list(y1=20:23))
1 2 3 4
19 20 21 22
> predict(fit3, newdata = list(y1=20:23))
1 2 3 4
19 20 21 22
> predict(fit2, newdata = list(y1=25:28))
1 2 3 4
3 7 11 15
获得预测的方法是提供一个newdata
参数,该参数可以强制进入数据帧。使用具有相同长度的项目(在这种情况下为单个参数)的列表值将成功。