标签: regression

为什么从glmnet模型中获取回归系数的统计汇总信息是不可取的?

我有一个带二元结果的回归模型.我用glmnet拟合了模型并得到了选定的变量及其系数.

由于glmnet不计算变量重要性,我想将精确输出(选定变量及其系数)提供给glm以获取信息(标准错误等).

我搜索了r文件,似乎我可以在glm中使用"method"选项来指定用户定义的函数.但我没有这样做,有人可以帮助我吗?

statistics regression r glm glmnet

17
推荐指数
1
解决办法
8051
查看次数

lme4 :: lmer报告"固定效应模型矩阵排名不足",我需要修复吗?如何?

我正在尝试运行混合效果模型,F2_difference该模型预测其余列作为预测变量,但我收到一条错误消息

固定效应模型矩阵排名不足,因此下降7列/系数.

从这个链接,固定效果模型是排名不足,我想我应该findLinearCombos在R包中使用caret.但是,当我尝试时findLinearCombos(data.df),它给了我错误信息

qr.default(object)中的错误:外部函数调用中的NA/NaN/Inf(arg 1)另外:警告消息:在qr.default(object)中:强制引入的NAs

我的数据没有任何NA - 可能导致这种情况的原因是什么?(对不起,如果答案很明显 - 我是R的新手).

我的所有数据都是除了我试图预测的数值之外的因素.这是我的数据的一小部分样本.

sex <- c("f", "m", "f", "m")
nasal <- c("TRUE", "TRUE", "FALSE", "FALSE")
vowelLabel <- c("a", "e", "i", "o")
speaker <- c("Jim", "John", "Ben", "Sally")
word_1 <- c("going", "back", "bag", "back")
type <- c("coronal", "coronal", "labial", "velar")
F2_difference <- c(345.6, -765.8, 800, 900.5)
data.df <- data.frame(sex, nasal, vowelLabel, speaker,
                      word_1, type, F2_difference
                      stringsAsFactors = TRUE)
Run Code Online (Sandbox Code Playgroud)

编辑:这是一些更多的代码,如果它有帮助.

formula <- F2_difference ~ …
Run Code Online (Sandbox Code Playgroud)

regression r linear-regression lme4 mixed-models

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

GridSearchCV - XGBoost - 提前停止

我试图在XGBoost上使用scikit-learn的GridSearchCV进行超级计量搜索.在网格搜索期间,我希望它能够提前停止,因为它可以大大减少搜索时间,并且(期望)在我的预测/回归任务上有更好的结果.我通过其Scikit-Learn API使用XGBoost.

    model = xgb.XGBRegressor()
    GridSearchCV(model, paramGrid, verbose=verbose ,fit_params={'early_stopping_rounds':42}, cv=TimeSeriesSplit(n_splits=cv).get_n_splits([trainX, trainY]), n_jobs=n_jobs, iid=iid).fit(trainX,trainY)
Run Code Online (Sandbox Code Playgroud)

我尝试使用fit_params提供早期停止参数,但之后它会抛出此错误,这主要是因为缺少早期停止所需的验证集:

/opt/anaconda/anaconda3/lib/python3.5/site-packages/xgboost/callback.py in callback(env=XGBoostCallbackEnv(model=<xgboost.core.Booster o...teration=4000, rank=0, evaluation_result_list=[]))
    187         else:
    188             assert env.cvfolds is not None
    189 
    190     def callback(env):
    191         """internal function"""
--> 192         score = env.evaluation_result_list[-1][1]
        score = undefined
        env.evaluation_result_list = []
    193         if len(state) == 0:
    194             init(env)
    195         best_score = state['best_score']
    196         best_iteration = state['best_iteration']
Run Code Online (Sandbox Code Playgroud)

如何使用early_stopping_rounds在XGBoost上应用GridSearch?

注意:模型在没有gridsearch的情况下工作,GridSearch的工作也没有'fit_params = {'early_stopping_rounds':42}

regression python-3.x scikit-learn xgboost data-science

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

如何在不计算标准误差的情况下打印R中的lm方差?

简单的问题真的!我正在运行大量的线性回归,y~x并希望获得每个回归的方差,而无需从summary.lm命令中给出的标准错误输出中手动计算.只是为了节省一点时间:-).执行此命令的任何想法?或者我是否必须自己编写一个函数来完成它?

m<-lm(Alopecurus.geniculatus~Year)
> summary(m)

Call:
lm(formula = Alopecurus.geniculatus ~ Year)

Residuals:
    Min      1Q  Median      3Q     Max 
-19.374  -8.667  -2.094   9.601  21.832 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 700.3921   302.2936   2.317   0.0275 *
Year         -0.2757     0.1530  -1.802   0.0817 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 11.45 on 30 degrees of freedom
  (15 observations deleted due to missingness)
Multiple R-squared: 0.09762,    Adjusted R-squared: 0.06754 …
Run Code Online (Sandbox Code Playgroud)

regression r variance

16
推荐指数
3
解决办法
3万
查看次数

将glmnet系数设为'最佳'lambda

我使用以下代码与glmnet:

> library(glmnet)
> fit = glmnet(as.matrix(mtcars[-1]), mtcars[,1])
> plot(fit, xvar='lambda')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,我想打印最好的Lambda系数,就像在岭回归中一样.我看到以下适合的结构:

> str(fit)
List of 12
 $ a0       : Named num [1:79] 20.1 21.6 23.2 24.7 26 ...
  ..- attr(*, "names")= chr [1:79] "s0" "s1" "s2" "s3" ...
 $ beta     :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
  .. ..@ i       : int [1:561] 0 4 0 4 0 4 0 4 0 4 ...
  .. ..@ p       : int [1:80] 0 0 2 4 6 8 10 12 …
