标签: predict

黄土线没有正确绘图

我无法在一个残差的散点图上拟合黄土平滑加信心限制.

我的模型是身高〜体重+胸围.为了检查胸围的线性,我拟合了一个没有胸围的模型(即身高〜体重),并绘制了该模型对胸围的残差.到现在为止还挺好.然后我尝试使用loess()predict()绘制黄土线,加上置信限制.结果看起来像这样(在图片中我只绘制了中心线,但CI线看起来相同):

散点图中的黄土问题

这些点是正确的(当我将黄土拟合为它看起来正确的点时),但由于某种原因,线条没有被绘制出我的预期.我的代码如下:

# bf.red = data set; mod.nch = model; chestc = chest circumference;
# loess = loess model; lo.pred = predict loess

plot(bf.red$chestc           #Chest circumference
 ,residuals(mod.nch))    #Residuals from height ~ weight model

loess <- loess(mod.nch$residuals ~ bf.red$chestc)
lo.pred <- predict(loess, se=T)

lines(bf.red$chestc,lo.pred$fit,pch=2) #Main line
lines(bf.red$chestc,lo.pred$fit+2*lo.pred$s, lty=2) #rough & ready CI
lines(bf.red$chestc,lo.pred$fit-2*lo.pred$s, lty=2)
Run Code Online (Sandbox Code Playgroud)

希望你能帮忙.非常感谢,

plot r line predict loess

5
推荐指数
1
解决办法
3766
查看次数

使用Arima模型预测值不在序列结束之前的时段

我正在使用外部回归器生成Arima模型.我们假设我有n个观察结果.包中的predict.Arima函数forecast只是对n + 1观察进行预测.

我需要预测n值(系列的最后一个值),改变外部回归量的值,即,我需要在给定外部回归量的特定值的情况下预测n观察值.

library(forecast)
set.seed(123)
aux <- 1:24
covari <- aux + rnorm(24,0,2)
vari <- ts(aux * runif(24,0,3), start=c(2010,1), freq=12)

mod <- auto.arima(vari, xreg=covari)

predict(mod, newxreg=20)
Run Code Online (Sandbox Code Playgroud)

此代码生成模型,并显示如何生成预测.我可以控制提前设置参数的周期数n.ahead.

predict(mod, newxreg=runif(4,15,25), n.ahead=4)
Run Code Online (Sandbox Code Playgroud)

此代码将为该系列的下4个值生成预测.

我需要的是一个n.ahead=-1,即系列内部值的预测,但具有不同的外部回归量.

如果我只使用一个外部回归量,则任务并不复杂,因为因为是一个加性模型,我可以将观察到的xreg值的差值加上我想要的值乘以xreg的系数.然而,如果外部回归量的数量增加,则会变得更加复杂.

有没有办法预测不在Arima模型系列末尾的价值?

r predict forecasting

5
推荐指数
1
解决办法
9417
查看次数

使用lm并预测矩阵中的数据

R只使用了一点点而从不使用数据帧,这使得理解正确使用预测变得困难.我有我的纯矩阵数据,没有数据帧,叫他们ab,这是N x pM x p分别为矩阵.我可以运行回归lm(a[,1] ~ a[,-1]).我想用生成的lm对象预测b[,1]b[,-1].我天真的猜测predict(lm(a[,1] ~ a[,-1]), b[,-1])不起作用.使用它lm来获得预测向量的正确语法是什么?

r predict dataframe lm

5
推荐指数
1
解决办法
1万
查看次数

使用 kernlab 包错误预测 .local(object, ...) 中的错误:测试向量与模型 R 不匹配

我正在测试kernlab回归问题中的包。'Error in .local(object, ...) : test vector does not match model !ksvm对象传递给predict函数时,这似乎是一个常见的问题。但是,我刚刚找到了不适用于我的问题的分类问题或自定义内核的答案(我使用内置的进行回归)。我在这里没有想法了,我的示例代码是:

data <- matrix(rnorm(200*10),200,10)
tr <- data[1:150,]
ts <- data[151:200,]

mod <- ksvm(x = tr[,-1],
            y = tr[,1],
            kernel = "rbfdot", type = 'nu-svr',
            kpar = "automatic", C = 60, cross = 3)

pred <- predict(mod, 
                ts
                )
