我正在对数据集进行 tobit 分析,其中因变量(我们称之为 y)被截尾为 0。所以这就是我所做的:
library(AER)
fit <- tobit(data=mydata,formula=y ~ a + b + c)
Run Code Online (Sandbox Code Playgroud)
这可以。现在我想运行“预测”函数来获取拟合值。理想情况下,我对未观察到的潜在变量“y*”和观察到的删失变量“y”的预测值感兴趣[参见参考文献1]。
我检查了 Predict.survreg [参考文献 2] 的文档,我认为我不明白哪个选项为我提供了预测的删失变量(或潜在变量)。
我在网上找到的大多数例子都给出了以下建议:
predict(fit,type="response").
Run Code Online (Sandbox Code Playgroud)
同样,尚不清楚这些是什么类型的预测。
我的猜测是,预测函数中的“type”选项是这里的关键,其中 type="response" 意味着审查变量预测, type="linear" 意味着潜在变量预测。
这里有一些经验的人可以为我提供一些启发吗?
非常感谢!
参考:
更新:我正在使用e1071包for naiveBayes
我是R的新手并试图围绕玩具数据建立Naive Bayes模型.然后我试着在那个模型上叫"predcit".我看到的问题是:"predict()"的结果长度为零.请参阅简单的R repro代码.感谢您的投入!
df<-NULL
df <- rbind(df, c(0,3))
df <- rbind(df, c(1,1))
df <- rbind(df, c(1,3))
model <- naiveBayes(df[,2], df[,1])
prediction <- predict(model, df[,-1])
length(prediction)
## [1] 0
Run Code Online (Sandbox Code Playgroud) 我分割Train数据集和Test数据集.
我rpart在R(仅列车组)中使用了CART(分类树)包.我想使用该ROCR软件包进行ROC分析.
变量是`n.使用'(响应变量... 1 =是,0 =否):
> Pred2 = prediction(Pred.cart, Test$n.use)
Error in prediction(Pred.cart, Test$n.use) :
**Format of predictions is invalid.**
Run Code Online (Sandbox Code Playgroud)
这是我的代码.有什么问题?什么是对的type("class"或者"prob"?
library(rpart)
train.cart = rpart(n.use~., data=Train, method="class")
Pred.cart = predict(train.cart, newdata = Test, type = "class")
Pred2 = prediction(Pred.cart, Test$n.use)
roc.cart = performance(Pred2, "tpr", "fpr")
Run Code Online (Sandbox Code Playgroud) 我需要使用创建动态预测
v(t) = b0 + b1*v(t-1) + b2*v(t-2) + b3*x(t-1) + b4*x(t-2)
Run Code Online (Sandbox Code Playgroud)
数据集在时间0处看起来像这样.在实际数据中,有80个不同的x和100K"日期".
date v vLag1 vLag2 x xLag1 xLag2 b1 b2 b3 b4
2016-06-30 NA 105 95 33 11 23 0.2 3.2 -1.2 0.4
2016-07-01 NA NA NA 43 33 11 0.2 3.2 -1.2 0.4
2016-07-02 NA NA NA 52 43 33 0.2 3.2 -1.2 0.4
Run Code Online (Sandbox Code Playgroud)
目标是预测v,用值替换所有NA.我创建了vLag1,vLag2,xLag1,xLag2,这样我就可以 在一行中计算v.
所有的x和b都是提前知道的,所以我创建了上面显示的滞后x.该b的是系数.
对于每个日期,V(t)的被预测,并且该预测V(t)的的将反馈到下一个日期的v …
我为数据框中的每个组计算了不同的回归:
DF.L <- DF %>%
group_by(Channel) %>%
do(Fit = rlm(L ~ -1 + Y + I(Y^2), data = .))
Run Code Online (Sandbox Code Playgroud)
我想将这套回归应用于另一个数据框。为此,我正在测试如何将其应用于相同的数据框:
DF %>%
group_by(Channel) %>%
do({
Lfit <- predict(subset(DF.L, Channel == unique(.$Channel))$Fit, .)
data.frame(., Lfit)
})
glimpse(DF)
Run Code Online (Sandbox Code Playgroud)
但我不断收到此错误:
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "list"
Calls: %>% ... do_.grouped_df -> eval -> eval -> predict -> predict
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
除了预测类标签之外,在预测时是否可以返回新数据中每个观察的期望?
library(caret)
knnFit <- train(Species ~ ., data = iris, method = "knn",
trControl = trainControl(method = "cv", classProbs = TRUE))
x <- predict(knnFit, newdata = iris)
Run Code Online (Sandbox Code Playgroud)
返回预测类别的向量。
str(x)
Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Run Code Online (Sandbox Code Playgroud)
如果我想要概率:
x <- predict(knnFit, newdata = iris, type = "prob")
> head(x)
setosa versicolor virginica
1 1 0 0
2 1 0 0
3 1 0 0
4 1 0 0
5 1 0 0 …Run Code Online (Sandbox Code Playgroud) 如何获得具有 fpr 和 tpr 的 AUC 值?Fpr 和 tpr 只是从这些公式中获得的 2 个浮点数:
my_fpr = fp / (fp + tn)
my_tpr = tp / (tp + fn)
my_roc_auc = auc(my_fpr, my_tpr)
Run Code Online (Sandbox Code Playgroud)
我知道这是不可能的,因为 fpr 和 tpr 只是一些浮点数,它们需要是数组,但我不知道如何做到这一点。我也知道我可以这样计算 AUC:
y_predict_proba = model.predict_proba(X_test)
probabilities = np.array(y_predict_proba)[:, 1]
fpr, tpr, _ = roc_curve(y_test, probabilities)
roc_auc = auc(fpr, tpr)
Run Code Online (Sandbox Code Playgroud)
但出于某些原因,我想避免使用 predict_proba。所以我的问题是:我怎样才能获得 AUC fp, tp, fn, tn, fpr, tpr?换句话说,是否有可能在没有 的情况下获得 AUC roc_curve?
嗨,我刚刚开始使用 R 作为学校模块的一部分。我有一个包含缺失数据的数据集,并且我使用了 mouse() 来估算缺失的数据。我现在正在尝试将 predict 函数与我的合并结果一起使用。但是,我观察到以下错误:
UseMethod("predict") 中的错误:没有适用于应用于类“c('mipo','data.frame')”的对象的“预测”方法
我在下面包含了我的整个代码,如果你们都能帮助新手,我会非常感谢它。谢谢!
```{r}
library(magrittr)
library(dplyr)
train = read.csv("Train_Data.csv", na.strings=c("","NA"))
test = read.csv("Test_Data.csv", na.strings=c("","NA"))
cols <- c("naCardiac", "naFoodNutrition", "naGenitourinary", "naGastrointestinal", "naMusculoskeletal", "naNeurological", "naPeripheralVascular", "naPain", "naRespiratory", "naSkin")
train %<>%
mutate_each_(funs(factor(.)),cols)
test %<>%
mutate_each_(funs(factor(.)),cols)
str(train)
str(test)
```
```{r}
library(mice)
md.pattern(train)
```
```{r}
miTrain = mice(train, m = 5, maxit = 50, meth = "pmm")
```
```{r}
model = with(miTrain, lm(LOS ~ Age + Gender + Race + Temperature + RespirationRate + HeartRate + SystolicBP + …Run Code Online (Sandbox Code Playgroud) 我正在研究gam具有随机效应的预测模型,以通过plot_ly.
这是我的代码;
x <- runif(100)
y <- runif(100)
z <- x^2 + y + rnorm(100)
r <- rep(1,times=100) # random effect
r[51:100] <- 2 # replace 1 into 2, making two groups
df <- data.frame(x, y, z, r)
gam_fit <- gam(z ~ s(x) + s(y) + s(r,bs="re"), data = df) # fit
#create matrix data for `add_surface` function in `plot_ly`
newx <- seq(0, 1, len=20)
newy <- seq(0, 1, len=30)
newxy <- expand.grid(x = newx, y …Run Code Online (Sandbox Code Playgroud) 我正在使用 glmnet-package 中的 LASSO 来创建预测。此外,我使用 cv.glmnet-function 进行 5 倍交叉验证来创建 Lasso.fit。然后,根据经验法则 s = "lambda.1se",该 glmnet-object 将在预测函数中使用。
x <- scale(x)
x_test <- scale(x_test)
lasso.fit <- cv.glmnet(x,y, nfolds = 5, alpha=1,
intercept =TRUE, standardize =TRUE, type.measure="mae")
lasso_pred <- predict(lasso.fit, x_test, s ="lambda.1se")
Run Code Online (Sandbox Code Playgroud)
但是,运行此模型时我收到以下警告:
Warning:
from glmnet Fortran code (error code -79);
Convergence for 79th lambda value not reached after maxit=100000 iterations;
solutions for larger lambdas returned
Run Code Online (Sandbox Code Playgroud)
这个警告是什么意思?
此外,我应该认真对待这个警告,即更改 cv.glmnet-function 的某些内容吗?
或者在使用惩罚方法创建预测时我不应该担心这一点?