标签: predict

lm预测不会预测

我有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 prediction linear-regression predict lm

6
推荐指数
1
解决办法
4194
查看次数

R - 预测命令错误“选择了未定义的列”

我是 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)

r predict

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

Java,Weka:如何预测数字属性?

我试图使用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没有这个任务的工具的情况下寻找什么算法?

java numeric predict weka

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

glmer - 用二项式数据预测(cbind计数数据)

我试图预测在我的二项式数据上运行的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)

r predict lme4 glm

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

R中glm逻辑回归模型的确定阈值

我有一些预测变量和二进制目标的数据.例如:

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'类.这是正确的假设吗?即使每个阶级的人口可能不相等(或接近相等)?或者有没有办法估算这个门槛?

r predict glm logistic-regression

6
推荐指数
2
解决办法
2万
查看次数

并行预测

我试图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机器,如果这是唯一的选择.

parallel-processing r predict

6
推荐指数
1
解决办法
1245
查看次数

如何预测随机和固定效应模型?

我最近刚做从STATA于R的改变,并有一些麻烦实施将R等价的命令,STATA xtlogit,fe or repredict.我可以请求一些帮助来调整以下场景:

  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 generic-function predict glm

6
推荐指数
1
解决办法
2086
查看次数

predict.glm(,type ="terms")实际上做了什么?

我对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)

然后乘以它应该看起来的系数 …

regression r predict lm glm

6
推荐指数
1
解决办法
2712
查看次数

具有lm的线性模型:如何获取预测值总和的预测方差

我正在对具有多个预测变量的线性模型的预测值求和,如下面的示例所示,并希望计算该总和的组合方差,标准误差和可能的置信区间。

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

这里有类似的问题(针对GAM),但我不确定如何继续进行vcov(lm.trees)。我希望为该方法提供参考。

regression r linear-regression predict lm

6
推荐指数
1
解决办法
2302
查看次数

特征的名称和顺序对预测算法重要吗

我的 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 以使它们正确排列吗?

python predict data-fitting

6
推荐指数
1
解决办法
3606
查看次数