Run Code Online (Sandbox Code Playgroud)

r predict kernlab

5
推荐指数
1
解决办法
7576
查看次数

使用线性回归对data.table进行预测

重新发布到这篇文章,我创建了一个在data.table包上进行线性回归的例子,如下所示:

## rm(list=ls()) # anti-social
library(data.table)
set.seed(1011)
DT = data.table(group=c("b","b","b","a","a","a"),
                v1=rnorm(6),v2=rnorm(6), y=rnorm(6))
setkey(DT, group)
ans <- DT[,as.list(coef(lm(y~v1+v2))), by = group]
Run Code Online (Sandbox Code Playgroud)

返回,

   group (Intercept)        v1        v2
1:     a    1.374942 -2.151953 -1.355995
2:     b   -2.292529  3.029726 -9.894993
Run Code Online (Sandbox Code Playgroud)

我能够获得lm函数的系数.

我的问题是: 我们如何直接用于predict新的观察?如果我们有新的观察结果如下:

new <- data.table(group=c("b","b","b","a","a","a"),v1=rnorm(6),v2=rnorm(6))
Run Code Online (Sandbox Code Playgroud)

我试过了:

setkey(new, group)
DT[,predict(lm(y~v1+v2), new), by = group]
Run Code Online (Sandbox Code Playgroud)

但它给我带来了奇怪的答案:

    group         V1
 1:     a  -2.525502
 2:     a   3.319445
 3:     a   4.340253
 4:     a   3.512047
 5:     a   2.928245
 6:     a   1.368679 …
Run Code Online (Sandbox Code Playgroud)

r predict lm data.table

5
推荐指数
1
解决办法
2499
查看次数

在混合模型上使用lme4预测功能时遇到问题

我在尝试在混合模型上使用lme4预测函数时遇到了一些困难。进行预测时,我希望能够将我的一些解释变量设置为指定水平,但取其他平均值。

以下是一些组成的数据,它们是我原始数据集的简化的废话版本:

a <-  data.frame(
    TLR4=factor(rep(1:3, each=4, times=4)), 
    repro.state=factor(rep(c("a","j"),each=6,times=8)), 
    month=factor(rep(1:2,each=8,times=6)), 
    sex=factor(rep(1:2, each=4, times=12)), 
    year=factor(rep(1:3, each =32)), 
    mwalkeri=(sample(0:15, 96, replace=TRUE)), 
    AvM=(seq(1:96))
)
Run Code Online (Sandbox Code Playgroud)

AvM号是水田鼠识别号。响应变量(mwalkeri)是每个田鼠跳蚤数量的计数。我感兴趣的主要解释变量是Tlr4,它是具有3个不同基因型(编码为1、2和3)的基因。其他解释变量包括生殖状态(成人或青少年),月份(1或2),性别(1或2)和年份(1、2或3)。我的模型看起来像这样(当然,此模型现在不适用于组成的数据,但这没关系):

