标签: logistic-regression

模型以glm运行但不是bigglm

我试图对320,000行数据(6个变量)进行逻辑回归.对数据样本(10000)的逐步模型选择给出了具有5个交互项的相当复杂的模型:Y~X1+ X2*X3+ X2*X4+ X2*X5+ X3*X6+ X4*X5.该glm()函数可以使该行模型具有10000行数据,但不适用于整个数据集(320,000).

使用bigglm由块从SQL Server导致错误读取数据块,而我不能让从结果的意义traceback():

fit <- bigglm(Y~X1+ X2*X3+ X2*X4+ X2*X5+ X3*X6+ X4*X5, 
       data=sqlQuery(myconn,train_dat),family=binomial(link="logit"), 
       chunksize=1000, maxit=10)

Error in coef.bigqr(object$qr) : 
NA/NaN/Inf in foreign function call (arg 3)

> traceback()
11: .Fortran("regcf", as.integer(p), as.integer(p * p/2), bigQR$D, 
    bigQR$rbar, bigQR$thetab, bigQR$tol, beta = numeric(p), nreq = as.integer(nvar), 
    ier = integer(1), DUP = FALSE)
10: coef.bigqr(object$qr)
9: coef(object$qr)
8: coef.biglm(iwlm)
7: coef(iwlm)
6: bigglm.function(formula = formula, data = datafun, ...)
5: bigglm(formula …
Run Code Online (Sandbox Code Playgroud)

r glm logistic-regression

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

逻辑回归/二项式的 glmnet 错误

尝试将 glmnet() 与 family="binomial" 拟合时出现此错误,用于逻辑回归拟合:

> data <- read.csv("DAFMM_HE16_matrix.csv", header=F)
> x <- as.data.frame(data[,1:3])
> x <- model.matrix(~.,data=x)
> y <- data[,4]

> train=sample(1:dim(x)[1],287,replace=FALSE)

> xTrain=x[train,]
> xTest=x[-train,]
> yTrain=y[train]
> yTest=y[-train]

> fit = glmnet(xTrain,yTrain,family="binomial")

Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs,  : 
one multinomial or binomial class has 1 or 0 observations; not allowed
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激 - 我已经在互联网上搜索过,但没有找到任何有帮助的东西

编辑:

以下是数据的样子:

> data
          V1       V2    V3      V4
1   34927.00   156.60 20321  -12.60
2   34800.00   156.60 19811 …
Run Code Online (Sandbox Code Playgroud)

r glmnet logistic-regression

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

Logistic回归+直方图与ggplot2

我有一些二进制数据,我想绘制逻辑回归线同一图中0和1的相对频率的直方图.

我在这里使用popbio软件包遇到了一个非常好的实现:shizuka lab的页面

这里有一个与图书馆(popbio)一起运行的MWE(礼貌的shizuka实验室)

bodysize=rnorm(20,30,2) # generates 20 values, with mean of 30 & s.d.=2
bodysize=sort(bodysize) # sorts these values in ascending order.
survive=c(0,0,0,0,0,1,0,1,0,0,1,1,0,1,1,1,0,1,1,1) # assign 'survival' to these 20 individuals non-randomly... most mortality occurs at smaller body size
dat=as.data.frame(cbind(bodysize,survive))

#and now the plot
library(popbio)
logi.hist.plot(bodysize,survive,boxp=FALSE,type="hist",col="gray")
Run Code Online (Sandbox Code Playgroud)

哪个产生

在此输入图像描述

现在,是否可以使用ggplot2执行此操作?

r histogram ggplot2 logistic-regression

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

测试 R 中的比例优势假设

我在 R 中使用响应变量,即学生在特定课程中收到的字母等级。响应是有序的,在我看来,在逻辑上似乎是成正比的。我的理解是,在使用 polr() 而不是 multinom() 之前,我需要测试它是否成比例。

对于我的一门数据课程,我“测试”了这样的比例:

M1 <- logLik(polrModel)  #'log Lik.' -1748.180691 (df=8)
M2 <- logLik(multinomModel)  #'log Lik.' -1734.775727 (df=20)
G <- -2*(M1$1 - M2$2)) #I used a block bracket here in the real code
# 26.8099283
pchisq(G,12,lower.tail = FALSE) #DF is #of predictors
#0.008228890393     #THIS P-VAL TELLS ME TO REJECT PROPORTIONAL
Run Code Online (Sandbox Code Playgroud)

对于测试比例优势假设的第二种方法,我还运行了两个 vglm 模型,一个与family=cumulative(parallel =TRUE)另一个与family=cumulative(parallel =FALSE). 然后我pchisq()用模型偏差的差异和剩余自由度的差异进行了测试。

这两种方式中的任何一种都值得尊敬吗?如果没有,我很乐意帮助您确定是否接受或拒绝比例几率假设的实际编码!

除了上述两个测试之外,我还分别针对每个预测变量绘制了我的累积概率图。我读到我希望这些线平行。我不明白的是,polr()您的输出是每个自变量(系数)的单个斜率,然后是特定的截距,具体取决于您使用的累积概率(例如:P(Y<=A), P( Y<=B) 等)。那么,如果每个方程的斜率系数都相同,那么这些线怎么可能不平行?

我在 Chris Bilder 的 YouTube 课程中学习了我的基础知识;他在第 …

regression r logistic-regression non-linear-regression

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

R 中生存包的 clogit 回归的稳健标准误差

