标签: linear-regression

使用MCMCglmm的R中的贝叶斯误差变量(总最小二乘)模型

我正在使用MCMCglmm包中的一些贝叶斯线性混合模型R.我的数据包括使用错误测量的预测变量.因此,我想建立一个考虑到这一点的模型.我的理解是,基本的混合效应模型MCMCglmm将仅对响应变量(如ols回归)中的误差最小化.换句话说,垂直误差将被最小化.我想最小化与回归线/平面/超平面正交的误差.

  1. 是否可以使用MCMCglmm或者我必须使用JAGS/STAN来进行变量误差(也就是总最小二乘)模型?
  2. 是否可以在同一模型中使用多个预测变量来实现这一点(我有一些模型有3个或4个预测变量,每个模型都有误差测量)?
  3. 如果可能,我该如何指定模型?

我在下面列出了一个数据集,其中一个随机变量height用错误来衡量,以说明基本设置MCMCglmm.

library(nlme)
library(MCMCglmm)

data(Orthodont)

set.seed(1234)

Orthodont$height <- c(rnorm(54, 170, 10), rnorm(54, 150, 10))

prior1 <- list(
    B = list(mu = rep(0, 3), V = diag(1e+08, 3)), 
    G = list(G1 = list(V = 1, nu = 1, alpha.mu = 0, alpha.V = 1000)), 
    R = list(V = 1, nu = 0.002)
)