install.packages("lme4")
library(lme4)
mm <- glmer(mwalkeri~TLR4+repro.state+month+sex+year+(1|AvM), data=a, 
    family=poisson,control=glmerControl(optimizer="bobyqa"))`
summary(mm)
Run Code Online (Sandbox Code Playgroud)

我想对每种不同的Tlr4基因型的寄生虫负担做出预测,同时考虑所有其他协变量。为此,我创建了一个新的数据集以指定要设置每个解释变量的级别,并使用了预测函数:

b <-  data.frame(
    TLR4=factor(1:3), 
    repro.state=factor(c("a","a","a")),
    month=factor(rep(1, times=3)), 
    sex=factor(rep(1, times=3)), 
    year=factor(rep(1, times=3))
)
predict(mm, newdata=b, re.form=NA, type="response")
Run Code Online (Sandbox Code Playgroud)

这确实奏效,但我真的更希望将多年平均,而不是将年份设置为一个特定水平。但是,每当我尝试平均年份时,都会收到以下错误消息:

model.frame.default(delete.response(Terms),newdata,na.action = na.action,中的错误:因子年份具有新水平

我是否可以跨多年取平均值而不是选择指定的水平?另外,我还没有弄清楚如何获得与这些预测相关的标准误差。我能够获得用于预测的标准错误的唯一方法是使用lsmeans()函数(来自lsmeans包):

c <- lsmeans(mm, "TLR4", type="response")
summary(c, type="response")
Run Code Online (Sandbox Code Playgroud)

自动生成标准错误。但是,这是通过对所有其他解释变量求平均值而生成的。我敢肯定有可能更改它,但我会尽可能使用该predict()功能。我的目标是创建一个在X轴上具有Tlr4基因型,在y轴上具有预测的寄生虫负担的图表,以证明每种基因型在寄生虫负担方面的预测差异,同时考虑了所有其他重要的协变量。

r predict lme4

5
推荐指数
1
解决办法
1694
查看次数

sklearn LinearRegression.Predict()问题

我试图根据各种其他因素预测呼叫中心的呼叫量.我有一个相当干净的数据集,相当小,但足够了.我能够训练和测试历史数据并获得分数,摘要等.我为我的生活无法弄清楚如何使用预测因子数据来预测未来的呼叫.我的数据如下:

Date    DayNum  factor1 factor2 factor3 factor4 factor5 factor6 factor7 factor8 factor9 VariableToPredict
9/17/2014   1   592 83686.46    0   0   250 15911.8 832 99598.26    177514  72
9/18/2014   2   1044    79030.09    0   0   203 23880.55    1238    102910.64   205064  274
9/19/2014   3   707 84207.27    0   0   180 8143.32 877 92350.59    156360  254
9/20/2014   4   707 97577.78    0   0   194 16688.95    891 114266.73   196526  208
9/21/2014   5   565 83084.57    0   0   153 13097.04    713 96181.61    143678  270
Run Code Online (Sandbox Code Playgroud)

我到目前为止的代码如下:

from sklearn import metrics
from sklearn.preprocessing …
Run Code Online (Sandbox Code Playgroud)

python linear-regression predict scikit-learn

5
推荐指数
1
解决办法
9145
查看次数

如何使用预测计算 R 中预测数据的标准误差

这是我的数据:

a <- c(60, 65, 70, 75, 80, 85, 90, 95, 100, 105)
b <- c(26, 24.7, 20, 16.1, 12.6, 10.6, 9.2, 7.6, 6.9, 6.9)
a_b <- cbind(a,b)

plot(a,b, col = "purple")
abline(lm(b ~ a),col="red")
reg <- lm(b ~ a)
Run Code Online (Sandbox Code Playgroud)

我想使用 predict 函数来计算 110 处预测 b 值的标准误差。

z <- predict(reg, newdata=data.frame(year=110), se.fit=TRUE)
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出,但我认为这只是给了我 10 个时间点的标准误差,而不是新的第 11 个数据点:

 z
 $fit
   1         2         3         4         5         6         7         8         9        10 
 24.456364 22.146061 19.835758 17.525455 15.215152 12.904848 10.594545   8.284242  5.973939  3.663636 

 $se.fit …
Run Code Online (Sandbox Code Playgroud)

standards r predict

5
推荐指数
1
解决办法
7755
查看次数

将降采样后的预测概率转换为分类中的实际概率(使用mlr)

如果在发生不平衡二进制目标变量的情况下使用欠采样来训练模型,则预测方法会在假设平衡数据集的情况下计算概率。对于不平衡的数据,如何将这些概率转换为实际概率?转换参数/函数是在mlr软件包中还是在另一个软件包中实现的?例如:

a <- data.frame(y=factor(sample(0:1, prob = c(0.1,0.9), replace=T, size=100)))
a$x <- as.numeric(a$y)+rnorm(n=100, sd=1)
task <- makeClassifTask(data=a, target="y", positive="0")
learner <- makeLearner("classif.binomial", predict.type="prob")
learner <- makeUndersampleWrapper(learner, usw.rate = 0.1, usw.cl = "1")
model <- train(learner, task, subset = 1:50)
pred <- predict(model, task, subset = 51:100)
head(pred$data)
Run Code Online (Sandbox Code Playgroud)

r classification predict mlr

5
推荐指数
1
解决办法
2097
查看次数

R预测警告

正在做:
predictions <- predict(lm.sqrtFlatprices, interval='prediction', level = 0.68) ^ 2

我得到:
predictions on current data refer to _future_ responses

为什么会出现此警告,我该如何加以抑制?

r predict

5
推荐指数
1
解决办法
1278
查看次数