我正在尝试从 R 中的生存包中获取 clogit 回归的可靠标准错误。在此过程中,我尝试使用该选项复制 Stata 命令报告的标准clogit错误vce(robust)

我的 R 公式是

conditional_logit <- clogit(dependent_variable ~ independent_variable + some_controls + strata(year), method= "exact", data = data_frame)
Run Code Online (Sandbox Code Playgroud)

将参数添加robust = TRUE到函数失败并出现错误:

Error in residuals.coxph(fit2, type = "dfbeta", weighted = TRUE) : 
score residuals are not available for the exact method
Run Code Online (Sandbox Code Playgroud)

任何通过三明治或 plm 包提取稳健标准错误(如此处、此处、此处和此处建议)的尝试都会失败出现相同错误。类似地,clogit 函数包含一个在使用该方法时停止尝试计算稳健标准误差的条件exact(第 44 行)。但是,conditional_logit$residuals 和conditional_logit$score 存在于clogit 回归对象中。

如果有人能帮助回答以下问题,我将不胜感激:

  • 计算“精确”条件逻辑回归的稳健标准误差通常是不可能或“错误”的吗?如果是这样,为什么 Stata 允许这样做?
  • 如果不是:我如何计算 R 中 …

r robust standard-error stata logistic-regression

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

spark mllib 中逻辑回归的原始预测是什么?

我已经使用 spark mllib 运行了二元逻辑回归。根据 spark mllib 的文档,RawPrediction 是置信值,我假设 lcl 和 ucl 的概率。我正在获取 RawPrediction 的 -ve 值。在什么情况下,原始预测值可以是 -ve

logistic-regression apache-spark apache-spark-mllib

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

numpy TypeError:输入类型和输入不支持 ufunc 'invert'

对于下面的代码:

def makePrediction(mytheta, myx):
    # -----------------------------------------------------------------
    pr = sigmoid(np.dot(myx, mytheta))

    pr[pr < 0.5] =0
    pr[pr >= 0.5] = 1

    return pr

    # -----------------------------------------------------------------

# Compute the percentage of samples I got correct:
pos_correct = float(np.sum(makePrediction(theta,pos)))
neg_correct = float(np.sum(np.invert(makePrediction(theta,neg))))
tot = len(pos)+len(neg)
prcnt_correct = float(pos_correct+neg_correct)/tot
print("Fraction of training samples correctly predicted: %f." % prcnt_correct)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-33-f0c91286cd02> in <module>()
     13 # Compute the percentage of samples I got correct:
     14 pos_correct = float(np.sum(makePrediction(theta,pos)))
---> 15 …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning matrix logistic-regression

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

因子的逻辑回归:eval(family$initialize) 中的错误:y 值必须为 0 &lt;= y &lt;= 1

无法修复以下逻辑回归的以下错误

training=(IBM$Serial<625)
data=IBM[!training,]
dim(data)
stock.direction <- data$Direction
training_model=glm(stock.direction~data$lag2,data=data,family=binomial)
###Error### ----  Error in eval(family$initialize) : y values must be 0 <= y <= 1
Run Code Online (Sandbox Code Playgroud)

我正在使用的数据中的几行

X   Date    Open    High    Low Close   Adj.Close   Volume  Return  lag1    lag2    lag3    Direction   Serial
1   28-11-2012  190.979996  192.039993  189.270004  191.979996  165.107727  3603600 0.004010855 0.004010855 -0.001198021    -0.006354834    Up  1
2   29-11-2012  192.75  192.899994  190.199997  191.529999  164.720734  4077900 0.00114865  0.00114865  -0.004020279    -0.009502386    Up  2
3   30-11-2012  191.75  192 189.5   190.070007  163.465073  4936400 0.003630178 0.003630178 -0.001894039    -0.005576956    Up  3 …
Run Code Online (Sandbox Code Playgroud)

r logistic-regression r-factor

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

Python scikit-learn 转 JSON

我有一个用 Python scikit-learn 构建的模型。我知道模型可以保存为 Pickle 或 Joblib 格式。是否有任何现有方法可以将作业保存为 JSON 格式?请参阅下面的模型构建代码以供参考:

import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import pickle
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names =['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Fit the model on 33%
model = LogisticRegression()
model.fit(X_train, Y_train)
filename = 'finalized_model.sav'
pickle.dump(model, open(filename, 'wb'))
Run Code Online (Sandbox Code Playgroud)

python json scikit-learn logistic-regression

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

有序逻辑回归:Intercept_返回[1]而不是[n]

我正在使用mordscikitlearn)库进行有序(即多项式)岭回归。

y 是包含1到19的整数值的单列。

X 由7个数值变量组成,这些数值变量存储在4个存储桶中,并被赋值为最终的28个二进制变量。

import pandas as pd
import numpy as np    
from sklearn import metrics
from sklearn.model_selection import train_test_split
import mord

in_X, out_X, in_y, out_y = train_test_split(X, y,
                                            stratify=y,
                                            test_size=0.3,
                                            random_state=42)

mul_lr = mord.OrdinalRidge(alpha=1.0,
                           fit_intercept=True,
                           normalize=False,
                           copy_X=True,
                           max_iter=None,
                           tol=0.001,
                           solver='auto').fit(in_X, in_y)
Run Code Online (Sandbox Code Playgroud)

mul_lr.coef_返回[28 x 1]数组,但mul_lr.intercept_返回单个值(而不是19)。

知道我缺少什么吗?

python python-3.x scikit-learn logistic-regression

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