我有2个数据帧.一种是训练data(pubs1),另一种是pubs2测试数据.我可以创建一个线性回归对象,但无法创建预测.这不是我第一次这样做,也无法弄清楚出了什么问题.
> head(pubs1 )
id pred37 actual weight diff1 weightDiff1 pred1 pred2 pred3 pred4
1 11 128.3257 128.3990 6.43482732 -0.07333650 -0.4719076922 126.3149 126.1024 126.9057 126.2718
2 31 100.8822 100.9777 3.55520287 -0.09553741 -0.3396548680 100.7820 100.8589 100.9179 100.8903
3 33 100.7204 100.9630 7.46413438 -0.24262409 -1.8109787866 100.8576 100.8434 100.8521 100.8914
4 52 100.8564 100.9350 0.01299138 -0.07855588 -0.0010205495 100.8700 100.8925 100.8344 100.8714
5 56 100.8410 100.9160 0.01299138 -0.07502125 -0.0009746298 100.8695 100.8889 100.8775 100.8871
6 71 100.8889 100.8591 1.19266269 0.02979818 0.0355391800 …Run Code Online (Sandbox Code Playgroud) 我是 R 的新手,我在使用 R 预测命令时遇到了问题。我收到此错误
Error in `[.data.frame`(newdata, , as.character(object$formula[[2]])) :
undefined columns selected
Run Code Online (Sandbox Code Playgroud)
当我执行此命令时:
model.predict <- predict.boosting(model,newdata=test)
Run Code Online (Sandbox Code Playgroud)
这是我的模型:
model <- boosting(Y~x1+x2+x3+x4+x5+x6+x7, data=train)
Run Code Online (Sandbox Code Playgroud)
这是我的测试数据的结构:str(test)
'data.frame': 343 obs. of 7 variables:
$ x1: Factor w/ 4 levels "Americas","Asia_Pac",..: 4 2 4 2 4 3 3 3 4 1 ...
$ x2: Factor w/ 5 levels "Fifth","First",..: 3 3 2 2 4 2 4 4 1 1 ...
$ x3: Factor w/ 3 levels "Best","Better",..: 2 3 1 1 3 2 2 …Run Code Online (Sandbox Code Playgroud) 我试图使用Weka的NaiveBayesUpdateable分类器.我的数据包含名义和数字属性:
@relation cars
@attribute country {FR, UK, ...}
@attribute city {London, Paris, ...}
@attribute car_make {Toyota, BMW, ...}
@attribute price numeric %% car price
@attribute sales numeric %% number of cars sold
Run Code Online (Sandbox Code Playgroud)
我需要根据其他属性预测销售数量(数字!).
据我所知,我不能在Weka中使用数字属性进行贝叶斯分类.一种技术是在长度为k的N个区间中分割数值属性的值,而使用标称属性,其中n是类名,如下所示:@attribute class {1,2,3,... N}.
然而,我需要预测的数字属性范围从0到1 000 000.创建1 000 000个类根本没有任何意义.如何用Weka预测数字属性或者在Weka没有这个任务的工具的情况下寻找什么算法?
我试图预测在我的二项式数据上运行的glmer模型随时间推移的值(x轴中的天数).Total Alive和Total Dead是计数数据.这是我的模型,以及下面的相应步骤.
full.model.dredge<-glmer(cbind(Total.Alive,Total.Dead)~(CO2.Treatment+Lime.Treatment+Day)^3+(Day|Container)+(1|index),
data=Survival.data,family="binomial")
Run Code Online (Sandbox Code Playgroud)
正如您在代码中看到的那样,我们已经考虑了过度离散(1:索引).
然后我们使用dredge命令确定具有主效应的最佳拟合模型(CO2.Treatment,Lime.Treatment,Day)及其相应的相互作用.
dredge.models<-dredge(full.model.dredge,trace=FALSE,rank="AICc")
Run Code Online (Sandbox Code Playgroud)
然后为它们创建了一个工作区变量
my.dredge.models<-get.models(dredge.models)
Run Code Online (Sandbox Code Playgroud)
然后,我们进行了模型平均,以对最佳拟合模型的系数求平均值
silly<-model.avg(my.dredge.models,subset=delta<10)
Run Code Online (Sandbox Code Playgroud)
但是现在我想要创建一个图形,Y轴上的Total Alive和X轴上的Days,以及取决于模型输出的拟合线.我知道这很棘手,因为模型连接了Total.Alive和Total.Dead(参见cbind(Total.Alive,Total.Dead)模型).
当我尝试运行预测命令时,我收到错误
# 9: In UseMethod("predict") :
# no applicable method for 'predict' applied to an object of class "mer"
Run Code Online (Sandbox Code Playgroud) 我有一些预测变量和二进制目标的数据.例如:
df <- data.frame(a=sort(sample(1:100,30)), b= sort(sample(1:100,30)),
target=c(rep(0,11),rep(1,4),rep(0,4),rep(1,11)))
Run Code Online (Sandbox Code Playgroud)
我使用了一个logistic regresion模型 glm()
model1 <- glm(formula= target ~ a + b, data=df, family=binomial)
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试预测输出(例如,相同的数据应该足够)
predict(model1, newdata=df, type="response")
Run Code Online (Sandbox Code Playgroud)
这生成概率数的向量.但我想预测实际的课程.我可以在概率数上使用round(),但这假设低于0.5的任何东西都是'0'类,而上面的任何东西都是'1'类.这是正确的假设吗?即使每个阶级的人口可能不相等(或接近相等)?或者有没有办法估算这个门槛?
我试图predict()在我的Windows机器上并行运行.这适用于较小的数据集,但不能很好地扩展,因为每个进程都会创建新的数据框副本.有没有办法如何并行运行而不制作临时副本?
我的代码(这个原始代码只有少量修改):
library(foreach)
library(doSNOW)
fit <- lm(Employed ~ ., data = longley)
scale <- 100
longley2 <- (longley[rep(seq(nrow(longley)), scale), ])
num_splits <-4
cl <- makeCluster(num_splits)
registerDoSNOW(cl)
split_testing<-sort(rank(1:nrow(longley))%%num_splits)
predictions<-foreach(i= unique(split_testing),
.combine = c, .packages=c("stats")) %dopar% {
predict(fit, newdata=longley2[split_testing == i, ])
}
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)
我正在使用简单的数据复制来测试它.有scale10或1000它正在工作,但我想让它运行scale <- 1000000- 具有16M行的数据帧(1.86GB数据帧,如object_size()from所示pryr.注意,必要时我也可以使用Linux机器,如果这是唯一的选择.
我最近刚做从STATA于R的改变,并有一些麻烦实施将R等价的命令,STATA xtlogit,fe or re和predict.我可以请求一些帮助来调整以下场景:
data <- read.table("http://people.stern.nyu.edu/wgreene/Econometrics/healthcare.csv",header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
require(caret) # for confusionMatrix
#### subset into test & train according to the panel nature (split individuals rather then observations)
nID <- length(unique(data$id))
p = 0.50# partition
inTrain <- sample(unique(data$id), round(nID * p), replace=FALSE)
training <- data[data$id %in% inTrain, ]
testing <- data[!data$id %in% inTrain, ]
pooled <- glm(WORKING~WHITEC+FEMALE+BLUEC+HHNINC+AGE+AGESQ+EDUC+DOCVIS,data=training, family=binomial(link="logit"))
prediction.working= round(predict(pooled,newdata=testing,type="response"))
confusionMatrix(prediction.working,testing$WORKING) # Accuracy between both
Run Code Online (Sandbox Code Playgroud)
另外,我想对随机效果和固定效果做这些程序.所以我首先尝试了随机效果:
library(glmmML)
RE <- glmmML(WORKING~WHITEC+FEMALE+BLUEC+HHNINC+AGE+AGESQ+EDUC+DOCVIS, family=binomial(link="logit"), data=training, cluster=id, method="ghq", …Run Code Online (Sandbox Code Playgroud) 我对R作用中的predict.glm函数的方式感到困惑.根据帮助,
"terms"选项返回一个矩阵,给出模型公式中每个项在线性预测器标度上的拟合值.
因此,如果我的模型的形式为f(y)= X*beta,那么命令
predict(model, X, type='terms')
Run Code Online (Sandbox Code Playgroud)
预期产生相同的矩阵X,乘以β元素.例如,如果我训练以下模型
test.data = data.frame(y = c(0,0,0,1,1,1,1,1,1), x=c(1,2,3,1,2,2,3,3,3))
model = glm(y~(x==1)+(x==2), family = 'binomial', data = test.data)
Run Code Online (Sandbox Code Playgroud)
得到的系数是
beta <- model$coef
Run Code Online (Sandbox Code Playgroud)
设计矩阵是
X <- model.matrix(y~(x==1)+(x==2), data = test.data)
(Intercept) x == 1TRUE x == 2TRUE
1 1 1 0
2 1 0 1
3 1 0 0
4 1 1 0
5 1 0 1
6 1 0 1
7 1 0 0
8 1 0 0
9 1 0 0
Run Code Online (Sandbox Code Playgroud)
然后乘以它应该看起来的系数 …
我正在对具有多个预测变量的线性模型的预测值求和,如下面的示例所示,并希望计算该总和的组合方差,标准误差和可能的置信区间。
lm.tree <- lm(Volume ~ poly(Girth,2), data = trees)
Run Code Online (Sandbox Code Playgroud)
假设我有一组Girths:
newdat <- list(Girth = c(10,12,14,16)
Run Code Online (Sandbox Code Playgroud)
为此,我想预测总数Volume:
pr <- predict(lm.tree, newdat, se.fit = TRUE)
total <- sum(pr$fit)
# [1] 111.512
Run Code Online (Sandbox Code Playgroud)
如何获得方差total?
我的 X_test 数据帧的列的名称/顺序是否必须与我用于拟合的 X_train 相同?
下面是一个例子
我正在训练我的模型:
model.fit(X_train,y)
Run Code Online (Sandbox Code Playgroud)
在哪里X_train=data['var1','var2']
但在预测过程中,当我使用:
model.predict(X_test)
Run Code Online (Sandbox Code Playgroud)
X_test定义为:X_test=data['var1','var3']
其中var3可能是与 完全不同的变量var2。
是否predict假设 与中的第二列var3相同?var2X_test
如果什么:
X_live被定义为:X_live=data['var2','var1']
预测会知道重新排序 X 以使它们正确排列吗?
predict ×10
r ×8
glm ×4
lm ×3
regression ×2
data-fitting ×1
java ×1
lme4 ×1
numeric ×1
prediction ×1
python ×1
weka ×1