# Least squares in julia

**URL:** <https://discourse.julialang.org/t/least-squares-in-julia/104279>\
**Category:** General Usage\
**Tags:** linearalgebra\
**Created:** [September 26, 2023, 7:02pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279 "2023-09-26T19:02:19Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [September 26, 2023, 7:02pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279/1 "2023-09-26T19:02:19Z")

</div>

Hello, good afternoon,

I’m facing issues to solve least squares in julia using qr decomposition.

```julia
numcourses = [13,4,12,3,14,13,12,9,11,7,13,11,9,2,5,7,10,0,9,7]
happiness = [70,25,54,21,80,68,84,62,57,40,60,64,45,38,51,52,58,21,75,70]

X = [ones(length(numcourses)) numcourses]
F = qr(X)

beta = inv(F.R) * (F.Q' * happiness)

```

The inv(F.R) is 2x2 matrix anf fails to multiply the result of F.Q \* happiness.

Same code in python works as expected and I had checked vector and matrices sizes. Hadamard and broadcast cant be used also

```python
beta = np.linalg.inv(R) @ (Q.T@happiness)

```

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [September 26, 2023, 7:03pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279/2 "2023-09-26T19:03:45Z")

</div>

Just do `X \ happiness` the correct thing using a qr factorization will be done for you automatically.

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [September 26, 2023, 7:06pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279/3 "2023-09-26T19:06:41Z")

</div>

yes, it works, but the focus is to use qr in exercise. Cant understand the python black magic here. Understood that a 2x2 matrix cant multiply a 20x1 column vector

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [September 26, 2023, 7:09pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279/4 "2023-09-26T19:09:15Z")

</div>

You might have to call `Matrix(F.Q)`, also, I’m not sure, but there might be a `full` keyword argument you could use to qr

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [September 26, 2023, 7:11pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279/5 "2023-09-26T19:11:35Z")

</div>

that worked but I dont understood why. May you please explain ?

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [September 26, 2023, 7:15pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279/6 "2023-09-26T19:15:58Z")

</div>

Before, Q was a 20x20 and after the cast, was 20x2.

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [September 26, 2023, 7:16pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279/7 "2023-09-26T19:16:57Z")

</div>

I think it’s described in the docstring for qr and the associated factorization type

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [September 26, 2023, 7:22pm UTC](https://discourse.julialang.org/t/least-squares-in-julia/104279/8 "2023-09-26T19:22:23Z")

</div>

I think I understood the docstrings, but it is not so clear. The docs mention the result of qr are store in compact form, and it makes sense to cast to a Matrix. Thank you.
