我无法在一个残差的散点图上拟合黄土平滑加信心限制.
我的模型是身高〜体重+胸围.为了检查胸围的线性,我拟合了一个没有胸围的模型(即身高〜体重),并绘制了该模型对胸围的残差.到现在为止还挺好.然后我尝试使用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)
希望你能帮忙.非常感谢,
垫
我正在使用外部回归器生成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只使用了一点点而从不使用数据帧,这使得理解正确使用预测变得困难.我有我的纯矩阵数据,没有数据帧,叫他们a和b,这是N x p和M x p分别为矩阵.我可以运行回归lm(a[,1] ~ a[,-1]).我想用生成的lm对象预测b[,1]从b[,-1].我天真的猜测predict(lm(a[,1] ~ a[,-1]), b[,-1])不起作用.使用它lm来获得预测向量的正确语法是什么?
我正在测试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) 重新发布到这篇文章,我创建了一个在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) 我在尝试在混合模型上使用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轴上具有预测的寄生虫负担的图表,以证明每种基因型在寄生虫负担方面的预测差异,同时考虑了所有其他重要的协变量。
我试图根据各种其他因素预测呼叫中心的呼叫量.我有一个相当干净的数据集,相当小,但足够了.我能够训练和测试历史数据并获得分数,摘要等.我为我的生活无法弄清楚如何使用预测因子数据来预测未来的呼叫.我的数据如下:
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) 这是我的数据:
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) 如果在发生不平衡二进制目标变量的情况下使用欠采样来训练模型,则预测方法会在假设平衡数据集的情况下计算概率。对于不平衡的数据,如何将这些概率转换为实际概率?转换参数/函数是在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) 正在做:
predictions <- predict(lm.sqrtFlatprices, interval='prediction', level = 0.68) ^ 2
我得到:
predictions on current data refer to _future_ responses
为什么会出现此警告,我该如何加以抑制?
predict ×10
r ×9
lm ×2
data.table ×1
dataframe ×1
forecasting ×1
kernlab ×1
line ×1
lme4 ×1
loess ×1
mlr ×1
plot ×1
python ×1
scikit-learn ×1
standards ×1