Run Code Online (Sandbox Code Playgroud)

lambda regression r glmnet coefficients

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

从线性模型绘制交互效果的最佳方法

为了帮助填充R标签,我发布了一些我经常从学生那里收到的问题.多年来,我已经对这些问题提出了自己的答案,但也许还有更好的方法,我不知道.

问题:我只是跑了一个回归连续yx,但因子f(如levels(f)生产c("level1","level2"))

 thelm <- lm(y~x*f,data=thedata)
Run Code Online (Sandbox Code Playgroud)

现在我想绘制的预测值yx由定义的组分解f.我得到的所有情节都是丑陋的,显示的线条太多了.

我的回答:试试这个predict()功能.

##restrict prediction to the valid data 
##from the model by using thelm$model rather than thedata

 thedata$yhat <- predict(thelm,
      newdata=expand.grid(x=range(thelm$model$x),
                          f=levels(thelm$model$f)))

 plot(yhat~x,data=thethedata,subset=f=="level1")
 lines(yhat~x,data=thedata,subset=f=="level2")
Run Code Online (Sandbox Code Playgroud)

是否有其他想法(1)对于新手更容易理解和/或(2)从其他角度更好?

interaction regression r

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

Python中的加权逻辑回归

我正在寻找Python中逻辑回归(非正则化)的良好实现.我正在寻找一个可以为每个向量获得权重的包.任何人都可以建议一个良好的实施/包?谢谢!

python regression

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

曲线下的R逻辑回归区域

我正在使用此页面执行逻辑回归.我的代码如下.

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mylogit <- glm(admit ~ gre, data = mydata, family = "binomial")
summary(mylogit)
prob=predict(mylogit,type=c("response"))
mydata$prob=prob
Run Code Online (Sandbox Code Playgroud)

运行此代码后,mydata dataframe有两列 - 'admit'和'prob'.这两列不应该足以获得ROC曲线吗?

如何获得ROC曲线.

其次,通过嘲笑mydata,似乎模型正在预测可能性admit=1.

那是对的吗?

如何找出模型预测的特定事件?

谢谢

更新:似乎以下三个命令非常有用.它们提供了最大精度的截止点,然后有助于获得ROC曲线.

coords(g, "best")

mydata$prediction=ifelse(prob>=0.3126844,1,0)

confusionMatrix(mydata$prediction,mydata$admit
Run Code Online (Sandbox Code Playgroud)

regression r confusion-matrix roc

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

在Python中绘制回归线,置信区间和预测区间

我是回归游戏的新手,希望为满足特定条件的数据子集绘制功能上任意的非线性回归线(加上置信度和预测区间)(即平均重复值超过阈值;见下文).

data是为独立变量产生x跨越20点不同的值:x=(20-np.arange(20))**2rep_num=10重复为每个条件.数据显示出强烈的非线性x,如下所示:

import numpy as np

mu = [.40, .38, .39, .35, .37, .33, .34, .28, .11, .24,
      .03, .07, .01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]     

data = np.zeros((20, rep_num))
for i in range(13):
    data[i] = np.clip(np.random.normal(loc=mu[i], scale=0.1, size=rep_num), 0., 1.)
Run Code Online (Sandbox Code Playgroud)

我可以制作数据的散点图; 重复方式由红点显示:

import matplotlib.pyplot as plt

plt.scatter(np.log10(np.tile(x[:,None], rep_num)), data, 
            facecolors='none', edgecolors='k', alpha=0.25)
plt.plot(np.log10(x), data.mean(1), 'ro', alpha=0.8)
plt.plot(np.log10(x), np.repeat(0., 20), 'k--')
plt.xlim(-0.02, np.max(np.log10(x)) + 0.02)
plt.ylim(-0.01, 0.7)
Run Code Online (Sandbox Code Playgroud)

散点图

我的目标是仅为那些复制均值> …

python statistics regression matplotlib seaborn

15
推荐指数
1
解决办法
3002
查看次数

当损耗是均方误差(MSE)时,什么函数定义了Keras的准确度?

当损失函数是均方误差时,如何定义准确度?是绝对百分比误差吗?

我使用的模型具有输出激活线性和编译 loss= mean_squared_error

model.add(Dense(1))
model.add(Activation('linear'))  # number

model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样:

Epoch 99/100
1000/1000 [==============================] - 687s 687ms/step - loss: 0.0463 - acc: 0.9689 - val_loss: 3.7303 - val_acc: 0.3250
Epoch 100/100
1000/1000 [==============================] - 688s 688ms/step - loss: 0.0424 - acc: 0.9740 - val_loss: 3.4221 - val_acc: 0.3701
Run Code Online (Sandbox Code Playgroud)

那么例如val_acc:0.3250是什么意思?Mean_squared_error应该是标量而不是百分比 - 不应该吗?那么val_acc - 均方误差,或平均百分比误差或其他函数?

根据维基百科上的MSE定义:https://en.wikipedia.org/wiki/Mean_squared_error

MSE是估计量质量的度量 - 它总是非负的,接近零的值更好.

这是否意味着价值val_acc: 0.0优于val_acc: 0.325

编辑:我训练时精确度量输出的更多示例 - 随着我训练更多,精度会增加.虽然损失函数 - mse应该减少.是否为mse定义了准确度 - 它是如何在Keras中定义的?

lAllocator: After …
Run Code Online (Sandbox Code Playgroud)

regression machine-learning mean-square-error keras loss-function

15
推荐指数
2
解决办法
8738
查看次数