model1 <- MCMCglmm(
    fixed = distance ~ height + Sex,   
    random …
Run Code Online (Sandbox Code Playgroud)

r bayesian linear-regression mcmc mixed-models

6
推荐指数
0
解决办法
432
查看次数

如何在张量流中实现多元线性随机梯度下降算法?

我从简单实现单变量线性梯度下降开始,但不知道将其扩展到多变量随机梯度下降算法?

单变量线性回归

import tensorflow as tf
import numpy as np

# create random data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.5

# Find values for W that compute y_data = W * x_data 
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
y = W * x_data

# Minimize the mean squared errors.
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

# Before starting, initialize the variables
init = tf.initialize_all_variables()

# Launch the graph.
sess = tf.Session()
sess.run(init)

# Fit …
Run Code Online (Sandbox Code Playgroud)

python machine-learning linear-regression tensorflow

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

Spark负载模型并继续培训

我正在使用ScalaSpark 2.0来训练一个使用LinearRegression的模型.

val lr = new LinearRegression()
  .setMaxIter(num_iter)
  .setRegParam(reg)
  .setStandardization(true)

val model = lr.fit(data)
Run Code Online (Sandbox Code Playgroud)

这工作正常,我得到了很好的结果.我保存了模型并将其加载到另一个类中以进行一些预测:

val model = LinearRegressionModel.load("models/LRModel")
val result = model.transform(data).select("prediction")
Run Code Online (Sandbox Code Playgroud)

现在我想继续用新数据训练模型,所以我保存了模型并加载它以继续训练.

保存:

model.save("models/LRModel")
lr.save("models/LR")
Run Code Online (Sandbox Code Playgroud)

加载:

val lr = LinearRegression.load("models/LR")
val model = LinearRegressionModel.load("models/LRModel")
Run Code Online (Sandbox Code Playgroud)

问题是,当我加载模型时,没有fit或没有train继续训练的功能.当我加载LinearRegression对象时,它似乎不保存权重,只保存算法的参数.我通过训练相同数量的相同迭代次数来测试它,结果完全相同,rootMeanSquaredError并且在这个学习点上肯定没有收敛.我也无法将模型加载到LinearRegression中,导致错误:

Exception in thread "main" java.lang.NoSuchMethodException: org.apache.spark.ml.regression.LinearRegressionModel.<init>(java.lang.String)
Run Code Online (Sandbox Code Playgroud)

所以问题是,如何让LinearRegression对象使用保存的LinearRegressionModel?

scala machine-learning linear-regression apache-spark

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

具有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
查看次数

python线性回归按日期预测

我想用简单的线性回归预测未来某个日期的值,但我不能因为日期格式.

这是我的数据框:

data_df = 
date          value
2016-01-15    1555
2016-01-16    1678
2016-01-17    1789
...  

y = np.asarray(data_df['value'])
X = data_df[['date']]
X_train, X_test, y_train, y_test = train_test_split             
(X,y,train_size=.7,random_state=42)

model = LinearRegression() #create linear regression object
model.fit(X_train, y_train) #train model on train data
model.score(X_train, y_train) #check score

print (‘Coefficient: \n’, model.coef_)
print (‘Intercept: \n’, model.intercept_) 
coefs = zip(model.coef_, X.columns)
model.__dict__
print "sl = %.1f + " % model.intercept_ + \
     " + ".join("%.1f %s" % coef for coef in coefs) #linear model
Run Code Online (Sandbox Code Playgroud)

我试图将日期转换为失败 …

python date linear-regression pandas

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

如何在R中使用公式来排除主效应但保留相互作用

我不想要主效应,因为它与更精细的因子固定效果共线,所以有这些是烦人的NA.

在这个例子中:

lm(y ~ x * z)
Run Code Online (Sandbox Code Playgroud)

我想要x(数字)和z(因素)的相互作用,但不是主要的效果z.

regression r linear-regression lm categorical-data

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

如何在线性回归中手动计算t统计量的p值

我对178尾自由度的双尾t检验进行了线性回归.该summary函数为我的两个t值提供了两个p值.

t value Pr(>|t|)
5.06    1.04e-06 ***
10.09    < 2e-16 ***
...
...
F-statistic: 101.8 on 1 and 178 DF, p-value: < 2.2e-16
Run Code Online (Sandbox Code Playgroud)

我想用这个公式手动计算t值的p值:

p = 1 - 2*F(|t|)

p_value_1 <- 1 - 2 * pt(abs(t_1), 178)
p_value_2 <- 1 - 2 * pt(abs(t_2), 178)
Run Code Online (Sandbox Code Playgroud)

我没有获得与模型摘要中相同的p值.因此,我想知道summary函数Pr(>|t|)与我的公式有何不同,因为我找不到定义Pr(>|t|).

你能帮助我吗?非常感谢!

statistics regression r linear-regression p-value

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

如何使用最新版本的Pandas进行OLS回归

我想OLS regression estimation在以下URL中运行数据集的滚动1000窗口以进行评估:

https://drive.google.com/open?id=0B2Iv8dfU4fTUa3dPYW5tejA0bzg

我尝试使用以下Python脚本与pandas版本0.20.2.

# /usr/bin/python -tt

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from statsmodels.formula.api import ols

df = pd.read_csv('estimated.csv', names=('x','y'))

model = pd.stats.ols.MovingOLS(y=df.Y, x=df[['y']], 
                               window_type='rolling', window=1000, intercept=True)
df['Y_hat'] = model.y_predict
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的Python脚本时,我收到此错误:AttributeError: module 'pandas.stats' has no attribute 'ols'.我发现这个错误的原因是因为它从Pandas版本中删除了,因为0.20.0我们可以从以下链接看到它.

https://github.com/pandas-dev/pandas/pull/11898

我们如何OLS Regression处理最新版本的熊猫?

python numpy linear-regression python-3.x pandas

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

具有系数约束的线性回归

我正在尝试执行线性回归,对于这样的模型:

Y = aX1 + bX2 + c
Run Code Online (Sandbox Code Playgroud)

所以, Y ~ X1 + X2

假设我有以下响应向量:

set.seed(1)
Y <- runif(100, -1.0, 1.0)
Run Code Online (Sandbox Code Playgroud)

以下预测变量矩阵:

X1 <- runif(100, 0.4, 1.0)
X2 <- sample(rep(0:1,each=50))
X <- cbind(X1, X2)
Run Code Online (Sandbox Code Playgroud)

我想对系数使用以下约束:

a + c >= 0  
c >= 0
Run Code Online (Sandbox Code Playgroud)

所以对b没有约束.

我知道glmc包可以用来应用约束,但是我无法确定如何将它应用于我的约束.我也知道可以使用contr.sum,例如,所有系数总和为0,但这不是我想要做的.solve.QP()似乎是另一种可能性,meq=0可以使用设置使所有系数> = 0(同样,这里不是我的目标).

注意:解决方案必须能够处理响应向量Y中的NA值,例如:

Y <- runif(100, -1.0, 1.0)
Y[c(2,5,17,56,37,56,34,78)] <- NA
Run Code Online (Sandbox Code Playgroud)

r linear-regression quadratic-programming

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

如何计算多项式线性回归中的误差?

我正在尝试计算我正在使用的训练数据的错误率.

我相信我错误地计算错误.公式如下:在此输入图像描述

y 计算如下:

在此输入图像描述

fitPoly(M)在线上的函数中计算这个49.我相信我的计算不正确y(x(n)),但我不知道还能做什么.


以下是最小,完整和可验证的示例.

import numpy as np
import matplotlib.pyplot as plt

dataTrain = [[2.362761180904257019e-01, -4.108125266714775847e+00],
[4.324296163702689988e-01,  -9.869308732049049127e+00],
[6.023323504115264404e-01,  -6.684279243433971729e+00],
[3.305079685397107614e-01,  -7.897042003779912278e+00],
[9.952423271981121200e-01,  3.710086310489402628e+00],
[8.308127402955634011e-02,  1.828266768673480147e+00],
[1.855495407116576345e-01,  1.039713135916495501e+00],
[7.088332047815845138e-01,  -9.783208407540947560e-01],
[9.475723071629885697e-01,  1.137746192425550085e+01],
[2.343475721257285427e-01,  3.098019704040922750e+00],
[9.338350584099475160e-02,  2.316408265530458976e+00],
[2.107903139601833287e-01,  -1.550451474833406396e+00],
[9.509966727520677843e-01,  9.295029459100994984e+00],
[7.164931165416982273e-01,  1.041025972594300075e+00],
[2.965557300301902011e-03,  -1.060607693351102121e+01]]

def strip(L, xt):
    ret = []
    for i in L:
        ret.append(i[xt])
    return ret

x1 = strip(dataTrain, 0)
y1 = strip(dataTrain, 1)

# HELP HERE

def getY(m, w, D): …
Run Code Online (Sandbox Code Playgroud)

python numpy polynomial-math linear-regression

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