我试图对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) 尝试将 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) 我有一些二进制数据,我想绘制逻辑回归线和同一图中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)
哪个产生
我在 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 课程中学习了我的基础知识;他在第 …
我正在尝试从 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 回归对象中。
如果有人能帮助回答以下问题,我将不胜感激:
我已经使用 spark mllib 运行了二元逻辑回归。根据 spark mllib 的文档,RawPrediction 是置信值,我假设 lcl 和 ucl 的概率。我正在获取 RawPrediction 的 -ve 值。在什么情况下,原始预测值可以是 -ve
对于下面的代码:
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) 无法修复以下逻辑回归的以下错误
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) 我有一个用 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) 我正在使用mord
(scikitlearn
)库进行有序(即多项式)岭回归。
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)。
知道我缺少什么吗?
r ×6
python ×3
scikit-learn ×2
apache-spark ×1
ggplot2 ×1
glm ×1
glmnet ×1
histogram ×1
json ×1
matrix ×1
numpy ×1
python-3.x ×1
r-factor ×1
regression ×1
robust ×1
stata ×1